From c3bff6e69e6ae9bb24103a82c9998bb58c9bc68a Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Tue, 14 Nov 2023 13:46:43 +1000 Subject: [PATCH 01/36] working example --- examples/http_parse_basic/Makefile | 16 + examples/http_parse_basic/example.adt | 805 +++++++++++++++++++++++ examples/http_parse_basic/example.bil | 375 +++++++++++ examples/http_parse_basic/example.bpl | 859 +++++++++++++++++++++++++ examples/http_parse_basic/example.c | 36 ++ examples/http_parse_basic/example.relf | 143 ++++ examples/http_parse_basic/example.spec | 56 ++ 7 files changed, 2290 insertions(+) create mode 100644 examples/http_parse_basic/Makefile create mode 100644 examples/http_parse_basic/example.adt create mode 100644 examples/http_parse_basic/example.bil create mode 100644 examples/http_parse_basic/example.bpl create mode 100644 examples/http_parse_basic/example.c create mode 100644 examples/http_parse_basic/example.relf create mode 100644 examples/http_parse_basic/example.spec diff --git a/examples/http_parse_basic/Makefile b/examples/http_parse_basic/Makefile new file mode 100644 index 000000000..382de07ba --- /dev/null +++ b/examples/http_parse_basic/Makefile @@ -0,0 +1,16 @@ + +result: example.bpl extraspec.bpl + boogie example.bpl extraspec.bpl /smoke | tee result + +a.out: example.c + aarch64-linux-gnu-gcc example.c + +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 + + diff --git a/examples/http_parse_basic/example.adt b/examples/http_parse_basic/example.adt new file mode 100644 index 000000000..cec42f65d --- /dev/null +++ b/examples/http_parse_basic/example.adt @@ -0,0 +1,805 @@ +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 2504 20 2504)\n(code-region 1984 520 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 244)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2504 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2504 20)\n(llvm:code-entry .text 1984 520)\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 2528 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2768)\n(llvm:elf-program-header 01 568 27)\n(llvm:elf-program-header 00 64 504)\n(llvm:elf-program-header-flags 08 false true false false)\n(llvm:elf-program-header-flags 07 false true true false)\n(llvm:elf-program-header-flags 06 false true false false)\n(llvm:elf-program-header-flags 05 false true false false)\n(llvm:elf-program-header-flags 04 false true true false)\n(llvm:elf-program-header-flags 03 true true true false)\n(llvm:elf-program-header-flags 02 true true false true)\n(llvm:elf-program-header-flags 01 false true false false)\n(llvm:elf-program-header-flags 00 false true false false)\n(llvm:elf-virtual-program-header 08 130504 568)\n(llvm:elf-virtual-program-header 07 0 0)\n(llvm:elf-virtual-program-header 06 2528 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2768)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68706)\n(llvm:section-entry .strtab 0 666 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2592 176 2592)\n(llvm:section-entry .eh_frame_hdr 2528 60 2528)\n(llvm:section-entry .rodata 2524 4 2524)\n(llvm:section-entry .fini 2504 20 2504)\n(llvm:section-entry .text 1984 520 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 244 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2504 0 2504 2504)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2768 0)\n(mapped 130504 683 64968)\n(named-region 0 2768 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 520 .text)\n(named-region 2504 20 .fini)\n(named-region 2524 4 .rodata)\n(named-region 2528 60 .eh_frame_hdr)\n(named-region 2592 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 666 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2504 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 520)\n(section 2504 20)\n(section 2524 4)\n(section 2528 60)\n(section 2592 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 666)\n(section 0 259)\n(segment 0 2768 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 244 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2504 2504)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xe0\x09\x00\x00\x00\x00\x00\x00\xe0\x09\x00\x00\x00\x00\x00\x00\xe0\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\x23\x7b\xc1\x3c\x50\xe7\x64\xfa\xd4\xa5\x37\x98\xa4\x71\x56\x77\xa9\x39\xe0\x85\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00"), +Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xe0\x09\x00\x00\x00\x00\x00\x00\xe0\x09\x00\x00\x00\x00\x00\x00\xe0\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\x23\x7b\xc1\x3c\x50\xe7\x64\xfa\xd4\xa5\x37\x98\xa4\x71\x56\x77\xa9\x39\xe0\x85\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x00\x01\x00\x90\x00\x80\x01\x91\x01\x00\x40\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x01\x08\x00\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x86\xff\xff\x97\x00\x04\x00\x91\x90\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), +Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x23\x7b\xc1\x3c\x50\xe7\x64\xfa\xd4\xa5\x37\x98\xa4\x71\x56\x77\xa9\x39\xe0\x85"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x9C8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9DC, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9E0, "\x01\x1b\x03\x3b\x3c\x00\x00\x00\x06\x00\x00\x00\xe0\xfd\xff\xff\x54\x00\x00\x00\x30\xfe\xff\xff\x68\x00\x00\x00\x60\xfe\xff\xff\x7c\x00\x00\x00\xa0\xfe\xff\xff\x90\x00\x00\x00\xf0\xfe\xff\xff\xb4\x00\x00\x00\xf4\xfe\xff\xff\xc8\x00\x00\x00"), +Section(".eh_frame", 0xA20, "\x10\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x04\x78\x1e\x01\x1b\x0c\x1f\x00\x10\x00\x00\x00\x18\x00\x00\x00\x84\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xc0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\xdc\xfd\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x08\xfe\xff\xff\x48\x00\x00\x00\x00\x41\x0e\x20\x9d\x04\x9e\x03\x42\x93\x02\x4e\xde\xdd\xd3\x0e\x00\x00\x00\x00\x10\x00\x00\x00\x78\x00\x00\x00\x34\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x24\xfe\xff\xff\xf4\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x79\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xc8\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x68\x65\x6c\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x00\x01\x00\x90\x00\x80\x01\x91\x01\x00\x40\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x01\x08\x00\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x86\xff\xff\x97\x00\x04\x00\x91\x90\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x7a\xff\xff\x97\x00\x04\x00\x91\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x70\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x8c\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x04\x00\x91\xe0\x17\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x64\xff\xff\x97\x00\x04\x00\x91\xe2\x03\x00\xaa\x01\x00\x80\x52\xe0\x03\x13\xaa\x6f\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x7b\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xACF), Attr("segment","02 0 2768")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x299), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x92F), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x1D), Attr("section","\".comment\"")), +Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), +Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), +Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), +Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), +Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), +Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), +Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), +Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), +Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x9C7), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x9C7), Attr("symbol-info","main 0x8D4 244")), +Annotation(Region(0x9C8,0x9DB), Attr("section","\".fini\"")), +Annotation(Region(0x9DC,0x9DF), Attr("section","\".rodata\"")), +Annotation(Region(0x9E0,0xA1B), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA20,0xACF), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x9C7), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x9C7), Attr("code-region","()")), +Annotation(Region(0x9C8,0x9DB), Attr("code-region","()"))]), +Program(Tid(2_270, "%000008de"), Attrs([]), + Subs([Sub(Tid(2_199, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_271, "%000008df"), + 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_390, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_778, "%000006f2"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_785, "%000006f9"), 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_791, "%000006ff"), 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_796, "%00000704"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_200, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_272, "%000008e0"), + 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(835, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(839, "%00000347"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(851, "%00000353"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(855, "%00000357"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(861, "%0000035d"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(869, "%00000365"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(874, "%0000036a"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(881, "%00000371"), Attrs([Attr("address","0x890"), +Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(887, "%00000377"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(885, "%00000375"))), +Goto(Tid(2_260, "%000008d4"), Attrs([]), Int(1,1), +Direct(Tid(1_335, "%00000537")))])), Blk(Tid(1_335, "%00000537"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_338, "%0000053a"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_345, "%00000541"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_351, "%00000547"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_349, "%00000545"))), Goto(Tid(2_261, "%000008d5"), Attrs([]), + Int(1,1), Direct(Tid(1_374, "%0000055e")))])), Blk(Tid(1_374, "%0000055e"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_377, "%00000561"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_392, "%00000570"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_199, "@__cxa_finalize")),Direct(Tid(1_349, "%00000545"))))])), +Blk(Tid(1_349, "%00000545"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_357, "%0000054d"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_213, "@deregister_tm_clones")),Direct(Tid(1_361, "%00000551"))))])), +Blk(Tid(1_361, "%00000551"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_372, "%0000055c"), Attrs([Attr("address","0x8B8"), +Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_262, "%000008d6"), Attrs([]), Int(1,1), +Direct(Tid(885, "%00000375")))])), Blk(Tid(885, "%00000375"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(895, "%0000037f"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(907, "%0000038b"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(911, "%0000038f"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(916, "%00000394"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_204, "@__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_273, "%000008e1"), + 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_274, "%000008e2"), 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_275, "%000008e3"), 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_276, "%000008e4"), 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_277, "%000008e5"), 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(668, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_756, "%000006dc"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_763, "%000006e3"), 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_769, "%000006e9"), 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_774, "%000006ee"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_205, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9C8")]), + "_fini", Args([Arg(Tid(2_278, "%000008e6"), + 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","0x9C8")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x9CC"), +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","0x9CC"), +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","0x9CC"), +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","0x9CC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9D0"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9D4"), +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","0x9D4"), +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","0x9D4"), +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","0x9D8"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_206, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_279, "%000008e7"), + 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_956, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_962, "%000007aa"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_968, "%000007b0"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_974, "%000007b6"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_978, "%000007ba"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#6",Imm(64))), Def(Tid(1_984, "%000007c0"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_989, "%000007c5"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_991, "%000007c7"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_211, "@call_weak_fn")),Direct(Tid(1_993, "%000007c9"))))])), +Blk(Tid(1_993, "%000007c9"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_998, "%000007ce"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(2_003, "%000007d3"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(2_007, "%000007d7"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_012, "%000007dc"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_207, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_280, "%000008e8"), + 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(605, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(610, "%00000262"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(615, "%00000267"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(621, "%0000026d"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(628, "%00000274"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x7D4"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(640, "%00000280"), + Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(645, "%00000285"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(652, "%0000028c"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(657, "%00000291"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(662, "%00000296"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(667, "%0000029b"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(670, "%0000029e"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_204, "@__libc_start_main")),Direct(Tid(672, "%000002a0"))))])), +Blk(Tid(672, "%000002a0"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(675, "%000002a3"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(678, "%000002a6"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_210, "@abort")),Direct(Tid(2_263, "%000008d7"))))])), +Blk(Tid(2_263, "%000008d7"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_264, "%000008d8"), Attrs([]), Int(1,1), +(Direct(Tid(2_211, "@call_weak_fn")),))]))])), Sub(Tid(2_210, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(676, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_866, "%0000074a"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_873, "%00000751"), 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_879, "%00000757"), 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_884, "%0000075c"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_211, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(2_281, "%000008e9"), + 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(680, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(683, "%000002ab"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(690, "%000002b2"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(696, "%000002b8"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(694, "%000002b6"))), Goto(Tid(2_265, "%000008d9"), Attrs([]), + Int(1,1), Direct(Tid(1_454, "%000005ae")))])), Blk(Tid(694, "%000002b6"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(702, "%000002be"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_454, "%000005ae"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_457, "%000005b1"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_455, "@__gmon_start__")))])), Blk(Tid(1_455, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_851, "%0000073b"), 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_857, "%00000741"), 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_862, "%00000746"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_213, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(2_282, "%000008ea"), + 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(708, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(711, "%000002c7"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(717, "%000002cd"), + Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), +Def(Tid(722, "%000002d2"), Attrs([Attr("address","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(728, "%000002d8"), Attrs([Attr("address","0x81C"), +Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(734, "%000002de"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(739, "%000002e3"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(745, "%000002e9"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(759, "%000002f7"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(765, "%000002fd"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(763, "%000002fb"))), Goto(Tid(2_266, "%000008da"), Attrs([]), + Int(1,1), Direct(Tid(1_424, "%00000590")))])), Blk(Tid(1_424, "%00000590"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_427, "%00000593"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_434, "%0000059a"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_439, "%0000059f"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(763, "%000002fb"))), Goto(Tid(2_267, "%000008db"), Attrs([]), + Int(1,1), Direct(Tid(1_443, "%000005a3")))])), Blk(Tid(763, "%000002fb"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(771, "%00000303"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_443, "%000005a3"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_447, "%000005a7"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_452, "%000005ac"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_216, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_283, "%000008eb"), + 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(922, "@frame_dummy"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(924, "%0000039c"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_223, "@register_tm_clones")),))]))])), Sub(Tid(2_217, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_284, "%000008ec"), + 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_298, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_910, "%00000776"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_917, "%0000077d"), 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_923, "%00000783"), 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_928, "%00000788"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_218, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_285, "%000008ed"), + 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_286, "%000008ee"), + 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_287, "%000008ef"), + 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(926, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(930, "%000003a2"), + Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(936, "%000003a8"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(942, "%000003ae"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#4",Imm(64))), Def(Tid(952, "%000003b8"), + Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(960, "%000003c0"), + Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(967, "%000003c7"), Attrs([Attr("address","0x8E0"), +Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(974, "%000003ce"), Attrs([Attr("address","0x8E4"), +Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x8E8"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(985, "%000003d9"), Attrs([Attr("address","0x8EC"), +Attr("insn","add x0, x0, #0x60")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(96,64))), Def(Tid(992, "%000003e0"), + Attrs([Attr("address","0x8F0"), Attr("insn","ldrb w1, [x0]")]), + Var("R1",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),8))), +Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x8F4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8F8"), +Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_011, "%000003f3"), + Attrs([Attr("address","0x8FC"), Attr("insn","strb w1, [x0, #0x2]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(2,64)),Extract(7,0,Var("R1",Imm(64))),LittleEndian(),8)), +Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x900"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x904"), +Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_027, "%00000403"), + Attrs([Attr("address","0x908"), Attr("insn","bl #-0x1e8")]), + Var("R30",Imm(64)), Int(2316,64))]), Jmps([Call(Tid(1_030, "%00000406"), + Attrs([Attr("address","0x908"), Attr("insn","bl #-0x1e8")]), Int(1,1), +(Direct(Tid(2_226, "@strlen")),Direct(Tid(1_032, "%00000408"))))])), +Blk(Tid(1_032, "%00000408"), Attrs([Attr("address","0x90C")]), Phis([]), +Defs([Def(Tid(1_036, "%0000040c"), Attrs([Attr("address","0x90C"), +Attr("insn","add x0, x0, #0x1")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_041, "%00000411"), + Attrs([Attr("address","0x910"), Attr("insn","bl #-0x1c0")]), + Var("R30",Imm(64)), Int(2324,64))]), Jmps([Call(Tid(1_044, "%00000414"), + Attrs([Attr("address","0x910"), Attr("insn","bl #-0x1c0")]), Int(1,1), +(Direct(Tid(2_219, "@malloc")),Direct(Tid(1_046, "%00000416"))))])), +Blk(Tid(1_046, "%00000416"), Attrs([Attr("address","0x914")]), Phis([]), +Defs([Def(Tid(1_050, "%0000041a"), Attrs([Attr("address","0x914"), +Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x918"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x91C"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_069, "%0000042d"), + Attrs([Attr("address","0x920"), Attr("insn","str x1, [x0]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), +Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x924"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x928"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_087, "%0000043f"), + Attrs([Attr("address","0x92C"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_092, "%00000444"), Attrs([Attr("address","0x930"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x934"), +Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_103, "%0000044f"), + Attrs([Attr("address","0x938"), Attr("insn","bl #-0x218")]), + Var("R30",Imm(64)), Int(2364,64))]), Jmps([Call(Tid(1_105, "%00000451"), + Attrs([Attr("address","0x938"), Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_226, "@strlen")),Direct(Tid(1_107, "%00000453"))))])), +Blk(Tid(1_107, "%00000453"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x93C"), +Attr("insn","add x0, x0, #0x1")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_117, "%0000045d"), + Attrs([Attr("address","0x940"), Attr("insn","mov x2, x0")]), + Var("R2",Imm(64)), Var("R0",Imm(64))), Def(Tid(1_122, "%00000462"), + Attrs([Attr("address","0x944"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(1_128, "%00000468"), + Attrs([Attr("address","0x948"), Attr("insn","add x1, x0, #0x68")]), + Var("R1",Imm(64)), PLUS(Var("R0",Imm(64)),Int(104,64))), +Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x94C"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_139, "%00000473"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x240")]), Var("R30",Imm(64)), Int(2388,64))]), +Jmps([Call(Tid(1_142, "%00000476"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x240")]), Int(1,1), +(Direct(Tid(2_220, "@memcpy")),Direct(Tid(1_144, "%00000478"))))])), +Blk(Tid(1_144, "%00000478"), Attrs([Attr("address","0x954")]), Phis([]), +Defs([Def(Tid(1_147, "%0000047b"), Attrs([Attr("address","0x954"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x958"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_160, "%00000488"), + Attrs([Attr("address","0x95C"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2404,64))]), +Jmps([Call(Tid(1_168, "%00000490"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x1d0")]), Int(1,1), +(Direct(Tid(2_222, "@puts")),Direct(Tid(1_170, "%00000492"))))])), +Blk(Tid(1_170, "%00000492"), Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x964"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x968"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_186, "%000004a2"), + Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_192, "%000004a8"), Attrs([Attr("address","0x970"), +Attr("insn","add x0, x0, #0x1")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_200, "%000004b0"), + Attrs([Attr("address","0x974"), Attr("insn","str x0, [sp, #0x28]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x978"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x97C"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_218, "%000004c2"), + Attrs([Attr("address","0x980"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x984"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_229, "%000004cd"), Attrs([Attr("address","0x988"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_236, "%000004d4"), + Attrs([Attr("address","0x98C"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x990"), +Attr("insn","bl #-0x270")]), Var("R30",Imm(64)), Int(2452,64))]), +Jmps([Call(Tid(1_243, "%000004db"), Attrs([Attr("address","0x990"), +Attr("insn","bl #-0x270")]), Int(1,1), +(Direct(Tid(2_226, "@strlen")),Direct(Tid(1_245, "%000004dd"))))])), +Blk(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x994")]), Phis([]), +Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x994"), +Attr("insn","add x0, x0, #0x1")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_255, "%000004e7"), + Attrs([Attr("address","0x998"), Attr("insn","mov x2, x0")]), + Var("R2",Imm(64)), Var("R0",Imm(64))), Def(Tid(1_260, "%000004ec"), + Attrs([Attr("address","0x99C"), Attr("insn","mov w1, #0x0")]), + Var("R1",Imm(64)), Int(0,64)), Def(Tid(1_266, "%000004f2"), + Attrs([Attr("address","0x9A0"), Attr("insn","mov x0, x19")]), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_271, "%000004f7"), + Attrs([Attr("address","0x9A4"), Attr("insn","bl #-0x244")]), + Var("R30",Imm(64)), Int(2472,64))]), Jmps([Call(Tid(1_274, "%000004fa"), + Attrs([Attr("address","0x9A4"), Attr("insn","bl #-0x244")]), Int(1,1), +(Direct(Tid(2_221, "@memset")),Direct(Tid(1_276, "%000004fc"))))])), +Blk(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x9A8")]), Phis([]), +Defs([Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x9A8"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x9AC"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_292, "%0000050c"), + Attrs([Attr("address","0x9B0"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_297, "%00000511"), Attrs([Attr("address","0x9B4"), +Attr("insn","bl #-0x214")]), Var("R30",Imm(64)), Int(2488,64))]), +Jmps([Call(Tid(1_300, "%00000514"), Attrs([Attr("address","0x9B4"), +Attr("insn","bl #-0x214")]), Int(1,1), +(Direct(Tid(2_217, "@free")),Direct(Tid(1_302, "%00000516"))))])), +Blk(Tid(1_302, "%00000516"), Attrs([Attr("address","0x9B8")]), Phis([]), +Defs([Def(Tid(1_305, "%00000519"), Attrs([Attr("address","0x9B8"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_312, "%00000520"), Attrs([Attr("address","0x9BC"), +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_319, "%00000527"), Attrs([Attr("address","0x9C0"), +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_324, "%0000052c"), Attrs([Attr("address","0x9C0"), +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_328, "%00000530"), Attrs([Attr("address","0x9C0"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_333, "%00000535"), + Attrs([Attr("address","0x9C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_219, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_288, "%000008f0"), 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_289, "%000008f1"), + Attrs([Attr("warn-unused","()"), Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_042, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_800, "%00000708"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_807, "%0000070f"), 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_813, "%00000715"), 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_818, "%0000071a"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_220, "@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_290, "%000008f2"), 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_291, "%000008f3"), + 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_292, "%000008f4"), 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_293, "%000008f5"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_140, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_712, "%000006b0"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_719, "%000006b7"), 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_725, "%000006bd"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_730, "%000006c2"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_221, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_294, "%000008f6"), 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_295, "%000008f7"), + 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_296, "%000008f8"), + 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_297, "%000008f9"), 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_272, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_822, "%0000071e"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_829, "%00000725"), 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_835, "%0000072b"), 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_840, "%00000730"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_222, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_298, "%000008fa"), 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_299, "%000008fb"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_166, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_895, "%00000767"), 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_901, "%0000076d"), 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_906, "%00000772"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_223, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(2_300, "%000008fc"), + 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(773, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(776, "%00000308"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(782, "%0000030e"), Attrs([Attr("address","0x844"), +Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(787, "%00000313"), + Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(793, "%00000319"), + Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), +Def(Tid(800, "%00000320"), Attrs([Attr("address","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(806, "%00000326"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(819, "%00000333"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(825, "%00000339"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(823, "%00000337"))), Goto(Tid(2_268, "%000008dc"), Attrs([]), + Int(1,1), Direct(Tid(1_394, "%00000572")))])), Blk(Tid(1_394, "%00000572"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_397, "%00000575"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_404, "%0000057c"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_409, "%00000581"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(823, "%00000337"))), Goto(Tid(2_269, "%000008dd"), Attrs([]), + Int(1,1), Direct(Tid(1_413, "%00000585")))])), Blk(Tid(823, "%00000337"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(831, "%0000033f"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_413, "%00000585"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_417, "%00000589"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_422, "%0000058e"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_226, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_301, "%000008fd"), 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_302, "%000008fe"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_028, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_734, "%000006c6"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_741, "%000006cd"), 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_747, "%000006d3"), 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_752, "%000006d8"), + Attrs([Attr("address","0x72C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))]))]))) \ No newline at end of file diff --git a/examples/http_parse_basic/example.bil b/examples/http_parse_basic/example.bil new file mode 100644 index 000000000..3cf28c58e --- /dev/null +++ b/examples/http_parse_basic/example.bil @@ -0,0 +1,375 @@ +000008de: program +00000897: sub __cxa_finalize(__cxa_finalize_result) +000008df: __cxa_finalize_result :: out u32 = low:32[R0] + +0000056e: +000006f2: R16 := 0x20000 +000006f9: R17 := mem[R16 + 0x18, el]:u64 +000006ff: R16 := R16 + 0x18 +00000704: call R17 with noreturn + +00000898: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008e0: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000343: +00000347: #3 := R31 - 0x20 +0000034d: mem := mem with [#3, el]:u64 <- R29 +00000353: mem := mem with [#3 + 8, el]:u64 <- R30 +00000357: R31 := #3 +0000035d: R29 := R31 +00000365: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000036a: R19 := 0x20000 +00000371: R0 := pad:64[mem[R19 + 0x78]] +00000377: when 0:0[R0] goto %00000375 +000008d4: goto %00000537 + +00000537: +0000053a: R0 := 0x1F000 +00000541: R0 := mem[R0 + 0xFC8, el]:u64 +00000547: when R0 = 0 goto %00000545 +000008d5: goto %0000055e + +0000055e: +00000561: R0 := 0x20000 +00000568: R0 := mem[R0 + 0x58, el]:u64 +0000056d: R30 := 0x8B0 +00000570: call @__cxa_finalize with return %00000545 + +00000545: +0000054d: R30 := 0x8B4 +0000054f: call @deregister_tm_clones with return %00000551 + +00000551: +00000554: R0 := 1 +0000055c: mem := mem with [R19 + 0x78] <- 7:0[R0] +000008d6: goto %00000375 + +00000375: +0000037f: R19 := mem[R31 + 0x10, el]:u64 +00000386: R29 := mem[R31, el]:u64 +0000038b: R30 := mem[R31 + 8, el]:u64 +0000038f: R31 := R31 + 0x20 +00000394: call R30 with noreturn + +0000089c: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008e1: __libc_start_main_main :: in u64 = R0 +000008e2: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008e3: __libc_start_main_arg3 :: in out u64 = R2 +000008e4: __libc_start_main_auxv :: in out u64 = R3 +000008e5: __libc_start_main_result :: out u32 = low:32[R0] + +0000029c: +000006dc: R16 := 0x20000 +000006e3: R17 := mem[R16 + 0x10, el]:u64 +000006e9: R16 := R16 + 0x10 +000006ee: call R17 with noreturn + +0000089d: sub _fini(_fini_result) +000008e6: _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 + +0000089e: sub _init(_init_result) +000008e7: _init_result :: out u32 = low:32[R0] + +000007a4: +000007aa: #6 := R31 - 0x10 +000007b0: mem := mem with [#6, el]:u64 <- R29 +000007b6: mem := mem with [#6 + 8, el]:u64 <- R30 +000007ba: R31 := #6 +000007c0: R29 := R31 +000007c5: R30 := 0x6E8 +000007c7: call @call_weak_fn with return %000007c9 + +000007c9: +000007ce: R29 := mem[R31, el]:u64 +000007d3: R30 := mem[R31 + 8, el]:u64 +000007d7: R31 := R31 + 0x10 +000007dc: call R30 with noreturn + +0000089f: sub _start(_start_result) +000008e8: _start_result :: out u32 = low:32[R0] + +0000025d: +00000262: R29 := 0 +00000267: R30 := 0 +0000026d: R5 := R0 +00000274: R1 := mem[R31, el]:u64 +0000027a: R2 := R31 + 8 +00000280: R6 := R31 +00000285: R0 := 0x1F000 +0000028c: R0 := mem[R0 + 0xFD8, el]:u64 +00000291: R3 := 0 +00000296: R4 := 0 +0000029b: R30 := 0x7F0 +0000029e: call @__libc_start_main with return %000002a0 + +000002a0: +000002a3: R30 := 0x7F4 +000002a6: call @abort with return %000008d7 + +000008d7: +000008d8: call @call_weak_fn with noreturn + +000008a2: sub abort() + + +000002a4: +0000074a: R16 := 0x20000 +00000751: R17 := mem[R16 + 0x38, el]:u64 +00000757: R16 := R16 + 0x38 +0000075c: call R17 with noreturn + +000008a3: sub call_weak_fn(call_weak_fn_result) +000008e9: call_weak_fn_result :: out u32 = low:32[R0] + +000002a8: +000002ab: R0 := 0x1F000 +000002b2: R0 := mem[R0 + 0xFD0, el]:u64 +000002b8: when R0 = 0 goto %000002b6 +000008d9: goto %000005ae + +000002b6: +000002be: call R30 with noreturn + +000005ae: +000005b1: goto @__gmon_start__ + +000005af: +00000734: R16 := 0x20000 +0000073b: R17 := mem[R16 + 0x30, el]:u64 +00000741: R16 := R16 + 0x30 +00000746: call R17 with noreturn + +000008a5: sub deregister_tm_clones(deregister_tm_clones_result) +000008ea: deregister_tm_clones_result :: out u32 = low:32[R0] + +000002c4: +000002c7: R0 := 0x20000 +000002cd: R0 := R0 + 0x78 +000002d2: R1 := 0x20000 +000002d8: R1 := R1 + 0x78 +000002de: #1 := ~R0 +000002e3: #2 := R1 + ~R0 +000002e9: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002ef: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002f3: ZF := #2 + 1 = 0 +000002f7: NF := 63:63[#2 + 1] +000002fd: when ZF goto %000002fb +000008da: goto %00000590 + +00000590: +00000593: R1 := 0x1F000 +0000059a: R1 := mem[R1 + 0xFC0, el]:u64 +0000059f: when R1 = 0 goto %000002fb +000008db: goto %000005a3 + +000002fb: +00000303: call R30 with noreturn + +000005a3: +000005a7: R16 := R1 +000005ac: call R16 with noreturn + +000008a8: sub frame_dummy(frame_dummy_result) +000008eb: frame_dummy_result :: out u32 = low:32[R0] + +0000039a: +0000039c: call @register_tm_clones with noreturn + +000008a9: sub free(free_ptr) +000008ec: free_ptr :: in out u64 = R0 + +00000512: +00000776: R16 := 0x20000 +0000077d: R17 := mem[R16 + 0x48, el]:u64 +00000783: R16 := R16 + 0x48 +00000788: call R17 with noreturn + +000008aa: sub main(main_argc, main_argv, main_result) +000008ed: main_argc :: in u32 = low:32[R0] +000008ee: main_argv :: in out u64 = R1 +000008ef: main_result :: out u32 = low:32[R0] + +0000039e: +000003a2: #4 := R31 - 0x30 +000003a8: mem := mem with [#4, el]:u64 <- R29 +000003ae: mem := mem with [#4 + 8, el]:u64 <- R30 +000003b2: R31 := #4 +000003b8: R29 := R31 +000003c0: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003c7: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003ce: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003d3: R0 := 0x20000 +000003d9: R0 := R0 + 0x60 +000003e0: R1 := pad:64[mem[R0]] +000003e5: R0 := 0x20000 +000003eb: R0 := R0 + 0x68 +000003f3: mem := mem with [R0 + 2] <- 7:0[R1] +000003f8: R0 := 0x20000 +000003fe: R0 := R0 + 0x68 +00000403: R30 := 0x90C +00000406: call @strlen with return %00000408 + +00000408: +0000040c: R0 := R0 + 1 +00000411: R30 := 0x914 +00000414: call @malloc with return %00000416 + +00000416: +0000041a: R1 := R0 +0000041f: R0 := 0x20000 +00000425: R0 := R0 + 0x80 +0000042d: mem := mem with [R0, el]:u64 <- R1 +00000432: R0 := 0x20000 +00000438: R0 := R0 + 0x80 +0000043f: R19 := mem[R0, el]:u64 +00000444: R0 := 0x20000 +0000044a: R0 := R0 + 0x68 +0000044f: R30 := 0x93C +00000451: call @strlen with return %00000453 + +00000453: +00000457: R0 := R0 + 1 +0000045d: R2 := R0 +00000462: R0 := 0x20000 +00000468: R1 := R0 + 0x68 +0000046e: R0 := R19 +00000473: R30 := 0x954 +00000476: call @memcpy with return %00000478 + +00000478: +0000047b: R0 := 0x20000 +00000481: R0 := R0 + 0x80 +00000488: R0 := mem[R0, el]:u64 +0000048d: R30 := 0x964 +00000490: call @puts with return %00000492 + +00000492: +00000495: R0 := 0x20000 +0000049b: R0 := R0 + 0x80 +000004a2: R0 := mem[R0, el]:u64 +000004a8: R0 := R0 + 1 +000004b0: mem := mem with [R31 + 0x28, el]:u64 <- R0 +000004b5: R0 := 0x20000 +000004bb: R0 := R0 + 0x80 +000004c2: R19 := mem[R0, el]:u64 +000004c7: R0 := 0x20000 +000004cd: R0 := R0 + 0x80 +000004d4: R0 := mem[R0, el]:u64 +000004d9: R30 := 0x994 +000004db: call @strlen with return %000004dd + +000004dd: +000004e1: R0 := R0 + 1 +000004e7: R2 := R0 +000004ec: R1 := 0 +000004f2: R0 := R19 +000004f7: R30 := 0x9A8 +000004fa: call @memset with return %000004fc + +000004fc: +000004ff: R0 := 0x20000 +00000505: R0 := R0 + 0x80 +0000050c: R0 := mem[R0, el]:u64 +00000511: R30 := 0x9B8 +00000514: call @free with return %00000516 + +00000516: +00000519: R0 := 0 +00000520: R19 := mem[R31 + 0x10, el]:u64 +00000527: R29 := mem[R31, el]:u64 +0000052c: R30 := mem[R31 + 8, el]:u64 +00000530: R31 := R31 + 0x30 +00000535: call R30 with noreturn + +000008ab: sub malloc(malloc_size, malloc_result) +000008f0: malloc_size :: in u64 = R0 +000008f1: malloc_result :: out u64 = R0 + +00000412: +00000708: R16 := 0x20000 +0000070f: R17 := mem[R16 + 0x20, el]:u64 +00000715: R16 := R16 + 0x20 +0000071a: call R17 with noreturn + +000008ac: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008f2: memcpy_dst :: in out u64 = R0 +000008f3: memcpy_src :: in out u64 = R1 +000008f4: memcpy_n :: in u64 = R2 +000008f5: memcpy_result :: out u64 = R0 + +00000474: +000006b0: R16 := 0x20000 +000006b7: R17 := mem[R16, el]:u64 +000006bd: R16 := R16 +000006c2: call R17 with noreturn + +000008ad: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008f6: memset_buf :: in out u64 = R0 +000008f7: memset_c :: in u32 = low:32[R1] +000008f8: memset_n :: in u64 = R2 +000008f9: memset_result :: out u64 = R0 + +000004f8: +0000071e: R16 := 0x20000 +00000725: R17 := mem[R16 + 0x28, el]:u64 +0000072b: R16 := R16 + 0x28 +00000730: call R17 with noreturn + +000008ae: sub puts(puts_s, puts_result) +000008fa: puts_s :: in u64 = R0 +000008fb: puts_result :: out u32 = low:32[R0] + +0000048e: +00000760: R16 := 0x20000 +00000767: R17 := mem[R16 + 0x40, el]:u64 +0000076d: R16 := R16 + 0x40 +00000772: call R17 with noreturn + +000008af: sub register_tm_clones(register_tm_clones_result) +000008fc: register_tm_clones_result :: out u32 = low:32[R0] + +00000305: +00000308: R0 := 0x20000 +0000030e: R0 := R0 + 0x78 +00000313: R1 := 0x20000 +00000319: R1 := R1 + 0x78 +00000320: R1 := R1 + ~R0 + 1 +00000326: R2 := 0.63:63[R1] +0000032d: R1 := R2 + (R1 ~>> 3) +00000333: R1 := extend:64[63:1[R1]] +00000339: when R1 = 0 goto %00000337 +000008dc: goto %00000572 + +00000572: +00000575: R2 := 0x1F000 +0000057c: R2 := mem[R2 + 0xFE0, el]:u64 +00000581: when R2 = 0 goto %00000337 +000008dd: goto %00000585 + +00000337: +0000033f: call R30 with noreturn + +00000585: +00000589: R16 := R2 +0000058e: call R16 with noreturn + +000008b2: sub strlen(strlen_s, strlen_result) +000008fd: strlen_s :: in u64 = R0 +000008fe: strlen_result :: out u64 = R0 + +00000404: +000006c6: R16 := 0x20000 +000006cd: R17 := mem[R16 + 8, el]:u64 +000006d3: R16 := R16 + 8 +000006d8: call R17 with noreturn diff --git a/examples/http_parse_basic/example.bpl b/examples/http_parse_basic/example.bpl new file mode 100644 index 000000000..3d3237ba8 --- /dev/null +++ b/examples/http_parse_basic/example.bpl @@ -0,0 +1,859 @@ +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_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} 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 == 131200bv64); +const {:extern} $password_addr: bv64; +axiom ($password_addr == 131168bv64); +const {:extern} $stext_addr: bv64; +axiom ($stext_addr == 131176bv64); +function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { + false +} + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) returns (bool); +function {:inline} byte_extract64_64(value: bv64, offset: bv64) returns (bv8) { + bvlshr64(value, bvmul64(offset, 8bv64))[8:0] +} + +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) { + (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then value else gammaMap[i]))) +} + +function {:extern} gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + gammaMap[index := value] +} + +function {:inline} in_bounds64_le(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)))) +} + +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) { + (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then byte_extract64_64(value, bvsub64(i, index)) else memory[i]))) +} + +function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { + memory[index := value] +} + +function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); +procedure {:extern} rely(); + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); + free ensures (memory_load8_le(mem, 2524bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2527bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2524bv64) == 1bv8); + free requires (memory_load8_le(mem, 2525bv64) == 0bv8); + free requires (memory_load8_le(mem, 2526bv64) == 2bv8); + free requires (memory_load8_le(mem, 2527bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2524bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2527bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, R29, R30, R31, malloc_base, malloc_count, malloc_end, 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) == 0bv8); + free requires (memory_load8_le(mem, 131170bv64) == 0bv8); + free requires (memory_load8_le(mem, 131171bv64) == 0bv8); + 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) == 104bv8); + free requires (memory_load8_le(mem, 131177bv64) == 101bv8); + free requires (memory_load8_le(mem, 131178bv64) == 108bv8); + free requires (memory_load8_le(mem, 131179bv64) == 0bv8); + free requires (memory_load8_le(mem, 131180bv64) == 0bv8); + free requires (memory_load8_le(mem, 131181bv64) == 0bv8); + free requires (memory_load8_le(mem, 131182bv64) == 0bv8); + free requires (memory_load8_le(mem, 131183bv64) == 0bv8); + free requires (memory_load8_le(mem, 131184bv64) == 0bv8); + free requires (memory_load8_le(mem, 131185bv64) == 0bv8); + free requires (memory_load8_le(mem, 131186bv64) == 0bv8); + free requires (memory_load8_le(mem, 2524bv64) == 1bv8); + free requires (memory_load8_le(mem, 2525bv64) == 0bv8); + free requires (memory_load8_le(mem, 2526bv64) == 2bv8); + free requires (memory_load8_le(mem, 2527bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R19 == old(R19)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2524bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2527bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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 Gamma_#4: 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 "%000003a8"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); + assume {:captureState "%000003ae"} true; + R31, Gamma_R31 := #4, Gamma_#4; + R29, Gamma_R29 := R31, Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); + assume {:captureState "%000003c0"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); + assume {:captureState "%000003c7"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); + assume {:captureState "%000003ce"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 96bv64), Gamma_R0; + call rely(); + R1, Gamma_R1 := zero_extend56_8(memory_load8_le(mem, R0)), (gamma_load8(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; + call rely(); + assert (L(mem, bvadd64(R0, 2bv64)) ==> Gamma_R1); + mem, Gamma_mem := memory_store8_le(mem, bvadd64(R0, 2bv64), R1[8:0]), gamma_store8(Gamma_mem, bvadd64(R0, 2bv64), Gamma_R1); + assume {:captureState "%000003f3"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; + R30, Gamma_R30 := 2316bv64, true; + call strlen(); + goto l00000408; + l00000408: + assume {:captureState "l00000408"} true; + R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + R30, Gamma_R30 := 2324bv64, true; + call malloc(); + goto l00000416; + l00000416: + assume {:captureState "l00000416"} true; + R1, Gamma_R1 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + assert (L(mem, R0) ==> Gamma_R1); + mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); + assume {:captureState "%0000042d"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; + R30, Gamma_R30 := 2364bv64, true; + call strlen(); + goto l00000453; + l00000453: + assume {:captureState "l00000453"} true; + R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2388bv64, true; + call memcpy(); + goto l00000478; + l00000478: + assume {:captureState "l00000478"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2404bv64, true; + call puts(); + goto l00000492; + l00000492: + assume {:captureState "l00000492"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); + assume {:captureState "%000004b0"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2452bv64, true; + call strlen(); + goto l000004dd; + l000004dd: + assume {:captureState "l000004dd"} true; + R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + R2, Gamma_R2 := R0, Gamma_R0; + R1, Gamma_R1 := 0bv64, true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2472bv64, true; + call memset(); + goto l000004fc; + l000004fc: + assume {:captureState "l000004fc"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2488bv64, true; + call #free(); + goto l00000516; + l00000516: + assume {:captureState "l00000516"} true; + R0, Gamma_R0 := 0bv64, true; + R19, Gamma_R19 := 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 Gamma_R0 == true; + free requires (memory_load8_le(mem, 2524bv64) == 1bv8); + free requires (memory_load8_le(mem, 2525bv64) == 0bv8); + free requires (memory_load8_le(mem, 2526bv64) == 2bv8); + free requires (memory_load8_le(mem, 2527bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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 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); + free ensures (memory_load8_le(mem, 2524bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2527bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2524bv64) == 1bv8); + free requires (memory_load8_le(mem, 2525bv64) == 0bv8); + free requires (memory_load8_le(mem, 2526bv64) == 2bv8); + free requires (memory_load8_le(mem, 2527bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2524bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2527bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2524bv64) == 1bv8); + free requires (memory_load8_le(mem, 2525bv64) == 0bv8); + free requires (memory_load8_le(mem, 2526bv64) == 2bv8); + free requires (memory_load8_le(mem, 2527bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2524bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2527bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2524bv64) == 1bv8); + free requires (memory_load8_le(mem, 2525bv64) == 0bv8); + free requires (memory_load8_le(mem, 2526bv64) == 2bv8); + free requires (memory_load8_le(mem, 2527bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2524bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2527bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2524bv64) == 1bv8); + free requires (memory_load8_le(mem, 2525bv64) == 0bv8); + free requires (memory_load8_le(mem, 2526bv64) == 2bv8); + free requires (memory_load8_le(mem, 2527bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2524bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2527bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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/http_parse_basic/example.c b/examples/http_parse_basic/example.c new file mode 100644 index 000000000..c8a695ad6 --- /dev/null +++ b/examples/http_parse_basic/example.c @@ -0,0 +1,36 @@ +#include +#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"; + + + +int main() { + char *pos = NULL, *dom = NULL; + + + stext[2] = password; + buf = malloc(strlen(stext) + 1); + memcpy(buf, stext, strlen(stext) + 1); // inlined by -O2 + + puts(buf); + + // find the split between username and password ("username:password") + pos = buf + 1; + + // including this makes verification fail + // *pos = 0; + + memset(buf, 0, strlen(buf) + 1); + free(buf); // requires secret[i] == true + +} + diff --git a/examples/http_parse_basic/example.relf b/examples/http_parse_basic/example.relf new file mode 100644 index 000000000..a05c01656 --- /dev/null +++ b/examples/http_parse_basic/example.relf @@ -0,0 +1,143 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 98 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp + 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id + 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag + 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash + 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym + 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr + 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version + 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r + 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn + 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt + 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt + 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text + 14: 00000000000009c8 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009dc 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009e0 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 0000000000000a20 0 SECTION LOCAL DEFAULT 17 .eh_frame + 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array + 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array + 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic + 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got + 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt + 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss + 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d + 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag + 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 0000000000000a34 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009dc 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 00000000000009c8 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009d4 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 0000000000000a48 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS example.c + 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d + 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d + 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x + 58: 0000000000000aa8 0 NOTYPE LOCAL DEFAULT 17 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000acc 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000acc 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 00000000000009e0 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 00000000000009c8 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 85: 00000000000009dc 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf + 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext + 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 94: 00000000000008d4 244 FUNC GLOBAL DEFAULT 13 main + 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/examples/http_parse_basic/example.spec b/examples/http_parse_basic/example.spec new file mode 100644 index 000000000..0a470d81c --- /dev/null +++ b/examples/http_parse_basic/example.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 + + +Subroutine: #free + Requires DIRECT: "(forall i : int, j: bv64 :: malloc_base[i] == R0 && (bvuge64(j, R0) && bvult64(j, malloc_end[i])) ==> Gamma_mem[j])" + 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, malloc_base, malloc_count, malloc_end +Requires DIRECT: "Gamma_R0 == true" +Ensures: buf == old(buf) && password == old(password) && stext==old(stext) +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)" + + +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)))" + From fc3e754a643b952d8d1ed12db1b4b0cea2eac034 Mon Sep 17 00:00:00 2001 From: l-kent Date: Tue, 14 Nov 2023 13:58:51 +1000 Subject: [PATCH 02/36] make exprs immutable again --- src/main/scala/ir/Expr.scala | 21 ++++++++-------- src/main/scala/ir/Program.scala | 23 +++++++----------- src/main/scala/ir/Visitor.scala | 43 ++++++++++++++++++--------------- 3 files changed, 42 insertions(+), 45 deletions(-) diff --git a/src/main/scala/ir/Expr.scala b/src/main/scala/ir/Expr.scala index c86741d2d..304db4a16 100644 --- a/src/main/scala/ir/Expr.scala +++ b/src/main/scala/ir/Expr.scala @@ -2,8 +2,7 @@ package ir import boogie._ -trait Expr { - var ssa_id: Int = 0 +sealed trait Expr { def toBoogie: BExpr def toGamma: BExpr = { val gammaVars: Set[BExpr] = gammas.map(_.toGamma) @@ -24,7 +23,7 @@ trait Expr { def acceptVisit(visitor: Visitor): Expr = throw new Exception("visitor " + visitor + " unimplemented for: " + this) } -trait Literal extends Expr { +sealed trait Literal extends Expr { override def acceptVisit(visitor: Visitor): Literal = visitor.visitLiteral(this) } @@ -54,7 +53,7 @@ case class IntLiteral(value: BigInt) extends Literal { override def toString: String = value.toString } -class Extract(var end: Int, var start: Int, var body: Expr) extends Expr { +case class Extract(end: Int, start: Int, body: Expr) extends Expr { override def toBoogie: BExpr = BVExtract(end, start, body.toBoogie) override def gammas: Set[Expr] = body.gammas override def variables: Set[Variable] = body.variables @@ -64,7 +63,7 @@ class Extract(var end: Int, var start: Int, var body: Expr) extends Expr { override def loads: Set[MemoryLoad] = body.loads } -class Repeat(var repeats: Int, var body: Expr) extends Expr { +case class Repeat(repeats: Int, body: Expr) extends Expr { override def toBoogie: BExpr = BVRepeat(repeats, body.toBoogie) override def gammas: Set[Expr] = body.gammas override def variables: Set[Variable] = body.variables @@ -78,7 +77,7 @@ class Repeat(var repeats: Int, var body: Expr) extends Expr { override def loads: Set[MemoryLoad] = body.loads } -class ZeroExtend(var extension: Int, var body: Expr) extends Expr { +case class ZeroExtend(extension: Int, body: Expr) extends Expr { override def toBoogie: BExpr = BVZeroExtend(extension, body.toBoogie) override def gammas: Set[Expr] = body.gammas override def variables: Set[Variable] = body.variables @@ -92,7 +91,7 @@ class ZeroExtend(var extension: Int, var body: Expr) extends Expr { override def loads: Set[MemoryLoad] = body.loads } -class SignExtend(var extension: Int, var body: Expr) extends Expr { +case class SignExtend(extension: Int, body: Expr) extends Expr { override def toBoogie: BExpr = BVSignExtend(extension, body.toBoogie) override def gammas: Set[Expr] = body.gammas override def variables: Set[Variable] = body.variables @@ -106,7 +105,7 @@ class SignExtend(var extension: Int, var body: Expr) extends Expr { override def loads: Set[MemoryLoad] = body.loads } -class UnaryExpr(var op: UnOp, var arg: Expr) extends Expr { +case class UnaryExpr(op: UnOp, arg: Expr) extends Expr { override def toBoogie: BExpr = UnaryBExpr(op, arg.toBoogie) override def gammas: Set[Expr] = arg.gammas override def variables: Set[Variable] = arg.variables @@ -154,7 +153,7 @@ sealed trait BVUnOp(op: String) extends UnOp { case object BVNOT extends BVUnOp("not") case object BVNEG extends BVUnOp("neg") -class BinaryExpr(var op: BinOp, var arg1: Expr, var arg2: Expr) extends Expr { +case class BinaryExpr(op: BinOp, arg1: Expr, arg2: Expr) extends Expr { override def toBoogie: BExpr = BinaryBExpr(op, arg1.toBoogie, arg2.toBoogie) override def gammas: Set[Expr] = arg1.gammas ++ arg2.gammas override def variables: Set[Variable] = arg1.variables ++ arg2.variables @@ -298,7 +297,7 @@ enum Endian { case BigEndian } -class MemoryStore(var mem: Memory, var index: Expr, var value: Expr, var endian: Endian, var size: Int) extends Expr { +case class MemoryStore(mem: Memory, index: Expr, value: Expr, endian: Endian, size: Int) extends Expr { override def toBoogie: BMemoryStore = BMemoryStore(mem.toBoogie, index.toBoogie, value.toBoogie, endian, size) override def toGamma: GammaStore = GammaStore(mem.toGamma, index.toBoogie, value.toGamma, size, size / mem.valueSize) @@ -312,7 +311,7 @@ class MemoryStore(var mem: Memory, var index: Expr, var value: Expr, var endian: override def acceptVisit(visitor: Visitor): Expr = visitor.visitMemoryStore(this) } -class MemoryLoad(var mem: Memory, var index: Expr, var endian: Endian, var size: Int) extends Expr { +case class MemoryLoad(mem: Memory, index: Expr, endian: Endian, size: Int) extends Expr { override def toBoogie: BMemoryLoad = BMemoryLoad(mem.toBoogie, index.toBoogie, endian, size) override def toGamma: BExpr = if (mem.name == "stack") { GammaLoad(mem.toGamma, index.toBoogie, size, size / mem.valueSize) diff --git a/src/main/scala/ir/Program.scala b/src/main/scala/ir/Program.scala index 9d8e6f7aa..ffd9f8e5e 100644 --- a/src/main/scala/ir/Program.scala +++ b/src/main/scala/ir/Program.scala @@ -126,7 +126,8 @@ class Procedure( def stackIdentification(): Unit = { val stackPointer = Register("R31", BitVecType(64)) - val stackRefs: mutable.Set[Variable] = mutable.Set(stackPointer) + val stackSubstituter = StackSubstituter() + stackSubstituter.stackRefs.add(stackPointer) val visitedBlocks: mutable.Set[Block] = mutable.Set() val stackMemory = Memory("stack", 64, 8) val firstBlock = blocks.headOption @@ -141,30 +142,24 @@ class Procedure( s match { case l: LocalAssign => // replace mem with stack in loads if index contains stack references - val loads = l.rhs.loads - for (load <- loads) { - val loadStackRefs = load.index.variables.intersect(stackRefs) - if (loadStackRefs.nonEmpty) { - load.mem = stackMemory - } - } + stackSubstituter.visitLocalAssign(l) // update stack references val variableVisitor = VariablesWithoutStoresLoads() variableVisitor.visitExpr(l.rhs) - val rhsStackRefs = variableVisitor.variables.toSet.intersect(stackRefs) + val rhsStackRefs = variableVisitor.variables.toSet.intersect(stackSubstituter.stackRefs) if (rhsStackRefs.nonEmpty) { - stackRefs.add(l.lhs) - } else if (stackRefs.contains(l.lhs) && l.lhs != stackPointer) { - stackRefs.remove(l.lhs) + stackSubstituter.stackRefs.add(l.lhs) + } else if (stackSubstituter.stackRefs.contains(l.lhs) && l.lhs != stackPointer) { + stackSubstituter.stackRefs.remove(l.lhs) } case m: MemoryAssign => // replace mem with stack if index contains stack reference - val indexStackRefs = m.rhs.index.variables.intersect(stackRefs) + val indexStackRefs = m.rhs.index.variables.intersect(stackSubstituter.stackRefs) if (indexStackRefs.nonEmpty) { m.lhs = stackMemory - m.rhs.mem = stackMemory + m.rhs = m.rhs.copy(mem = stackMemory) } case _ => } diff --git a/src/main/scala/ir/Visitor.scala b/src/main/scala/ir/Visitor.scala index 37768d1bd..97281f6a0 100644 --- a/src/main/scala/ir/Visitor.scala +++ b/src/main/scala/ir/Visitor.scala @@ -85,47 +85,35 @@ abstract class Visitor { } def visitExtract(node: Extract): Expr = { - node.body = visitExpr(node.body) - node + node.copy(body = visitExpr(node.body)) } def visitRepeat(node: Repeat): Expr = { - node.body = visitExpr(node.body) - node + node.copy(body = visitExpr(node.body)) } def visitZeroExtend(node: ZeroExtend): Expr = { - node.body = visitExpr(node.body) - node + node.copy(body = visitExpr(node.body)) } def visitSignExtend(node: SignExtend): Expr = { - node.body = visitExpr(node.body) - node + node.copy(body = visitExpr(node.body)) } def visitUnaryExpr(node: UnaryExpr): Expr = { - node.arg = visitExpr(node.arg) - node + node.copy(arg = visitExpr(node.arg)) } def visitBinaryExpr(node: BinaryExpr): Expr = { - node.arg1 = visitExpr(node.arg1) - node.arg2 = visitExpr(node.arg2) - node + node.copy(arg1 = visitExpr(node.arg1), arg2 = visitExpr(node.arg2)) } def visitMemoryStore(node: MemoryStore): MemoryStore = { - node.mem = visitMemory(node.mem) - node.index = visitExpr(node.index) - node.value = visitExpr(node.value) - node + node.copy(mem = visitMemory(node.mem), index = visitExpr(node.index), value = visitExpr(node.value)) } def visitMemoryLoad(node: MemoryLoad): Expr = { - node.mem = visitMemory(node.mem) - node.index = visitExpr(node.index) - node + node.copy(mem = visitMemory(node.mem), index = visitExpr(node.index)) } def visitMemory(node: Memory): Memory = node @@ -255,6 +243,21 @@ abstract class ReadOnlyVisitor extends Visitor { } +class StackSubstituter extends Visitor { + val stackRefs: mutable.Set[Variable] = mutable.Set() + val stackMemory: Memory = Memory("stack", 64, 8) + + override def visitMemoryLoad(node: MemoryLoad): MemoryLoad = { + val loadStackRefs = node.index.variables.intersect(stackRefs) + if (loadStackRefs.nonEmpty) { + node.copy(mem = stackMemory) + } else { + node + } + } + +} + class Substituter(variables: Map[Variable, Variable] = Map(), memories: Map[Memory, Memory] = Map()) extends Visitor { override def visitVariable(node: Variable): Variable = variables.get(node) match { case Some(v: Variable) => v From 8d7cb29416232b9e9a7ac05965076f6669232306 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Tue, 21 Nov 2023 10:02:59 +1000 Subject: [PATCH 03/36] use stream writer and add option to change main function --- src/main/scala/Main.scala | 4 +++- src/main/scala/boogie/BProgram.scala | 18 ++++++++++++++- .../scala/translating/ReadELFLoader.scala | 22 ++++++++++++------- src/main/scala/util/BASILConfig.scala | 2 +- src/main/scala/util/RunUtils.scala | 18 ++++++++++----- 5 files changed, 47 insertions(+), 17 deletions(-) diff --git a/src/main/scala/Main.scala b/src/main/scala/Main.scala index 3fb3f0139..44992a540 100644 --- a/src/main/scala/Main.scala +++ b/src/main/scala/Main.scala @@ -34,6 +34,8 @@ object Main { interpret: Flag, @arg(name = "dump-il", doc = "Dump the Intermediate Language to text.") dumpIL: Option[String], + @arg(name = "main-procedure-name", short = 'm', doc = "Name of the main procedure to begin analysis at.") + mainProcedureName: String = "main", @arg(name = "help", short = 'h', doc = "Show this help message.") help: Flag, @arg(name = "analysis-results", doc = "Log analysis results in files at specified path.") @@ -63,7 +65,7 @@ object Main { } val q = BASILConfig( - loading = ILLoadingConfig(conf.adtFileName, conf.relfFileName, conf.specFileName, conf.dumpIL), + loading = ILLoadingConfig(conf.adtFileName, conf.relfFileName, conf.specFileName, conf.dumpIL, conf.mainProcedureName), runInterpret = conf.interpret.value, staticAnalysis = if conf.analyse.value then Some(StaticAnalysisConfig(conf.dumpIL, conf.analysisResults, conf.analysisResultsDot)) else None, boogieTranslation = BoogieGeneratorConfig(if conf.lambdaStores.value then BoogieMemoryAccessMode.LambdaStoreSelect else BoogieMemoryAccessMode.SuccessiveStoreSelect), diff --git a/src/main/scala/boogie/BProgram.scala b/src/main/scala/boogie/BProgram.scala index bac192237..caf95ac05 100644 --- a/src/main/scala/boogie/BProgram.scala +++ b/src/main/scala/boogie/BProgram.scala @@ -1,12 +1,28 @@ package boogie +import java.io.Writer case class BProgram(declarations: List[BDeclaration]) { - override def toString: String = declarations.flatMap(x => x.toBoogie).mkString("\n") + override def toString: String = declarations.flatMap(x => x.toBoogie).mkString(System.lineSeparator()) + + def writeToString(w: Writer): Unit = { + declarations.foreach(x => { + x.writeToString(w) + w.append(System.lineSeparator()) + }) + } } trait BDeclaration extends HasAttributes { override def attributes: List[BAttribute] = List() def toBoogie: List[String] = List(toString) + + final def writeToString(w: Writer): Unit = { + for (elem <- toBoogie) { + w.append(elem) + w.append(System.lineSeparator()) + } + } + } case class BProcedure( diff --git a/src/main/scala/translating/ReadELFLoader.scala b/src/main/scala/translating/ReadELFLoader.scala index c58d6b383..d874f05fe 100644 --- a/src/main/scala/translating/ReadELFLoader.scala +++ b/src/main/scala/translating/ReadELFLoader.scala @@ -1,17 +1,19 @@ package translating -import Parsers.ReadELFParser._ -import specification._ -import scala.jdk.CollectionConverters._ +import Parsers.ReadELFParser.* +import specification.* +import util.ILLoadingConfig + +import scala.jdk.CollectionConverters.* object ReadELFLoader { - def visitSyms(ctx: SymsContext): (Set[ExternalFunction], Set[SpecGlobal], Map[BigInt, BigInt], Int) = { + def visitSyms(ctx: SymsContext, config: ILLoadingConfig): (Set[ExternalFunction], Set[SpecGlobal], Map[BigInt, BigInt], Int) = { val externalFunctions = ctx.relocationTable.asScala.flatMap(r => visitRelocationTableExtFunc(r)).toSet val relocationOffsets = ctx.relocationTable.asScala.flatMap(r => visitRelocationTableOffsets(r)).toMap val globalVariables = ctx.symbolTable.asScala.flatMap(s => visitSymbolTable(s)).toSet - val mainAddress = ctx.symbolTable.asScala.flatMap(s => getMainAddress(s)) + val mainAddress = ctx.symbolTable.asScala.flatMap(s => getFunctionAddress(s, config.mainProcedureName)) if (mainAddress.isEmpty) { - throw Exception("no main function in symbol table") + throw Exception(s"no ${config.mainProcedureName} function in symbol table") } (externalFunctions, globalVariables, relocationOffsets, mainAddress.head) } @@ -56,11 +58,15 @@ object ReadELFLoader { } } - def getMainAddress(ctx: SymbolTableContext): Option[Int] = { + def getFunctionAddress(ctx: SymsContext, functionName: String): Option[Int] = { + ctx.symbolTable.asScala.flatMap(s => getFunctionAddress(s, functionName)).headOption + } + + private def getFunctionAddress(ctx: SymbolTableContext, functionName: String): Option[Int] = { if (ctx.symbolTableHeader.tableName.STRING.getText == ".symtab") { val rows = ctx.symbolTableRow.asScala val mainAddress = rows.collectFirst { - case r if r.entrytype.getText == "FUNC" && r.bind.getText == "GLOBAL" && r.name.getText == "main" => + case r if r.entrytype.getText == "FUNC" && r.bind.getText == "GLOBAL" && r.name.getText == functionName => Integer.parseInt(r.value.getText, 16) } mainAddress diff --git a/src/main/scala/util/BASILConfig.scala b/src/main/scala/util/BASILConfig.scala index ac0e3d5f7..052674059 100644 --- a/src/main/scala/util/BASILConfig.scala +++ b/src/main/scala/util/BASILConfig.scala @@ -1,6 +1,6 @@ package util -case class ILLoadingConfig(adtFile: String, relfFile: String, specFile: Option[String], dumpIL: Option[String]) +case class ILLoadingConfig(adtFile: String, relfFile: String, specFile: Option[String], dumpIL: Option[String], mainProcedureName: String) case class BoogieGeneratorConfig(memoryFunctionType: BoogieMemoryAccessMode = BoogieMemoryAccessMode.SuccessiveStoreSelect) case class StaticAnalysisConfig(dumpILToPath: Option[String] = None, analysisResultsPath: Option[String] = None, analysisDotPath: Option[String] = None) enum BoogieMemoryAccessMode: diff --git a/src/main/scala/util/RunUtils.scala b/src/main/scala/util/RunUtils.scala index bcc90b7c7..8cc52e488 100644 --- a/src/main/scala/util/RunUtils.scala +++ b/src/main/scala/util/RunUtils.scala @@ -40,12 +40,12 @@ object RunUtils { BAPLoader.visitProject(parser.project()) } - def loadReadELF(fileName: String): (Set[ExternalFunction], Set[SpecGlobal], Map[BigInt, BigInt], Int) = { + def loadReadELF(fileName: String, config: ILLoadingConfig): (Set[ExternalFunction], Set[SpecGlobal], Map[BigInt, BigInt], Int) = { val lexer = ReadELFLexer(CharStreams.fromFileName(fileName)) val tokens = CommonTokenStream(lexer) val parser = ReadELFParser(tokens) parser.setBuildParseTree(true) - ReadELFLoader.visitSyms(parser.syms()) + ReadELFLoader.visitSyms(parser.syms(), config) } def loadSpecification(filename: Option[String], program: Program, globals: Set[SpecGlobal]): Specification = { @@ -62,9 +62,12 @@ object RunUtils { } def run(q: BASILConfig): Unit = { - Logger.info("[!] Writing file...") val boogieProgram = loadAndTranslate(q) - writeToFile(boogieProgram.toString, q.outputPrefix) + + Logger.info("[!] Writing file...") + val wr = BufferedWriter(FileWriter(q.outputPrefix)) + boogieProgram.writeToString(wr) + wr.close() } def loadAndTranslate(q: BASILConfig): BProgram = { @@ -72,7 +75,7 @@ object RunUtils { * Loading phase */ val bapProgram = loadBAP(q.loading.adtFile) - val (externalFunctions, globals, globalOffsets, mainAddress) = loadReadELF(q.loading.relfFile) + val (externalFunctions, globals, globalOffsets, mainAddress) = loadReadELF(q.loading.relfFile, q.loading) val IRTranslator = BAPToIR(bapProgram, mainAddress) var IRProgram = IRTranslator.translate @@ -98,7 +101,11 @@ object RunUtils { } IRProgram.determineRelevantMemory(globalOffsets) + + Logger.info("[!] Stripping unreachable") + val before = IRProgram.procedures.size IRProgram.stripUnreachableFunctions() + Logger.info(s"[!] Removed ${before - IRProgram.procedures.size} functions (${IRProgram.procedures.size} remaining)") IRProgram.stackIdentification() val specModifies = specification.subroutines.map(s => s.name -> s.modifies).toMap @@ -111,7 +118,6 @@ object RunUtils { Logger.info("[!] Translating to Boogie") val boogieTranslator = IRToBoogie(IRProgram, specification) - Logger.info("[!] Done! Exiting...") val boogieProgram = boogieTranslator.translate(q.boogieTranslation) boogieProgram } From 72dde92cb72f10558c4809cb00d5e62dcb3e8015 Mon Sep 17 00:00:00 2001 From: l-kent Date: Tue, 21 Nov 2023 14:07:53 +1000 Subject: [PATCH 04/36] move stack identification to visitor completely --- src/main/scala/ir/Program.scala | 55 --------------- src/main/scala/ir/Visitor.scala | 85 +++++++++++++++++++++++- src/main/scala/util/RunUtils.scala | 3 +- src/test/scala/ir/InterpreterTests.scala | 3 +- 4 files changed, 86 insertions(+), 60 deletions(-) diff --git a/src/main/scala/ir/Program.scala b/src/main/scala/ir/Program.scala index ffd9f8e5e..8b4796615 100644 --- a/src/main/scala/ir/Program.scala +++ b/src/main/scala/ir/Program.scala @@ -73,12 +73,6 @@ class Program(var procedures: ArrayBuffer[Procedure], var mainProcedure: Procedu } } - def stackIdentification(): Unit = { - for (p <- procedures) { - p.stackIdentification() - } - } - /** * Takes all the memory sections we get from the ADT (previously in initialMemory) and restricts initialMemory to * just the .data section (which contains things such as global variables which are mutable) and puts the .rodata @@ -124,55 +118,6 @@ class Procedure( } var modifies: mutable.Set[Global] = mutable.Set() - def stackIdentification(): Unit = { - val stackPointer = Register("R31", BitVecType(64)) - val stackSubstituter = StackSubstituter() - stackSubstituter.stackRefs.add(stackPointer) - val visitedBlocks: mutable.Set[Block] = mutable.Set() - val stackMemory = Memory("stack", 64, 8) - val firstBlock = blocks.headOption - firstBlock.foreach(visitBlock) - - // does not handle loops but we do not currently support loops in block CFG so this should do for now anyway - def visitBlock(b: Block): Unit = { - if (visitedBlocks.contains(b)) { - return - } - for (s <- b.statements) { - s match { - case l: LocalAssign => - // replace mem with stack in loads if index contains stack references - stackSubstituter.visitLocalAssign(l) - - // update stack references - val variableVisitor = VariablesWithoutStoresLoads() - variableVisitor.visitExpr(l.rhs) - - val rhsStackRefs = variableVisitor.variables.toSet.intersect(stackSubstituter.stackRefs) - if (rhsStackRefs.nonEmpty) { - stackSubstituter.stackRefs.add(l.lhs) - } else if (stackSubstituter.stackRefs.contains(l.lhs) && l.lhs != stackPointer) { - stackSubstituter.stackRefs.remove(l.lhs) - } - case m: MemoryAssign => - // replace mem with stack if index contains stack reference - val indexStackRefs = m.rhs.index.variables.intersect(stackSubstituter.stackRefs) - if (indexStackRefs.nonEmpty) { - m.lhs = stackMemory - m.rhs = m.rhs.copy(mem = stackMemory) - } - case _ => - } - } - visitedBlocks.add(b) - b.jump match { - case g: GoTo => g.targets.foreach(visitBlock) - case d: DirectCall => d.returnTarget.foreach(visitBlock) - case i: IndirectCall => i.returnTarget.foreach(visitBlock) - } - } - } - } class Block( diff --git a/src/main/scala/ir/Visitor.scala b/src/main/scala/ir/Visitor.scala index 97281f6a0..0b6d79339 100644 --- a/src/main/scala/ir/Visitor.scala +++ b/src/main/scala/ir/Visitor.scala @@ -243,11 +243,64 @@ abstract class ReadOnlyVisitor extends Visitor { } -class StackSubstituter extends Visitor { - val stackRefs: mutable.Set[Variable] = mutable.Set() - val stackMemory: Memory = Memory("stack", 64, 8) +/** + * Visits all reachable blocks in a procedure, depth-first, in the order they are reachable from the start of the + * procedure. + * Does not jump to other procedures. + * Only modifies statements and jumps. + * */ +abstract class IntraproceduralControlFlowVisitor extends Visitor { + private val visitedBlocks: mutable.Set[Block] = mutable.Set() + + override def visitProcedure(node: Procedure): Procedure = { + node.blocks.headOption.foreach(visitBlock) + node + } + + override def visitBlock(node: Block): Block = { + if (visitedBlocks.contains(node)) { + return node + } + for (i <- node.statements.indices) { + node.statements(i) = visitStatement(node.statements(i)) + } + visitedBlocks.add(node) + node.jump = visitJump(node.jump) + node + } + + override def visitGoTo(node: GoTo): Jump = { + node.targets.foreach(visitBlock) + node + } + + override def visitDirectCall(node: DirectCall): Jump = { + node.returnTarget.foreach(visitBlock) + node + } + + override def visitIndirectCall(node: IndirectCall): Jump = { + node.target = visitVariable(node.target) + node.returnTarget.foreach(visitBlock) + node + } +} + +// TODO: does this break for programs with loops? need to calculate a fixed-point? +class StackSubstituter extends IntraproceduralControlFlowVisitor { + private val stackPointer = Register("R31", BitVecType(64)) + private val stackMemory = Memory("stack", 64, 8) + val stackRefs: mutable.Set[Variable] = mutable.Set(stackPointer) + + override def visitProcedure(node: Procedure): Procedure = { + // reset for each procedure + stackRefs.clear() + stackRefs.add(stackPointer) + super.visitProcedure(node) + } override def visitMemoryLoad(node: MemoryLoad): MemoryLoad = { + // replace mem with stack in load if index contains stack references val loadStackRefs = node.index.variables.intersect(stackRefs) if (loadStackRefs.nonEmpty) { node.copy(mem = stackMemory) @@ -256,6 +309,32 @@ class StackSubstituter extends Visitor { } } + override def visitLocalAssign(node: LocalAssign): Statement = { + node.lhs = visitVariable(node.lhs) + node.rhs = visitExpr(node.rhs) + + // update stack references + val variableVisitor = VariablesWithoutStoresLoads() + variableVisitor.visitExpr(node.rhs) + + val rhsStackRefs = variableVisitor.variables.toSet.intersect(stackRefs) + if (rhsStackRefs.nonEmpty) { + stackRefs.add(node.lhs) + } else if (stackRefs.contains(node.lhs) && node.lhs != stackPointer) { + stackRefs.remove(node.lhs) + } + node + } + + override def visitMemoryAssign(node: MemoryAssign): Statement = { + val indexStackRefs = node.rhs.index.variables.intersect(stackRefs) + if (indexStackRefs.nonEmpty) { + node.lhs = stackMemory + node.rhs = node.rhs.copy(mem = stackMemory) + } + node + } + } class Substituter(variables: Map[Variable, Variable] = Map(), memories: Map[Memory, Memory] = Map()) extends Visitor { diff --git a/src/main/scala/util/RunUtils.scala b/src/main/scala/util/RunUtils.scala index bcc90b7c7..f7321aa74 100644 --- a/src/main/scala/util/RunUtils.scala +++ b/src/main/scala/util/RunUtils.scala @@ -99,7 +99,8 @@ object RunUtils { IRProgram.determineRelevantMemory(globalOffsets) IRProgram.stripUnreachableFunctions() - IRProgram.stackIdentification() + val stackIdentification = StackSubstituter() + stackIdentification.visitProgram(IRProgram) val specModifies = specification.subroutines.map(s => s.name -> s.modifies).toMap IRProgram.setModifies(specModifies) diff --git a/src/test/scala/ir/InterpreterTests.scala b/src/test/scala/ir/InterpreterTests.scala index d448b132e..dc30b32a6 100644 --- a/src/test/scala/ir/InterpreterTests.scala +++ b/src/test/scala/ir/InterpreterTests.scala @@ -21,7 +21,8 @@ class InterpreterTests extends AnyFunSuite with BeforeAndAfter { IRProgram = ExternalRemover(externalFunctions.map(e => e.name)).visitProgram(IRProgram) IRProgram = Renamer(Set("free")).visitProgram(IRProgram) IRProgram.stripUnreachableFunctions() - IRProgram.stackIdentification() + val stackIdentification = StackSubstituter() + stackIdentification.visitProgram(IRProgram) IRProgram.setModifies(Map()) (IRProgram, globals) From 7d97c48551f4bc28f6767fd70f3c6d3887a2bcf5 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Tue, 21 Nov 2023 16:57:32 +1000 Subject: [PATCH 05/36] move data section to function --- src/main/scala/boogie/BExpr.scala | 70 ++++++++++++++++++++- src/main/scala/boogie/BProgram.scala | 17 +++-- src/main/scala/translating/IRToBoogie.scala | 11 +++- 3 files changed, 90 insertions(+), 8 deletions(-) diff --git a/src/main/scala/boogie/BExpr.scala b/src/main/scala/boogie/BExpr.scala index 2c5dd37b7..4e3220763 100644 --- a/src/main/scala/boogie/BExpr.scala +++ b/src/main/scala/boogie/BExpr.scala @@ -1,6 +1,9 @@ package boogie -import ir._ -import specification._ +import ir.* +import specification.* +import collection.mutable + +import java.io.Writer trait BExpr { def getType: BType @@ -15,6 +18,7 @@ trait BExpr { def resolveSpecL: BExpr = this def resolveInsideOld: BExpr = this def loads: Set[BExpr] = Set() + def serialiseBoogie(w: Writer): Unit = w.append(toString) } trait BLiteral extends BExpr {} @@ -59,11 +63,18 @@ case class BVExtract(end: Int, start: Int, body: BExpr) extends BExpr { override def resolveInsideOld: BVExtract = copy(body = body.resolveInsideOld) override def removeOld: BVExtract = copy(body = body.removeOld) override def loads: Set[BExpr] = body.loads + + override def serialiseBoogie(w: Writer): Unit = { + body.serialiseBoogie(w) + w.append(s"[$end:$start]") + } + } case class BVRepeat(repeats: Int, body: BExpr) extends BExpr { override def getType: BitVecBType = BitVecBType(bodySize * repeats) + private def bodySize: Int = body.getType match { case bv: BitVecBType => bv.size case _ => throw new Exception("type mismatch, non bv expression: " + body + " in body of extract: " + this) @@ -72,6 +83,13 @@ case class BVRepeat(repeats: Int, body: BExpr) extends BExpr { override def toString: String = s"$fnName($body)" + override def serialiseBoogie(w: Writer): Unit = { + w.append(fnName) + w.append("(") + body.serialiseBoogie(w) + w.append(")") + } + override def functionOps: Set[FunctionOp] = { val thisFn = BVFunctionOp(fnName, s"repeat $repeats", List(BParam(BitVecBType(bodySize))), BParam(getType)) body.functionOps + thisFn @@ -100,6 +118,13 @@ case class BVZeroExtend(extension: Int, body: BExpr) extends BExpr { override def toString: String = s"$fnName($body)" + override def serialiseBoogie(w: Writer): Unit = { + w.append(fnName) + w.append("(") + body.serialiseBoogie(w) + w.append(")") + } + override def functionOps: Set[FunctionOp] = { val thisFn = BVFunctionOp(fnName, s"zero_extend $extension", List(BParam(BitVecBType(bodySize))), BParam(getType)) body.functionOps + thisFn @@ -128,6 +153,14 @@ case class BVSignExtend(extension: Int, body: BExpr) extends BExpr { override def toString: String = s"$fnName($body)" + override def serialiseBoogie(w: Writer): Unit = { + w.append(fnName) + w.append("(") + body.serialiseBoogie(w) + w.append(")") + } + + override def functionOps: Set[FunctionOp] = { val thisFn = BVFunctionOp(fnName, s"sign_extend $extension", List(BParam(BitVecBType(bodySize))), BParam(getType)) body.functionOps + thisFn @@ -297,6 +330,32 @@ case class BinaryBExpr(op: BinOp, arg1: BExpr, arg2: BExpr) extends BExpr { case _ => throw new Exception("type mismatch") } + override def serialiseBoogie(w: Writer): Unit = { + val traversalQueue = mutable.Stack[BExpr | BinOp | String]() + traversalQueue.append(this) + + while (traversalQueue.nonEmpty) { + val next = traversalQueue.pop() + + def infix(b: BinaryBExpr): Unit = traversalQueue.pushAll(Seq("(", b.arg1, b.op, b.arg2, ")").reverse) + def prefix(b: BinaryBExpr): Unit = traversalQueue.pushAll(Seq(s"bv${b.op}${b.inSize}(", b.arg1, ",", b.arg2, ")").reverse) + + next match + case b: BinaryBExpr => + b.op match { + case bOp: BoolBinOp => infix(b) + case bOp: BVBinOp => bOp match { + case BVEQ | BVNEQ | BVCONCAT => infix(b) + case _ => prefix(b) + } + case bOp: IntBinOp => infix(b) + } + case b: BExpr => b.serialiseBoogie(w) + case b: BinOp => w.append(b.toString) + case s: String => w.append(s) + } + } + override def toString: String = op match { case bOp: BoolBinOp => s"($arg1 $bOp $arg2)" case bOp: BVBinOp => @@ -309,6 +368,8 @@ case class BinaryBExpr(op: BinOp, arg1: BExpr, arg2: BExpr) extends BExpr { case bOp: IntBinOp => s"($arg1 $bOp $arg2)" } + + override def functionOps: Set[FunctionOp] = { val thisFn = op match { case b: BVBinOp => @@ -633,3 +694,8 @@ case class L(memory: BMapVar, index: BExpr) extends BExpr { override def globals: Set[BVar] = index.globals override def loads: Set[BExpr] = index.loads } + + + +object BinaryBExpr { +} diff --git a/src/main/scala/boogie/BProgram.scala b/src/main/scala/boogie/BProgram.scala index caf95ac05..c974f452f 100644 --- a/src/main/scala/boogie/BProgram.scala +++ b/src/main/scala/boogie/BProgram.scala @@ -1,5 +1,5 @@ package boogie -import java.io.Writer +import java.io.{StringWriter, Writer} case class BProgram(declarations: List[BDeclaration]) { override def toString: String = declarations.flatMap(x => x.toBoogie).mkString(System.lineSeparator()) @@ -88,12 +88,21 @@ case class BFunction(name: String, in: List[BVar], out: BVar, body: Option[BExpr with Ordered[BFunction] { override def compare(that: BFunction): Int = name.compare(that.name) override def toBoogie: List[String] = { + val s = new StringWriter() + val inString = in.map(_.withType).mkString(", ") val declString = s"function $attrString$name($inString) returns (${out.withType})" - body match { - case Some(b) => List(declString + " {", " " + b.toString, "}", "") - case None => List(declString + ";") + s.append(declString) + + val decl = body match { + case Some(b) => + s.append(" {" + System.lineSeparator() + " ") + b.serialiseBoogie(s) + s.append(System.lineSeparator()) + s.append("}" + System.lineSeparator()) + case None => s.append(";") } + List(s.toString) } override def toString: String = toBoogie.mkString("\n") def functionOps: Set[FunctionOp] = body match { diff --git a/src/main/scala/translating/IRToBoogie.scala b/src/main/scala/translating/IRToBoogie.scala index 42d1b14d5..6990fc850 100644 --- a/src/main/scala/translating/IRToBoogie.scala +++ b/src/main/scala/translating/IRToBoogie.scala @@ -39,7 +39,9 @@ class IRToBoogie(var program: Program, var spec: Specification) { def translate(boogieGeneratorConfig: BoogieGeneratorConfig): BProgram = { config = boogieGeneratorConfig - val readOnlyMemory = memoryToCondition(program.readOnlyMemory) + val readOnlyMemoryFunction = readOnlyMemoryPredicate(memoryToCondition(program.readOnlyMemory), mem) + val readOnlyMemory = List(BFunctionCall(readOnlyMemoryFunction.name, List(mem), BoolBType)) + val procedures = program.procedures.map(f => translateProcedure(f, readOnlyMemory)) val defaultGlobals = List(BVarDecl(mem, List(externAttr)), BVarDecl(Gamma_mem, List(externAttr))) val globalVars = procedures.flatMap(p => p.globals ++ p.freeRequires.flatMap(_.globals) ++ p.freeEnsures.flatMap(_.globals) ++ p.ensures.flatMap(_.globals) ++ p.requires.flatMap(_.globals)) @@ -69,12 +71,13 @@ class IRToBoogie(var program: Program, var spec: Specification) { procedures.flatMap(p => p.functionOps).toSet ++ rgProcs.flatMap(p => p.functionOps).toSet ++ directFunctions + val functionsUsed2 = functionsUsed1.map(p => functionOpToDefinition(p)) val functionsUsed3 = functionsUsed2.flatMap(p => p.functionOps).map(p => functionOpToDefinition(p)) val functionsUsed4 = functionsUsed3.flatMap(p => p.functionOps).map(p => functionOpToDefinition(p)) val functionsUsed = (functionsUsed2 ++ functionsUsed3 ++ functionsUsed4).toList.sorted - val declarations = globalDecls ++ globalConsts ++ functionsUsed ++ pushUpModifiesFixedPoint(rgProcs ++ procedures) + val declarations = globalDecls ++ globalConsts ++ functionsUsed ++ pushUpModifiesFixedPoint(rgProcs ++ procedures) ++ Seq(readOnlyMemoryFunction) BProgram(declarations) } @@ -102,6 +105,10 @@ class IRToBoogie(var program: Program, var spec: Specification) { List(relyProc, relyTransitive, relyReflexive) } + private def readOnlyMemoryPredicate(readonly: List[BExpr], mem: BVar) : BFunction = { + BFunction("readonly_memory", List(BParam("mem", mem.bType)), BParam(BoolBType), Some(readonly.reduce((a, b) => BinaryBExpr(BoolAND, a, b))), List(externAttr)) + } + def functionOpToDefinition(f: FunctionOp): BFunction = { f match { case b: BVFunctionOp => BFunction(b.name, b.in, b.out, None, List(externAttr, b.attribute)) From 64a4b3a294f711b81b7cbda7ae85f85dbab04a9a Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Wed, 29 Nov 2023 13:11:19 +1000 Subject: [PATCH 06/36] allow setting reachability trim depth --- src/main/scala/Main.scala | 4 ++- src/main/scala/ir/Program.scala | 31 ++++++++++--------- src/main/scala/util/BASILConfig.scala | 2 +- src/main/scala/util/RunUtils.scala | 2 +- .../scala/MemoryRegionAnalysisMiscTest.scala | 1 + src/test/scala/ir/InterpreterTests.scala | 15 +++++++-- 6 files changed, 36 insertions(+), 19 deletions(-) diff --git a/src/main/scala/Main.scala b/src/main/scala/Main.scala index 44992a540..b67087406 100644 --- a/src/main/scala/Main.scala +++ b/src/main/scala/Main.scala @@ -36,6 +36,8 @@ object Main { dumpIL: Option[String], @arg(name = "main-procedure-name", short = 'm', doc = "Name of the main procedure to begin analysis at.") mainProcedureName: String = "main", + @arg(name = "procedure-call-depth", doc = "Cull procedures beyond this call depth from the main function (defaults to Int.MaxValue)") + procedureDepth: Int = Int.MaxValue, @arg(name = "help", short = 'h', doc = "Show this help message.") help: Flag, @arg(name = "analysis-results", doc = "Log analysis results in files at specified path.") @@ -65,7 +67,7 @@ object Main { } val q = BASILConfig( - loading = ILLoadingConfig(conf.adtFileName, conf.relfFileName, conf.specFileName, conf.dumpIL, conf.mainProcedureName), + loading = ILLoadingConfig(conf.adtFileName, conf.relfFileName, conf.specFileName, conf.dumpIL, conf.mainProcedureName, conf.procedureDepth), runInterpret = conf.interpret.value, staticAnalysis = if conf.analyse.value then Some(StaticAnalysisConfig(conf.dumpIL, conf.analysisResults, conf.analysisResultsDot)) else None, boogieTranslation = BoogieGeneratorConfig(if conf.lambdaStores.value then BoogieMemoryAccessMode.LambdaStoreSelect else BoogieMemoryAccessMode.SuccessiveStoreSelect), diff --git a/src/main/scala/ir/Program.scala b/src/main/scala/ir/Program.scala index 9d8e6f7aa..3e06a3087 100644 --- a/src/main/scala/ir/Program.scala +++ b/src/main/scala/ir/Program.scala @@ -8,22 +8,25 @@ import analysis.BitVectorEval class Program(var procedures: ArrayBuffer[Procedure], var mainProcedure: Procedure, var initialMemory: ArrayBuffer[MemorySection], var readOnlyMemory: ArrayBuffer[MemorySection]) { // This shouldn't be run before indirect calls are resolved - def stripUnreachableFunctions(): Unit = { - val functionToChildren = procedures.map(f => f.name -> f.calls.map(_.name)).toMap - var next = mainProcedure.name - var reachableNames: Set[String] = Set(next) - var toVisit: List[String] = List() + + def stripUnreachableFunctions(depth: Int = Int.MaxValue): Unit = { + val procedureCalleeNames = procedures.map(f => f.name -> f.calls.map(_.name)).toMap + + var toVisit: mutable.LinkedHashSet[(Int, String)] = mutable.LinkedHashSet((0, mainProcedure.name)) var reachableFound = true - while (reachableFound) { - val children = functionToChildren(next) -- reachableNames -- toVisit - next - reachableNames = reachableNames ++ children - toVisit = toVisit ++ children - if (toVisit.isEmpty) { - reachableFound = false - } else { - next = toVisit.head - toVisit = toVisit.tail + val reachableNames = mutable.HashSet[String]() + while (toVisit.nonEmpty) { + val next = toVisit.head + toVisit.remove(next) + + if (next._1 <= depth) { + reachableNames.addOne(next._2) + + val callees = procedureCalleeNames(next._2) + + toVisit.addAll(callees.diff(reachableNames).map(c => (next._1 + 1, c))) + reachableNames.addAll(callees) } } procedures = procedures.filter(f => reachableNames.contains(f.name)) diff --git a/src/main/scala/util/BASILConfig.scala b/src/main/scala/util/BASILConfig.scala index 052674059..7889dc56c 100644 --- a/src/main/scala/util/BASILConfig.scala +++ b/src/main/scala/util/BASILConfig.scala @@ -1,6 +1,6 @@ package util -case class ILLoadingConfig(adtFile: String, relfFile: String, specFile: Option[String], dumpIL: Option[String], mainProcedureName: String) +case class ILLoadingConfig(adtFile: String, relfFile: String, specFile: Option[String] = None, dumpIL: Option[String] = None, mainProcedureName: String = "main", procedureTrimDepth: Int = Int.MaxValue) case class BoogieGeneratorConfig(memoryFunctionType: BoogieMemoryAccessMode = BoogieMemoryAccessMode.SuccessiveStoreSelect) case class StaticAnalysisConfig(dumpILToPath: Option[String] = None, analysisResultsPath: Option[String] = None, analysisDotPath: Option[String] = None) enum BoogieMemoryAccessMode: diff --git a/src/main/scala/util/RunUtils.scala b/src/main/scala/util/RunUtils.scala index 8cc52e488..20166c4c5 100644 --- a/src/main/scala/util/RunUtils.scala +++ b/src/main/scala/util/RunUtils.scala @@ -104,7 +104,7 @@ object RunUtils { Logger.info("[!] Stripping unreachable") val before = IRProgram.procedures.size - IRProgram.stripUnreachableFunctions() + IRProgram.stripUnreachableFunctions(q.loading.procedureTrimDepth) Logger.info(s"[!] Removed ${before - IRProgram.procedures.size} functions (${IRProgram.procedures.size} remaining)") IRProgram.stackIdentification() diff --git a/src/test/scala/MemoryRegionAnalysisMiscTest.scala b/src/test/scala/MemoryRegionAnalysisMiscTest.scala index 93cad362e..a04378b8f 100644 --- a/src/test/scala/MemoryRegionAnalysisMiscTest.scala +++ b/src/test/scala/MemoryRegionAnalysisMiscTest.scala @@ -23,6 +23,7 @@ class MemoryRegionAnalysisMiscTest extends AnyFunSuite with OneInstancePerTest { relfFile = examplesPath + s"$name/$name.relf", specFile = None, dumpIL = None, + mainProcedureName = "main", ), runInterpret = false, staticAnalysis = Some(StaticAnalysisConfig()), diff --git a/src/test/scala/ir/InterpreterTests.scala b/src/test/scala/ir/InterpreterTests.scala index d448b132e..f5721b29c 100644 --- a/src/test/scala/ir/InterpreterTests.scala +++ b/src/test/scala/ir/InterpreterTests.scala @@ -7,6 +7,7 @@ import specification.SpecGlobal import translating.BAPToIR import util.{LogLevel, Logger} import util.RunUtils.{loadBAP, loadReadELF} +import util.ILLoadingConfig class InterpreterTests extends AnyFunSuite with BeforeAndAfter { @@ -14,8 +15,18 @@ class InterpreterTests extends AnyFunSuite with BeforeAndAfter { Logger.setLevel(LogLevel.DEBUG) def getProgram(name: String): (Program, Set[SpecGlobal]) = { - val bapProgram = loadBAP(s"examples/$name/$name.adt") - val (externalFunctions, globals, _, mainAddress) = loadReadELF(s"examples/$name/$name.relf") + + + val loading = ILLoadingConfig( + adtFile = s"examples/$name/$name.adt", + relfFile = s"examples/$name/$name.relf", + specFile = None, + dumpIL = None, + mainProcedureName = "main", + ) + + val bapProgram = loadBAP(loading.adtFile) + val (externalFunctions, globals, _, mainAddress) = loadReadELF(loading.relfFile, loading) val IRTranslator = BAPToIR(bapProgram, mainAddress) var IRProgram = IRTranslator.translate IRProgram = ExternalRemover(externalFunctions.map(e => e.name)).visitProgram(IRProgram) From ad1c0cb31bd665646482b468f63caa40af3130c6 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Tue, 14 Nov 2023 13:51:58 +1000 Subject: [PATCH 07/36] add example --- examples/http_parse_basic/Makefile | 5 +- examples/http_parse_basic/beans | 1128 +++++++++++ examples/http_parse_basic/example.adt | 775 ++++---- examples/http_parse_basic/example.bil | 702 ++++--- examples/http_parse_basic/example.bpl | 251 ++- examples/http_parse_basic/example.bpl.orig | 691 +++++++ examples/http_parse_basic/example.bpl.rej | 12 + examples/http_parse_basic/example.c | 17 +- examples/http_parse_basic/example.model | 802 ++++++++ examples/http_parse_basic/example.relf | 32 +- examples/http_parse_basic/example.spec | 46 +- examples/http_parse_basic/extraspec.bpl | 20 + examples/http_parse_basic/patch.diff | 12 + examples/http_parse_basic/simplememcpy.c | 0 examples/http_parse_basic/smtout.log | 1679 +++++++++++++++++ examples/memcpy-variants/Makefile | 28 + examples/memcpy-variants/beans | 709 +++++++ examples/memcpy-variants/example.adt | 550 ++++++ examples/memcpy-variants/example.bil | 253 +++ examples/memcpy-variants/example.bpl.orig | 691 +++++++ examples/memcpy-variants/example.bpl.rej | 12 + examples/memcpy-variants/example.c | 9 + examples/memcpy-variants/example.model | 488 +++++ examples/memcpy-variants/example.relf | 127 ++ examples/memcpy-variants/example.spec | 27 + examples/memcpy-variants/iterator.log | 1007 ++++++++++ .../memcpy-variants/memcpyspec-iterindex.spec | 30 + examples/memcpy-variants/simplememcpy.c | 0 examples/memcpy-variants/smtout.log | 688 +++++++ .../malloc_memcpy_strlen_memset_free/Makefile | 2 + .../clang/Makefile | 4 + .../malloc_memcpy_strlen_memset_free.adt | 759 ++++++++ .../malloc_memcpy_strlen_memset_free.bir | 352 ++++ .../malloc_memcpy_strlen_memset_free.relf | 144 ++ .../clang_O2/Makefile | 5 + .../malloc_memcpy_strlen_memset_free.adt | 740 ++++++++ .../malloc_memcpy_strlen_memset_free.bir | 348 ++++ .../malloc_memcpy_strlen_memset_free.relf | 144 ++ .../extraspec.bpl | 20 + .../gcc/Makefile | 3 + .../gcc/malloc_memcpy_strlen_memset_free.adt | 774 ++++++++ .../gcc/malloc_memcpy_strlen_memset_free.bir | 361 ++++ .../gcc/malloc_memcpy_strlen_memset_free.relf | 143 ++ .../gcc_O2/Makefile | 3 + .../malloc_memcpy_strlen_memset_free.adt | 741 ++++++++ .../malloc_memcpy_strlen_memset_free.bir | 348 ++++ .../malloc_memcpy_strlen_memset_free.relf | 143 ++ .../malloc_memcpy_strlen_memset_free.c | 29 + .../malloc_memcpy_strlen_memset_free.spec | 76 + .../malloc_memcpy_strlen_memset_free/Makefile | 2 + .../clang/Makefile | 4 + .../malloc_memcpy_strlen_memset_free.adt | 759 ++++++++ .../malloc_memcpy_strlen_memset_free.bir | 352 ++++ .../malloc_memcpy_strlen_memset_free.relf | 144 ++ .../clang_O2/Makefile | 5 + .../malloc_memcpy_strlen_memset_free.adt | 740 ++++++++ .../malloc_memcpy_strlen_memset_free.bir | 348 ++++ .../malloc_memcpy_strlen_memset_free.relf | 144 ++ .../extraspec.bpl | 20 + .../gcc/Makefile | 3 + .../gcc/malloc_memcpy_strlen_memset_free.adt | 774 ++++++++ .../gcc/malloc_memcpy_strlen_memset_free.bir | 361 ++++ .../gcc/malloc_memcpy_strlen_memset_free.relf | 143 ++ .../gcc_O2/Makefile | 3 + .../malloc_memcpy_strlen_memset_free.adt | 741 ++++++++ .../malloc_memcpy_strlen_memset_free.bir | 348 ++++ .../malloc_memcpy_strlen_memset_free.relf | 143 ++ .../malloc_memcpy_strlen_memset_free.c | 29 + .../malloc_memcpy_strlen_memset_free.spec | 76 + 69 files changed, 20143 insertions(+), 926 deletions(-) create mode 100644 examples/http_parse_basic/beans create mode 100644 examples/http_parse_basic/example.bpl.orig create mode 100644 examples/http_parse_basic/example.bpl.rej create mode 100644 examples/http_parse_basic/example.model create mode 100644 examples/http_parse_basic/extraspec.bpl create mode 100644 examples/http_parse_basic/patch.diff create mode 100644 examples/http_parse_basic/simplememcpy.c create mode 100644 examples/http_parse_basic/smtout.log create mode 100644 examples/memcpy-variants/Makefile create mode 100644 examples/memcpy-variants/beans create mode 100644 examples/memcpy-variants/example.adt create mode 100644 examples/memcpy-variants/example.bil create mode 100644 examples/memcpy-variants/example.bpl.orig create mode 100644 examples/memcpy-variants/example.bpl.rej create mode 100644 examples/memcpy-variants/example.c create mode 100644 examples/memcpy-variants/example.model create mode 100644 examples/memcpy-variants/example.relf create mode 100644 examples/memcpy-variants/example.spec create mode 100644 examples/memcpy-variants/iterator.log create mode 100644 examples/memcpy-variants/memcpyspec-iterindex.spec create mode 100644 examples/memcpy-variants/simplememcpy.c create mode 100644 examples/memcpy-variants/smtout.log create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/Makefile create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang/Makefile create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/Makefile create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/extraspec.bpl create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc/Makefile create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.c create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/Makefile create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/Makefile create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/extraspec.bpl create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/Makefile create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.c create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec diff --git a/examples/http_parse_basic/Makefile b/examples/http_parse_basic/Makefile index 382de07ba..417f11423 100644 --- a/examples/http_parse_basic/Makefile +++ b/examples/http_parse_basic/Makefile @@ -1,6 +1,8 @@ result: example.bpl extraspec.bpl - boogie example.bpl extraspec.bpl /smoke | tee result + boogie example.bpl extraspec.bpl /mv example.model /proverLog lambdas.smt2 /smoke | tee resultlambdas + boogie example-nolambda.bpl extraspec.bpl /useArrayAxioms /mv example.model /smoke | tee resultaxioms + boogie example-nolambda.bpl extraspec.bpl /mv example.model | tee result a.out: example.c aarch64-linux-gnu-gcc example.c @@ -12,5 +14,6 @@ example.adt: a.out 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 + java -jar ../../target/scala-3.3.1/wptool-boogie-assembly-0.0.1.jar --adt example.adt --relf example.relf -o example-nolambda.bpl --spec example.spec diff --git a/examples/http_parse_basic/beans b/examples/http_parse_basic/beans new file mode 100644 index 000000000..faa922834 --- /dev/null +++ b/examples/http_parse_basic/beans @@ -0,0 +1,1128 @@ +// Boogie program verifier version 3.0.5.0, Copyright (c) 2003-2014, Microsoft. +// Command Line Options: /proverLog:smtout.log example.bpl extraspec.bpl /vcsSplitOnEveryAssert /printDesugared /printLambdaLifting /print beans + +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_R29: bool; + +var {:extern} Gamma_R30: bool; + +var {:extern} Gamma_R31: 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} R29: bv64; + +var {:extern} R30: bv64; + +var {:extern} R31: bv64; + +var {:extern} mem: [bv64]bv8; + +var {:extern} stack: [bv64]bv8; + +const {:extern} $buf_addr: bv64; + +axiom $buf_addr == 131200bv64; + +const {:extern} $password_addr: bv64; + +axiom $password_addr == 131168bv64; + +const {:extern} $stext_addr: bv64; + +axiom $stext_addr == 131176bv64; + +function {:extern} L(memory: [bv64]bv8, index: bv64) : bool +uses { +axiom (forall memory: [bv64]bv8, index: bv64 :: + {:extern} { L(memory, index): bool } + L(memory, index): bool <==> false); +} + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) : bv64; + +function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) : bv64; + +function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) : bv64; + +function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) : bv64; + +function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) : bool; + +function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) : bool; + +function {:inline} byte_extract64_64(value: bv64, offset: bv64) : bv8 +{ + bvlshr64(value, bvmul64(offset, 8bv64))[8:0] +} + +function {:extern} gamma_load32(gammaMap: [bv64]bool, index: bv64) : bool +uses { +axiom (forall gammaMap: [bv64]bool, index: bv64 :: + {:extern} { gamma_load32(gammaMap, index): bool } + gamma_load32(gammaMap, index): bool + <==> gammaMap[bvadd64(index, 3bv64)] + && + gammaMap[bvadd64(index, 2bv64)] + && + gammaMap[bvadd64(index, 1bv64)] + && gammaMap[index]); +} + +function {:extern} gamma_load64(gammaMap: [bv64]bool, index: bv64) : bool +uses { +axiom (forall gammaMap: [bv64]bool, index: bv64 :: + {:extern} { gamma_load64(gammaMap, index): bool } + gamma_load64(gammaMap, index): 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) : bool +uses { +axiom (forall gammaMap: [bv64]bool, index: bv64 :: + {:extern} { gamma_load8(gammaMap, index): bool } + gamma_load8(gammaMap, index): bool <==> gammaMap[index]); +} + +function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) : [bv64]bool +uses { +axiom (forall gammaMap: [bv64]bool, index: bv64, value: bool :: + {:extern} { gamma_store64(gammaMap, index, value): [bv64]bool } + gamma_store64(gammaMap, index, value): [bv64]bool + == lambda#0(index, 8bv64, value, gammaMap)); +} + +function {:extern} gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) : [bv64]bool +uses { +axiom (forall gammaMap: [bv64]bool, index: bv64, value: bool :: + {:extern} { gamma_store8(gammaMap, index, value): [bv64]bool } + gamma_store8(gammaMap, index, value): [bv64]bool == gammaMap[index := value]); +} + +function {:inline} in_bounds64_le(base: bv64, len: bv64, i: bv64) : 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))) +} + +function {:extern} memory_load64_le(memory: [bv64]bv8, index: bv64) : bv64 +uses { +axiom (forall memory: [bv64]bv8, index: bv64 :: + {:extern} { memory_load64_le(memory, index): bv64 } + memory_load64_le(memory, index): 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) : bv8 +uses { +axiom (forall memory: [bv64]bv8, index: bv64 :: + {:extern} { memory_load8_le(memory, index): bv8 } + memory_load8_le(memory, index): bv8 == memory[index]); +} + +function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) : [bv64]bv8 +uses { +axiom (forall memory: [bv64]bv8, index: bv64, value: bv64 :: + {:extern} { memory_store64_le(memory, index, value): [bv64]bv8 } + memory_store64_le(memory, index, value): [bv64]bv8 + == lambda#1(index, 8bv64, value, index, memory)); +} + +function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) : [bv64]bv8 +uses { +axiom (forall memory: [bv64]bv8, index: bv64, value: bv8 :: + {:extern} { memory_store8_le(memory, index, value): [bv64]bv8 } + memory_store8_le(memory, index, value): [bv64]bv8 == memory[index := value]); +} + +procedure {:extern} rely(); + modifies Gamma_mem, 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, 130504bv64) == 208bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free ensures memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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); + + + +implementation {:extern} rely_transitive() +{ + call rely(); + call rely(); +} + + + +procedure {:extern} rely_reflexive(); + + + +procedure {:extern} guarantee_reflexive(); + modifies Gamma_mem, mem; + + + +procedure #free(); + 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, 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, 130504bv64) == 208bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free requires memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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; + modifies Gamma_R16, Gamma_R17, R16, R17; + 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, 130504bv64) == 208bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free ensures memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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(); + 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) == 0bv8; + free requires memory_load8_le(mem, 131170bv64) == 0bv8; + free requires memory_load8_le(mem, 131171bv64) == 0bv8; + 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) == 104bv8; + free requires memory_load8_le(mem, 131177bv64) == 101bv8; + free requires memory_load8_le(mem, 131178bv64) == 108bv8; + free requires memory_load8_le(mem, 131179bv64) == 108bv8; + free requires memory_load8_le(mem, 131180bv64) == 111bv8; + free requires memory_load8_le(mem, 131181bv64) == 111bv8; + free requires memory_load8_le(mem, 131182bv64) == 0bv8; + free requires memory_load8_le(mem, 131183bv64) == 0bv8; + free requires memory_load8_le(mem, 131184bv64) == 0bv8; + free requires memory_load8_le(mem, 131185bv64) == 0bv8; + free requires memory_load8_le(mem, 131186bv64) == 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, 130504bv64) == 208bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free requires memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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; + modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, 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, R29, R30, R31, malloc_base, malloc_count, malloc_end, mem, stack; + free ensures Gamma_R19 <==> old(Gamma_R19); + free ensures Gamma_R29 <==> old(Gamma_R29); + free ensures Gamma_R31 <==> old(Gamma_R31); + free ensures R19 == old(R19); + 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, 130504bv64) == 208bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free ensures memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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; + + + +implementation main() +{ + var #4: bv64; + var Gamma_#4: 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 "%00000384"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); + assume {:captureState "%0000038a"} true; + R31, Gamma_R31 := #4, Gamma_#4; + R29, Gamma_R29 := R31, Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); + assume {:captureState "%0000039c"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); + assume {:captureState "%000003a3"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); + assume {:captureState "%000003aa"} true; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2288bv64, true; + call malloc(); + assume {:captureState "l000003b9"} true; + R1, Gamma_R1 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + assert L(mem, R0) ==> Gamma_R1; + mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); + assume {:captureState "%000003d0"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; + R30, Gamma_R30 := 2328bv64, true; + call strlen(); + assume {:captureState "l000003f7"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2348bv64, true; + call memcpy(); + assume {:captureState "l00000416"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R30, Gamma_R30 := 2364bv64, true; + call puts(); + assume {:captureState "l00000430"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R0, Gamma_R0 := bvadd64(R0, 2bv64), Gamma_R0; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); + assume {:captureState "%0000044e"} true; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); + call rely(); + assert L(mem, R0) ==> true; + mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%0000045c"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R30, Gamma_R30 := 2420bv64, true; + call strlen(); + assume {:captureState "l00000489"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R1, Gamma_R1 := 1bv64, true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2436bv64, true; + call memset(); + assume {:captureState "l000004a2"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R30, Gamma_R30 := 2452bv64, true; + call #free(); + assume {:captureState "l000004bc"} true; + R0, Gamma_R0 := 0bv64, true; + R19, Gamma_R19 := 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; + goto l000003b9; + + l000003b9: + assume {:captureState "l000003b9"} true; + R1, Gamma_R1 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + assert L(mem, R0) ==> Gamma_R1; + mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); + assume {:captureState "%000003d0"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; + R30, Gamma_R30 := 2328bv64, true; + call strlen(); + goto l000003f7; + + l000003f7: + assume {:captureState "l000003f7"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2348bv64, true; + call memcpy(); + goto l00000416; + + l00000416: + assume {:captureState "l00000416"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R30, Gamma_R30 := 2364bv64, true; + call puts(); + goto l00000430; + + l00000430: + assume {:captureState "l00000430"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R0, Gamma_R0 := bvadd64(R0, 2bv64), Gamma_R0; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); + assume {:captureState "%0000044e"} true; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); + call rely(); + assert L(mem, R0) ==> true; + mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%0000045c"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R30, Gamma_R30 := 2420bv64, true; + call strlen(); + goto l00000489; + + l00000489: + assume {:captureState "l00000489"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R1, Gamma_R1 := 1bv64, true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2436bv64, true; + call memset(); + goto l000004a2; + + l000004a2: + assume {:captureState "l000004a2"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); + R30, Gamma_R30 := 2452bv64, true; + call #free(); + goto l000004bc; + + l000004bc: + assume {:captureState "l000004bc"} true; + R0, Gamma_R0 := 0bv64, true; + R19, Gamma_R19 := 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(); + requires bvugt64(R0, 0bv64); + requires Gamma_R0 <==> 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, 130504bv64) == 208bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free requires memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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; + 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; + 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, 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, 130504bv64) == 208bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free ensures memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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(); + requires bvugt64(R0, bvadd64(R1, R2)) || bvugt64(R1, bvadd64(R0, R2)); + requires bvugt64(bvadd64(R0, R2), R0) && bvugt64(bvadd64(R1, R2), R1); + 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, 130504bv64) == 208bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free requires memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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; + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + 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, 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, 130504bv64) == 208bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free ensures memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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(); + requires Gamma_R1; + 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, 130504bv64) == 208bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free requires memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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; + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + 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, 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, 130504bv64) == 208bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free ensures memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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(); + 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, 130504bv64) == 208bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free requires memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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; + modifies Gamma_R16, Gamma_R17, R16, R17; + 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, 130504bv64) == 208bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free ensures memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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(); + 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, 130504bv64) == 208bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free requires memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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; + modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; + 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, 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, 130504bv64) == 208bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 128bv8; + free ensures memory_load8_le(mem, 130513bv64) == 8bv8; + 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) == 212bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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; + + + +function {:bvbuiltin "bvuge"} bvuge64(bv64, bv64) : bool; + +function {:bvbuiltin "bvugt"} bvugt64(bv64, bv64) : 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; + +function {:inline} in_bounds64(base: bv64, len: bv64, i: bv64) : 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))) +} + +// auto-generated lambda function +function lambda#0(l#0: bv64, l#1: bv64, l#2: bool, l#3: [bv64]bool) : [bv64]bool +uses { +axiom (forall l#0: bv64, l#1: bv64, l#2: bool, l#3: [bv64]bool, i: bv64 :: + { lambda#0(l#0, l#1, l#2, l#3)[i] } + lambda#0(l#0, l#1, l#2, l#3)[i] + == (if in_bounds64(l#0, l#1, i) then l#2 else l#3[i])); +} + +// auto-generated lambda function +function lambda#1(l#0: bv64, l#1: bv64, l#2: bv64, l#3: bv64, l#4: [bv64]bv8) : [bv64]bv8 +uses { +axiom (forall l#0: bv64, l#1: bv64, l#2: bv64, l#3: bv64, l#4: [bv64]bv8, i: bv64 :: + { lambda#1(l#0, l#1, l#2, l#3, l#4)[i] } + lambda#1(l#0, l#1, l#2, l#3, l#4)[i] + == (if in_bounds64(l#0, l#1, i) + then byte_extract64_64(l#2, bvsub64(i, l#3)) + else l#4[i])); +} diff --git a/examples/http_parse_basic/example.adt b/examples/http_parse_basic/example.adt index cec42f65d..8905411b4 100644 --- a/examples/http_parse_basic/example.adt +++ b/examples/http_parse_basic/example.adt @@ -1,12 +1,12 @@ 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 2504 20 2504)\n(code-region 1984 520 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 244)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2504 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2504 20)\n(llvm:code-entry .text 1984 520)\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 2528 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2768)\n(llvm:elf-program-header 01 568 27)\n(llvm:elf-program-header 00 64 504)\n(llvm:elf-program-header-flags 08 false true false false)\n(llvm:elf-program-header-flags 07 false true true false)\n(llvm:elf-program-header-flags 06 false true false false)\n(llvm:elf-program-header-flags 05 false true false false)\n(llvm:elf-program-header-flags 04 false true true false)\n(llvm:elf-program-header-flags 03 true true true false)\n(llvm:elf-program-header-flags 02 true true false true)\n(llvm:elf-program-header-flags 01 false true false false)\n(llvm:elf-program-header-flags 00 false true false false)\n(llvm:elf-virtual-program-header 08 130504 568)\n(llvm:elf-virtual-program-header 07 0 0)\n(llvm:elf-virtual-program-header 06 2528 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2768)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68706)\n(llvm:section-entry .strtab 0 666 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2592 176 2592)\n(llvm:section-entry .eh_frame_hdr 2528 60 2528)\n(llvm:section-entry .rodata 2524 4 2524)\n(llvm:section-entry .fini 2504 20 2504)\n(llvm:section-entry .text 1984 520 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 244 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2504 0 2504 2504)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2768 0)\n(mapped 130504 683 64968)\n(named-region 0 2768 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 520 .text)\n(named-region 2504 20 .fini)\n(named-region 2524 4 .rodata)\n(named-region 2528 60 .eh_frame_hdr)\n(named-region 2592 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 666 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2504 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 520)\n(section 2504 20)\n(section 2524 4)\n(section 2528 60)\n(section 2592 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 666)\n(section 0 259)\n(segment 0 2768 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 244 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2504 2504)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("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 1984 484 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 208)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 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 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2468 20)\n(llvm:code-entry .text 1984 484)\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 2492 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2728)\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 2492 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2728)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68706)\n(llvm:section-entry .strtab 0 666 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2552 176 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 1984 484 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 208 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 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 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2728 0)\n(mapped 130504 683 64968)\n(named-region 0 2728 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 484 .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 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 666 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 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 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 484)\n(section 2468 20)\n(section 2488 4)\n(section 2492 60)\n(section 2552 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 666)\n(section 0 259)\n(segment 0 2728 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 208 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2468 2468)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xe0\x09\x00\x00\x00\x00\x00\x00\xe0\x09\x00\x00\x00\x00\x00\x00\xe0\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\x23\x7b\xc1\x3c\x50\xe7\x64\xfa\xd4\xa5\x37\x98\xa4\x71\x56\x77\xa9\x39\xe0\x85\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00"), -Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xe0\x09\x00\x00\x00\x00\x00\x00\xe0\x09\x00\x00\x00\x00\x00\x00\xe0\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\x23\x7b\xc1\x3c\x50\xe7\x64\xfa\xd4\xa5\x37\x98\xa4\x71\x56\x77\xa9\x39\xe0\x85\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x00\x01\x00\x90\x00\x80\x01\x91\x01\x00\x40\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x01\x08\x00\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x86\xff\xff\x97\x00\x04\x00\x91\x90\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9"), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xc0\x80\x71\xa1\x26\xe7\x92\x04\xef\xf5\x2b\x63\xc0\x63\x3d\xd3\xcb\x73\x79\x23\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00"), +Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xc0\x80\x71\xa1\x26\xe7\x92\x04\xef\xf5\x2b\x63\xc0\x63\x3d\xd3\xcb\x73\x79\x23\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), -Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x23\x7b\xc1\x3c\x50\xe7\x64\xfa\xd4\xa5\x37\x98\xa4\x71\x56\x77\xa9\x39\xe0\x85"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xc0\x80\x71\xa1\x26\xe7\x92\x04\xef\xf5\x2b\x63\xc0\x63\x3d\xd3\xcb\x73\x79\x23"), 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"), @@ -17,18 +17,18 @@ Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x0 Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x9C8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9DC, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9E0, "\x01\x1b\x03\x3b\x3c\x00\x00\x00\x06\x00\x00\x00\xe0\xfd\xff\xff\x54\x00\x00\x00\x30\xfe\xff\xff\x68\x00\x00\x00\x60\xfe\xff\xff\x7c\x00\x00\x00\xa0\xfe\xff\xff\x90\x00\x00\x00\xf0\xfe\xff\xff\xb4\x00\x00\x00\xf4\xfe\xff\xff\xc8\x00\x00\x00"), -Section(".eh_frame", 0xA20, "\x10\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x04\x78\x1e\x01\x1b\x0c\x1f\x00\x10\x00\x00\x00\x18\x00\x00\x00\x84\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xc0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\xdc\xfd\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x08\xfe\xff\xff\x48\x00\x00\x00\x00\x41\x0e\x20\x9d\x04\x9e\x03\x42\x93\x02\x4e\xde\xdd\xd3\x0e\x00\x00\x00\x00\x10\x00\x00\x00\x78\x00\x00\x00\x34\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x24\xfe\xff\xff\xf4\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x79\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), +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\x04\xfe\xff\xff\x50\x00\x00\x00\x54\xfe\xff\xff\x64\x00\x00\x00\x84\xfe\xff\xff\x78\x00\x00\x00\xc4\xfe\xff\xff\x8c\x00\x00\x00\x14\xff\xff\xff\xb0\x00\x00\x00\x18\xff\xff\xff\xc4\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\xac\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xe8\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x04\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x30\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\x5c\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x4c\xfe\xff\xff\xd0\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x70\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xc8\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(".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\xa4\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), -Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x68\x65\x6c\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x00\x01\x00\x90\x00\x80\x01\x91\x01\x00\x40\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x01\x08\x00\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x86\xff\xff\x97\x00\x04\x00\x91\x90\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x7a\xff\xff\x97\x00\x04\x00\x91\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x70\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x8c\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x04\x00\x91\xe0\x17\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x64\xff\xff\x97\x00\x04\x00\x91\xe2\x03\x00\xaa\x01\x00\x80\x52\xe0\x03\x13\xaa\x6f\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x7b\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xACF), Attr("segment","02 0 2768")), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x68\x65\x6c\x6c\x6f\x6f\x00\x00\x00\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x08\x00\x91\xe0\x17\x00\xf9\xe0\x17\x40\xf9\x1f\x00\x00\x39\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6c\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x78\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x84\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xAA7), Attr("segment","02 0 2728")), Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), Annotation(Region(0x0,0x299), Attr("section","\".strtab\"")), @@ -51,12 +51,12 @@ Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x9C7), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x9C7), Attr("symbol-info","main 0x8D4 244")), -Annotation(Region(0x9C8,0x9DB), Attr("section","\".fini\"")), -Annotation(Region(0x9DC,0x9DF), Attr("section","\".rodata\"")), -Annotation(Region(0x9E0,0xA1B), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0xA20,0xACF), Attr("section","\".eh_frame\"")), +Annotation(Region(0x8D4,0x9A3), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x9A3), Attr("symbol-info","main 0x8D4 208")), +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,0xAA7), Attr("section","\".eh_frame\"")), Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), @@ -64,742 +64,717 @@ Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), -Annotation(Region(0x7C0,0x9C7), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x9C7), Attr("code-region","()")), -Annotation(Region(0x9C8,0x9DB), Attr("code-region","()"))]), -Program(Tid(2_270, "%000008de"), Attrs([]), - Subs([Sub(Tid(2_199, "@__cxa_finalize"), +Annotation(Region(0x7C0,0x9A3), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x9A3), Attr("code-region","()")), +Annotation(Region(0x9A4,0x9B7), Attr("code-region","()"))]), +Program(Tid(2_171, "%0000087b"), Attrs([]), + Subs([Sub(Tid(2_100, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_271, "%000008df"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_172, "%0000087c"), 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_390, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_300, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_778, "%000006f2"), Attrs([Attr("address","0x740"), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x740"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_785, "%000006f9"), Attrs([Attr("address","0x744"), +Def(Tid(1_695, "%0000069f"), 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_791, "%000006ff"), Attrs([Attr("address","0x748"), +Def(Tid(1_701, "%000006a5"), 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_796, "%00000704"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_706, "%000006aa"), Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_200, "@__do_global_dtors_aux"), +Sub(Tid(2_101, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_272, "%000008e0"), + "__do_global_dtors_aux", Args([Arg(Tid(2_173, "%0000087d"), 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(835, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(839, "%00000347"), +Blks([Blk(Tid(799, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(803, "%00000323"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x880"), +Def(Tid(809, "%00000329"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(851, "%00000353"), Attrs([Attr("address","0x880"), +Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(855, "%00000357"), Attrs([Attr("address","0x880"), +Def(Tid(819, "%00000333"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(861, "%0000035d"), +Var("#3",Imm(64))), Def(Tid(825, "%00000339"), Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(869, "%00000365"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(833, "%00000341"), Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(874, "%0000036a"), Attrs([Attr("address","0x88C"), +Def(Tid(838, "%00000346"), Attrs([Attr("address","0x88C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(881, "%00000371"), Attrs([Attr("address","0x890"), +Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x890"), Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), -Jmps([Goto(Tid(887, "%00000377"), Attrs([Attr("address","0x894"), +Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x894"), Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(885, "%00000375"))), -Goto(Tid(2_260, "%000008d4"), Attrs([]), Int(1,1), -Direct(Tid(1_335, "%00000537")))])), Blk(Tid(1_335, "%00000537"), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(849, "%00000351"))), +Goto(Tid(2_161, "%00000871"), Attrs([]), Int(1,1), +Direct(Tid(1_245, "%000004dd")))])), Blk(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_338, "%0000053a"), Attrs([Attr("address","0x898"), +Defs([Def(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x898"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_345, "%00000541"), Attrs([Attr("address","0x89C"), +Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x89C"), Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_351, "%00000547"), Attrs([Attr("address","0x8A0"), +Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_349, "%00000545"))), Goto(Tid(2_261, "%000008d5"), Attrs([]), - Int(1,1), Direct(Tid(1_374, "%0000055e")))])), Blk(Tid(1_374, "%0000055e"), +Direct(Tid(1_259, "%000004eb"))), Goto(Tid(2_162, "%00000872"), Attrs([]), + Int(1,1), Direct(Tid(1_284, "%00000504")))])), Blk(Tid(1_284, "%00000504"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_377, "%00000561"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_287, "%00000507"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x8A8"), Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_299, "%00000513"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_392, "%00000570"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(1_302, "%00000516"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_199, "@__cxa_finalize")),Direct(Tid(1_349, "%00000545"))))])), -Blk(Tid(1_349, "%00000545"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_357, "%0000054d"), Attrs([Attr("address","0x8B0"), +(Direct(Tid(2_100, "@__cxa_finalize")),Direct(Tid(1_259, "%000004eb"))))])), +Blk(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_267, "%000004f3"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_213, "@deregister_tm_clones")),Direct(Tid(1_361, "%00000551"))))])), -Blk(Tid(1_361, "%00000551"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_114, "@deregister_tm_clones")),Direct(Tid(1_271, "%000004f7"))))])), +Blk(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x8B4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_372, "%0000055c"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_282, "%00000502"), Attrs([Attr("address","0x8B8"), Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), -Jmps([Goto(Tid(2_262, "%000008d6"), Attrs([]), Int(1,1), -Direct(Tid(885, "%00000375")))])), Blk(Tid(885, "%00000375"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(895, "%0000037f"), +Jmps([Goto(Tid(2_163, "%00000873"), Attrs([]), Int(1,1), +Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(859, "%0000035b"), Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8C0"), +Def(Tid(866, "%00000362"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(907, "%0000038b"), Attrs([Attr("address","0x8C0"), +Def(Tid(871, "%00000367"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(911, "%0000038f"), Attrs([Attr("address","0x8C0"), +Def(Tid(875, "%0000036b"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(916, "%00000394"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(880, "%00000370"), Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_204, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_105, "@__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_273, "%000008e1"), + Args([Arg(Tid(2_174, "%0000087e"), 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_274, "%000008e2"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_175, "%0000087f"), 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_275, "%000008e3"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_176, "%00000880"), 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_276, "%000008e4"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_177, "%00000881"), 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_277, "%000008e5"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_178, "%00000882"), 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(668, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(632, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_756, "%000006dc"), Attrs([Attr("address","0x730"), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x730"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_763, "%000006e3"), Attrs([Attr("address","0x734"), +Def(Tid(1_673, "%00000689"), 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_769, "%000006e9"), Attrs([Attr("address","0x738"), +Def(Tid(1_679, "%0000068f"), 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_774, "%000006ee"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_684, "%00000694"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_205, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9C8")]), - "_fini", Args([Arg(Tid(2_278, "%000008e6"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_106, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A4")]), + "_fini", Args([Arg(Tid(2_179, "%00000883"), 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","0x9C8")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0x9CC"), + Attrs([Attr("address","0x9A4")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + 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(44, "%0000002c"), Attrs([Attr("address","0x9CC"), +Def(Tid(44, "%0000002c"), 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(50, "%00000032"), Attrs([Attr("address","0x9CC"), +Def(Tid(50, "%00000032"), 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(54, "%00000036"), Attrs([Attr("address","0x9CC"), +Def(Tid(54, "%00000036"), Attrs([Attr("address","0x9A8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9D0"), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9AC"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9D4"), +Def(Tid(67, "%00000043"), 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(72, "%00000048"), Attrs([Attr("address","0x9D4"), +Def(Tid(72, "%00000048"), 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(76, "%0000004c"), Attrs([Attr("address","0x9D4"), +Def(Tid(76, "%0000004c"), 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(81, "%00000051"), - Attrs([Attr("address","0x9D8"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_206, "@_init"), + Attrs([Attr("address","0x9B4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_107, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_279, "%000008e7"), + "_init", Args([Arg(Tid(2_180, "%00000884"), 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_956, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_866, "@_init"), Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_962, "%000007aa"), Attrs([Attr("address","0x6DC"), +Defs([Def(Tid(1_872, "%00000750"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_968, "%000007b0"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_878, "%00000756"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_974, "%000007b6"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_978, "%000007ba"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#6",Imm(64))), Def(Tid(1_984, "%000007c0"), +Var("#6",Imm(64))), Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_989, "%000007c5"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_899, "%0000076b"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_991, "%000007c7"), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_211, "@call_weak_fn")),Direct(Tid(1_993, "%000007c9"))))])), -Blk(Tid(1_993, "%000007c9"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_998, "%000007ce"), Attrs([Attr("address","0x6E8"), +(Direct(Tid(2_112, "@call_weak_fn")),Direct(Tid(1_903, "%0000076f"))))])), +Blk(Tid(1_903, "%0000076f"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_908, "%00000774"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(2_003, "%000007d3"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_913, "%00000779"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(2_007, "%000007d7"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_917, "%0000077d"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_012, "%000007dc"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_922, "%00000782"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_207, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_108, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_280, "%000008e8"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_181, "%00000885"), 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(605, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(610, "%00000262"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(569, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(574, "%0000023e"), Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(615, "%00000267"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(579, "%00000243"), Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(621, "%0000026d"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(585, "%00000249"), Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(628, "%00000274"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x7D4"), +Def(Tid(598, "%00000256"), Attrs([Attr("address","0x7D4"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(640, "%00000280"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(604, "%0000025c"), Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(645, "%00000285"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(609, "%00000261"), Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(652, "%0000028c"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(616, "%00000268"), Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(657, "%00000291"), Attrs([Attr("address","0x7E4"), +Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x7E4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(662, "%00000296"), Attrs([Attr("address","0x7E8"), +Def(Tid(626, "%00000272"), Attrs([Attr("address","0x7E8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(667, "%0000029b"), Attrs([Attr("address","0x7EC"), +Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(670, "%0000029e"), Attrs([Attr("address","0x7EC"), +Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_204, "@__libc_start_main")),Direct(Tid(672, "%000002a0"))))])), -Blk(Tid(672, "%000002a0"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(675, "%000002a3"), Attrs([Attr("address","0x7F0"), +(Direct(Tid(2_105, "@__libc_start_main")),Direct(Tid(636, "%0000027c"))))])), +Blk(Tid(636, "%0000027c"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(678, "%000002a6"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(642, "%00000282"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_210, "@abort")),Direct(Tid(2_263, "%000008d7"))))])), -Blk(Tid(2_263, "%000008d7"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_264, "%000008d8"), Attrs([]), Int(1,1), -(Direct(Tid(2_211, "@call_weak_fn")),))]))])), Sub(Tid(2_210, "@abort"), +(Direct(Tid(2_111, "@abort")),Direct(Tid(2_164, "%00000874"))))])), +Blk(Tid(2_164, "%00000874"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_165, "%00000875"), Attrs([]), Int(1,1), +(Direct(Tid(2_112, "@call_weak_fn")),))]))])), Sub(Tid(2_111, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(676, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_866, "%0000074a"), Attrs([Attr("address","0x780"), +Blks([Blk(Tid(640, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_873, "%00000751"), Attrs([Attr("address","0x784"), +Def(Tid(1_783, "%000006f7"), 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_879, "%00000757"), Attrs([Attr("address","0x788"), +Def(Tid(1_789, "%000006fd"), 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_884, "%0000075c"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_794, "%00000702"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_211, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_112, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_281, "%000008e9"), + "call_weak_fn", Args([Arg(Tid(2_182, "%00000886"), 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(680, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(683, "%000002ab"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(644, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(647, "%00000287"), Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(690, "%000002b2"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(654, "%0000028e"), Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(696, "%000002b8"), Attrs([Attr("address","0x7FC"), +Jmps([Goto(Tid(660, "%00000294"), Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(694, "%000002b6"))), Goto(Tid(2_265, "%000008d9"), Attrs([]), - Int(1,1), Direct(Tid(1_454, "%000005ae")))])), Blk(Tid(694, "%000002b6"), +Direct(Tid(658, "%00000292"))), Goto(Tid(2_166, "%00000876"), Attrs([]), + Int(1,1), Direct(Tid(1_364, "%00000554")))])), Blk(Tid(658, "%00000292"), Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(702, "%000002be"), Attrs([Attr("address","0x804"), +Jmps([Call(Tid(666, "%0000029a"), Attrs([Attr("address","0x804"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_454, "%000005ae"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_457, "%000005b1"), Attrs([Attr("address","0x800"), +Blk(Tid(1_364, "%00000554"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_367, "%00000557"), Attrs([Attr("address","0x800"), Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_455, "@__gmon_start__")))])), Blk(Tid(1_455, "@__gmon_start__"), +Direct(Tid(1_365, "@__gmon_start__")))])), Blk(Tid(1_365, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x774"), +Def(Tid(1_761, "%000006e1"), 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_857, "%00000741"), Attrs([Attr("address","0x778"), +Def(Tid(1_767, "%000006e7"), 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_862, "%00000746"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_772, "%000006ec"), Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_213, "@deregister_tm_clones"), +Sub(Tid(2_114, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_282, "%000008ea"), + "deregister_tm_clones", Args([Arg(Tid(2_183, "%00000887"), 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(708, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(711, "%000002c7"), +Blks([Blk(Tid(672, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(675, "%000002a3"), Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(717, "%000002cd"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(722, "%000002d2"), Attrs([Attr("address","0x818"), +Def(Tid(686, "%000002ae"), Attrs([Attr("address","0x818"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(728, "%000002d8"), Attrs([Attr("address","0x81C"), +Def(Tid(692, "%000002b4"), Attrs([Attr("address","0x81C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(734, "%000002de"), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(698, "%000002ba"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(739, "%000002e3"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(745, "%000002e9"), Attrs([Attr("address","0x820"), +Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x820"), +Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x820"), +Def(Tid(719, "%000002cf"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(759, "%000002f7"), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(765, "%000002fd"), Attrs([Attr("address","0x824"), +Jmps([Goto(Tid(729, "%000002d9"), Attrs([Attr("address","0x824"), Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(763, "%000002fb"))), Goto(Tid(2_266, "%000008da"), Attrs([]), - Int(1,1), Direct(Tid(1_424, "%00000590")))])), Blk(Tid(1_424, "%00000590"), +Direct(Tid(727, "%000002d7"))), Goto(Tid(2_167, "%00000877"), Attrs([]), + Int(1,1), Direct(Tid(1_334, "%00000536")))])), Blk(Tid(1_334, "%00000536"), Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_427, "%00000593"), Attrs([Attr("address","0x828"), +Defs([Def(Tid(1_337, "%00000539"), Attrs([Attr("address","0x828"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_434, "%0000059a"), Attrs([Attr("address","0x82C"), +Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x82C"), Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_439, "%0000059f"), Attrs([Attr("address","0x830"), +Jmps([Goto(Tid(1_349, "%00000545"), Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(763, "%000002fb"))), Goto(Tid(2_267, "%000008db"), Attrs([]), - Int(1,1), Direct(Tid(1_443, "%000005a3")))])), Blk(Tid(763, "%000002fb"), +Direct(Tid(727, "%000002d7"))), Goto(Tid(2_168, "%00000878"), Attrs([]), + Int(1,1), Direct(Tid(1_353, "%00000549")))])), Blk(Tid(727, "%000002d7"), Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(771, "%00000303"), Attrs([Attr("address","0x83C"), +Jmps([Call(Tid(735, "%000002df"), Attrs([Attr("address","0x83C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_443, "%000005a3"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_447, "%000005a7"), Attrs([Attr("address","0x834"), +Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_357, "%0000054d"), Attrs([Attr("address","0x834"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_452, "%000005ac"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_362, "%00000552"), Attrs([Attr("address","0x838"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_216, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_283, "%000008eb"), +Sub(Tid(2_117, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_184, "%00000888"), 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(922, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(886, "@frame_dummy"), Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(924, "%0000039c"), Attrs([Attr("address","0x8D0"), +Jmps([Call(Tid(888, "%00000378"), Attrs([Attr("address","0x8D0"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_223, "@register_tm_clones")),))]))])), Sub(Tid(2_217, "@free"), +(Direct(Tid(2_124, "@register_tm_clones")),))]))])), Sub(Tid(2_118, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_284, "%000008ec"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_185, "%00000889"), 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_298, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_910, "%00000776"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_208, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_820, "%0000071c"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_917, "%0000077d"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_827, "%00000723"), 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_923, "%00000783"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_833, "%00000729"), 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_928, "%00000788"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_838, "%0000072e"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_218, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_119, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_285, "%000008ed"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_186, "%0000088a"), 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_286, "%000008ee"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_187, "%0000088b"), 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_287, "%000008ef"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_188, "%0000088c"), 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(926, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(930, "%000003a2"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(890, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(894, "%0000037e"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(936, "%000003a8"), Attrs([Attr("address","0x8D4"), +Def(Tid(900, "%00000384"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(942, "%000003ae"), Attrs([Attr("address","0x8D4"), +Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x8D4"), +Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#4",Imm(64))), Def(Tid(952, "%000003b8"), +Var("#4",Imm(64))), Def(Tid(916, "%00000394"), Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(960, "%000003c0"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(924, "%0000039c"), Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(967, "%000003c7"), Attrs([Attr("address","0x8E0"), +Def(Tid(931, "%000003a3"), Attrs([Attr("address","0x8E0"), Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(974, "%000003ce"), Attrs([Attr("address","0x8E4"), +Def(Tid(938, "%000003aa"), Attrs([Attr("address","0x8E4"), Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x8E8"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(985, "%000003d9"), Attrs([Attr("address","0x8EC"), -Attr("insn","add x0, x0, #0x60")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(96,64))), Def(Tid(992, "%000003e0"), - Attrs([Attr("address","0x8F0"), Attr("insn","ldrb w1, [x0]")]), - Var("R1",Imm(64)), -UNSIGNED(64,Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),8))), -Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x8F4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8F8"), -Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_011, "%000003f3"), - Attrs([Attr("address","0x8FC"), Attr("insn","strb w1, [x0, #0x2]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(2,64)),Extract(7,0,Var("R1",Imm(64))),LittleEndian(),8)), -Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x900"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x904"), -Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_027, "%00000403"), - Attrs([Attr("address","0x908"), Attr("insn","bl #-0x1e8")]), - Var("R30",Imm(64)), Int(2316,64))]), Jmps([Call(Tid(1_030, "%00000406"), - Attrs([Attr("address","0x908"), Attr("insn","bl #-0x1e8")]), Int(1,1), -(Direct(Tid(2_226, "@strlen")),Direct(Tid(1_032, "%00000408"))))])), -Blk(Tid(1_032, "%00000408"), Attrs([Attr("address","0x90C")]), Phis([]), -Defs([Def(Tid(1_036, "%0000040c"), Attrs([Attr("address","0x90C"), -Attr("insn","add x0, x0, #0x1")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_041, "%00000411"), - Attrs([Attr("address","0x910"), Attr("insn","bl #-0x1c0")]), - Var("R30",Imm(64)), Int(2324,64))]), Jmps([Call(Tid(1_044, "%00000414"), - Attrs([Attr("address","0x910"), Attr("insn","bl #-0x1c0")]), Int(1,1), -(Direct(Tid(2_219, "@malloc")),Direct(Tid(1_046, "%00000416"))))])), -Blk(Tid(1_046, "%00000416"), Attrs([Attr("address","0x914")]), Phis([]), -Defs([Def(Tid(1_050, "%0000041a"), Attrs([Attr("address","0x914"), +Def(Tid(943, "%000003af"), Attrs([Attr("address","0x8E8"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(951, "%000003b7"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_120, "@malloc")),Direct(Tid(953, "%000003b9"))))])), +Blk(Tid(953, "%000003b9"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8F0"), Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x918"), +Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x8F4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x91C"), +Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x8F8"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_069, "%0000042d"), - Attrs([Attr("address","0x920"), Attr("insn","str x1, [x0]")]), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(976, "%000003d0"), + Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x924"), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x900"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x928"), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x904"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_087, "%0000043f"), - Attrs([Attr("address","0x92C"), Attr("insn","ldr x19, [x0]")]), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(994, "%000003e2"), + Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_092, "%00000444"), Attrs([Attr("address","0x930"), +Def(Tid(999, "%000003e7"), Attrs([Attr("address","0x90C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x934"), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x910"), Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_103, "%0000044f"), - Attrs([Attr("address","0x938"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2364,64))]), Jmps([Call(Tid(1_105, "%00000451"), - Attrs([Attr("address","0x938"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_226, "@strlen")),Direct(Tid(1_107, "%00000453"))))])), -Blk(Tid(1_107, "%00000453"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x93C"), -Attr("insn","add x0, x0, #0x1")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_117, "%0000045d"), - Attrs([Attr("address","0x940"), Attr("insn","mov x2, x0")]), - Var("R2",Imm(64)), Var("R0",Imm(64))), Def(Tid(1_122, "%00000462"), - Attrs([Attr("address","0x944"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(1_128, "%00000468"), - Attrs([Attr("address","0x948"), Attr("insn","add x1, x0, #0x68")]), - Var("R1",Imm(64)), PLUS(Var("R0",Imm(64)),Int(104,64))), -Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x94C"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_139, "%00000473"), Attrs([Attr("address","0x950"), -Attr("insn","bl #-0x240")]), Var("R30",Imm(64)), Int(2388,64))]), -Jmps([Call(Tid(1_142, "%00000476"), Attrs([Attr("address","0x950"), -Attr("insn","bl #-0x240")]), Int(1,1), -(Direct(Tid(2_220, "@memcpy")),Direct(Tid(1_144, "%00000478"))))])), -Blk(Tid(1_144, "%00000478"), Attrs([Attr("address","0x954")]), Phis([]), -Defs([Def(Tid(1_147, "%0000047b"), Attrs([Attr("address","0x954"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_010, "%000003f2"), + Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), + Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_013, "%000003f5"), + Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_015, "%000003f7"))))])), +Blk(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x918"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x91C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x920"), +Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_036, "%0000040c"), + Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_041, "%00000411"), + Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), + Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_044, "%00000414"), + Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_121, "@memcpy")),Direct(Tid(1_046, "%00000416"))))])), +Blk(Tid(1_046, "%00000416"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_049, "%00000419"), Attrs([Attr("address","0x92C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x958"), +Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x930"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_160, "%00000488"), - Attrs([Attr("address","0x95C"), Attr("insn","ldr x0, [x0]")]), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_062, "%00000426"), + Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2404,64))]), -Jmps([Call(Tid(1_168, "%00000490"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x1d0")]), Int(1,1), -(Direct(Tid(2_222, "@puts")),Direct(Tid(1_170, "%00000492"))))])), -Blk(Tid(1_170, "%00000492"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x964"), +Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), +Jmps([Call(Tid(1_070, "%0000042e"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1a8")]), Int(1,1), +(Direct(Tid(2_123, "@puts")),Direct(Tid(1_072, "%00000430"))))])), +Blk(Tid(1_072, "%00000430"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x93C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x968"), +Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x940"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_186, "%000004a2"), - Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_088, "%00000440"), + Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_192, "%000004a8"), Attrs([Attr("address","0x970"), -Attr("insn","add x0, x0, #0x1")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_200, "%000004b0"), - Attrs([Attr("address","0x974"), Attr("insn","str x0, [sp, #0x28]")]), +Def(Tid(1_094, "%00000446"), Attrs([Attr("address","0x948"), +Attr("insn","add x0, x0, #0x2")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(2,64))), Def(Tid(1_102, "%0000044e"), + Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x978"), +Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x950"), +Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), +Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x954"), +Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),LittleEndian(),8)), +Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x958"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x97C"), +Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x95C"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_218, "%000004c2"), - Attrs([Attr("address","0x980"), Attr("insn","ldr x19, [x0]")]), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_134, "%0000046e"), + Attrs([Attr("address","0x960"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x984"), +Def(Tid(1_139, "%00000473"), Attrs([Attr("address","0x964"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_229, "%000004cd"), Attrs([Attr("address","0x988"), +Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x968"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_236, "%000004d4"), - Attrs([Attr("address","0x98C"), Attr("insn","ldr x0, [x0]")]), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_152, "%00000480"), + Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x990"), -Attr("insn","bl #-0x270")]), Var("R30",Imm(64)), Int(2452,64))]), -Jmps([Call(Tid(1_243, "%000004db"), Attrs([Attr("address","0x990"), -Attr("insn","bl #-0x270")]), Int(1,1), -(Direct(Tid(2_226, "@strlen")),Direct(Tid(1_245, "%000004dd"))))])), -Blk(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x994")]), Phis([]), -Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x994"), -Attr("insn","add x0, x0, #0x1")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_255, "%000004e7"), - Attrs([Attr("address","0x998"), Attr("insn","mov x2, x0")]), - Var("R2",Imm(64)), Var("R0",Imm(64))), Def(Tid(1_260, "%000004ec"), - Attrs([Attr("address","0x99C"), Attr("insn","mov w1, #0x0")]), - Var("R1",Imm(64)), Int(0,64)), Def(Tid(1_266, "%000004f2"), - Attrs([Attr("address","0x9A0"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_271, "%000004f7"), - Attrs([Attr("address","0x9A4"), Attr("insn","bl #-0x244")]), - Var("R30",Imm(64)), Int(2472,64))]), Jmps([Call(Tid(1_274, "%000004fa"), - Attrs([Attr("address","0x9A4"), Attr("insn","bl #-0x244")]), Int(1,1), -(Direct(Tid(2_221, "@memset")),Direct(Tid(1_276, "%000004fc"))))])), -Blk(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x9A8")]), Phis([]), -Defs([Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x9A8"), +Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x250")]), Var("R30",Imm(64)), Int(2420,64))]), +Jmps([Call(Tid(1_159, "%00000487"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x250")]), Int(1,1), +(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_161, "%00000489"))))])), +Blk(Tid(1_161, "%00000489"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x974"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x978"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_176, "%00000498"), Attrs([Attr("address","0x97C"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x220")]), Var("R30",Imm(64)), Int(2436,64))]), +Jmps([Call(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x220")]), Int(1,1), +(Direct(Tid(2_122, "@memset")),Direct(Tid(1_186, "%000004a2"))))])), +Blk(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x984")]), Phis([]), +Defs([Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x984"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x9AC"), +Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x988"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_292, "%0000050c"), - Attrs([Attr("address","0x9B0"), Attr("insn","ldr x0, [x0]")]), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_202, "%000004b2"), + Attrs([Attr("address","0x98C"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_297, "%00000511"), Attrs([Attr("address","0x9B4"), -Attr("insn","bl #-0x214")]), Var("R30",Imm(64)), Int(2488,64))]), -Jmps([Call(Tid(1_300, "%00000514"), Attrs([Attr("address","0x9B4"), -Attr("insn","bl #-0x214")]), Int(1,1), -(Direct(Tid(2_217, "@free")),Direct(Tid(1_302, "%00000516"))))])), -Blk(Tid(1_302, "%00000516"), Attrs([Attr("address","0x9B8")]), Phis([]), -Defs([Def(Tid(1_305, "%00000519"), Attrs([Attr("address","0x9B8"), +Def(Tid(1_207, "%000004b7"), Attrs([Attr("address","0x990"), +Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2452,64))]), +Jmps([Call(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x990"), +Attr("insn","bl #-0x1f0")]), Int(1,1), +(Direct(Tid(2_118, "@free")),Direct(Tid(1_212, "%000004bc"))))])), +Blk(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x994")]), Phis([]), +Defs([Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x994"), Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_312, "%00000520"), Attrs([Attr("address","0x9BC"), +Def(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x998"), 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_319, "%00000527"), Attrs([Attr("address","0x9C0"), +Def(Tid(1_229, "%000004cd"), 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_324, "%0000052c"), Attrs([Attr("address","0x9C0"), +Def(Tid(1_234, "%000004d2"), 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_328, "%00000530"), Attrs([Attr("address","0x9C0"), +Def(Tid(1_238, "%000004d6"), 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_333, "%00000535"), - Attrs([Attr("address","0x9C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_219, "@malloc"), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_243, "%000004db"), + Attrs([Attr("address","0x9A0"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_120, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_288, "%000008f0"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_189, "%0000088d"), 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_289, "%000008f1"), +Var("R0",Imm(64)), In()), Arg(Tid(2_190, "%0000088e"), Attrs([Attr("warn-unused","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_042, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_800, "%00000708"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(949, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x750"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_807, "%0000070f"), Attrs([Attr("address","0x754"), +Def(Tid(1_717, "%000006b5"), 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_813, "%00000715"), Attrs([Attr("address","0x758"), +Def(Tid(1_723, "%000006bb"), 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_818, "%0000071a"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_728, "%000006c0"), Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_220, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_121, "@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_290, "%000008f2"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_191, "%0000088f"), 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_291, "%000008f3"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_192, "%00000890"), 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_292, "%000008f4"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_193, "%00000891"), 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_293, "%000008f5"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_194, "%00000892"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_140, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_712, "%000006b0"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_042, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x710"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x714"), +Def(Tid(1_629, "%0000065d"), 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_725, "%000006bd"), Attrs([Attr("address","0x718"), +Def(Tid(1_635, "%00000663"), Attrs([Attr("address","0x718"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_730, "%000006c2"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_640, "%00000668"), Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_221, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_122, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_294, "%000008f6"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_195, "%00000893"), 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_295, "%000008f7"), +Both()), Arg(Tid(2_196, "%00000894"), 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_296, "%000008f8"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_197, "%00000895"), 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_297, "%000008f9"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_198, "%00000896"), 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_272, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_822, "%0000071e"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_182, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_829, "%00000725"), Attrs([Attr("address","0x764"), +Def(Tid(1_739, "%000006cb"), 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_835, "%0000072b"), Attrs([Attr("address","0x768"), +Def(Tid(1_745, "%000006d1"), 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_840, "%00000730"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_750, "%000006d6"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_222, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_123, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_298, "%000008fa"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_199, "%00000897"), 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_299, "%000008fb"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_200, "%00000898"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_166, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_068, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_895, "%00000767"), Attrs([Attr("address","0x794"), +Def(Tid(1_805, "%0000070d"), 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_901, "%0000076d"), Attrs([Attr("address","0x798"), +Def(Tid(1_811, "%00000713"), 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_906, "%00000772"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_816, "%00000718"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_223, "@register_tm_clones"), +Sub(Tid(2_124, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_300, "%000008fc"), + "register_tm_clones", Args([Arg(Tid(2_201, "%00000899"), 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(773, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(776, "%00000308"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(737, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(740, "%000002e4"), Attrs([Attr("address","0x840"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(782, "%0000030e"), Attrs([Attr("address","0x844"), +Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x844"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(787, "%00000313"), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(793, "%00000319"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(757, "%000002f5"), Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(800, "%00000320"), Attrs([Attr("address","0x850"), +Def(Tid(764, "%000002fc"), Attrs([Attr("address","0x850"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(806, "%00000326"), Attrs([Attr("address","0x854"), +Def(Tid(770, "%00000302"), Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x858"), +Def(Tid(777, "%00000309"), Attrs([Attr("address","0x858"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(819, "%00000333"), Attrs([Attr("address","0x85C"), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x85C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(825, "%00000339"), Attrs([Attr("address","0x860"), +Jmps([Goto(Tid(789, "%00000315"), Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(823, "%00000337"))), Goto(Tid(2_268, "%000008dc"), Attrs([]), - Int(1,1), Direct(Tid(1_394, "%00000572")))])), Blk(Tid(1_394, "%00000572"), +Direct(Tid(787, "%00000313"))), Goto(Tid(2_169, "%00000879"), Attrs([]), + Int(1,1), Direct(Tid(1_304, "%00000518")))])), Blk(Tid(1_304, "%00000518"), Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_397, "%00000575"), Attrs([Attr("address","0x864"), +Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x864"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_404, "%0000057c"), Attrs([Attr("address","0x868"), +Def(Tid(1_314, "%00000522"), Attrs([Attr("address","0x868"), Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_409, "%00000581"), Attrs([Attr("address","0x86C"), +Jmps([Goto(Tid(1_319, "%00000527"), Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(823, "%00000337"))), Goto(Tid(2_269, "%000008dd"), Attrs([]), - Int(1,1), Direct(Tid(1_413, "%00000585")))])), Blk(Tid(823, "%00000337"), +Direct(Tid(787, "%00000313"))), Goto(Tid(2_170, "%0000087a"), Attrs([]), + Int(1,1), Direct(Tid(1_323, "%0000052b")))])), Blk(Tid(787, "%00000313"), Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(831, "%0000033f"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(795, "%0000031b"), Attrs([Attr("address","0x878"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_413, "%00000585"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_417, "%00000589"), Attrs([Attr("address","0x870"), +Blk(Tid(1_323, "%0000052b"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x870"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_422, "%0000058e"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_332, "%00000534"), Attrs([Attr("address","0x874"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_226, "@strlen"), +Sub(Tid(2_127, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_301, "%000008fd"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_202, "%0000089a"), 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_302, "%000008fe"), +In()), Arg(Tid(2_203, "%0000089b"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_028, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_011, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_734, "%000006c6"), Attrs([Attr("address","0x720"), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x720"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_741, "%000006cd"), Attrs([Attr("address","0x724"), +Def(Tid(1_651, "%00000673"), 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_747, "%000006d3"), Attrs([Attr("address","0x728"), +Def(Tid(1_657, "%00000679"), 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_752, "%000006d8"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_662, "%0000067e"), Attrs([Attr("address","0x72C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))]))]))) \ No newline at end of file diff --git a/examples/http_parse_basic/example.bil b/examples/http_parse_basic/example.bil index 3cf28c58e..a0ca2606b 100644 --- a/examples/http_parse_basic/example.bil +++ b/examples/http_parse_basic/example.bil @@ -1,71 +1,71 @@ -000008de: program -00000897: sub __cxa_finalize(__cxa_finalize_result) -000008df: __cxa_finalize_result :: out u32 = low:32[R0] - -0000056e: -000006f2: R16 := 0x20000 -000006f9: R17 := mem[R16 + 0x18, el]:u64 -000006ff: R16 := R16 + 0x18 -00000704: call R17 with noreturn - -00000898: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008e0: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000343: -00000347: #3 := R31 - 0x20 -0000034d: mem := mem with [#3, el]:u64 <- R29 -00000353: mem := mem with [#3 + 8, el]:u64 <- R30 -00000357: R31 := #3 -0000035d: R29 := R31 -00000365: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000036a: R19 := 0x20000 -00000371: R0 := pad:64[mem[R19 + 0x78]] -00000377: when 0:0[R0] goto %00000375 -000008d4: goto %00000537 - -00000537: -0000053a: R0 := 0x1F000 -00000541: R0 := mem[R0 + 0xFC8, el]:u64 -00000547: when R0 = 0 goto %00000545 -000008d5: goto %0000055e - -0000055e: -00000561: R0 := 0x20000 -00000568: R0 := mem[R0 + 0x58, el]:u64 -0000056d: R30 := 0x8B0 -00000570: call @__cxa_finalize with return %00000545 - -00000545: -0000054d: R30 := 0x8B4 -0000054f: call @deregister_tm_clones with return %00000551 - -00000551: -00000554: R0 := 1 -0000055c: mem := mem with [R19 + 0x78] <- 7:0[R0] -000008d6: goto %00000375 - -00000375: -0000037f: R19 := mem[R31 + 0x10, el]:u64 -00000386: R29 := mem[R31, el]:u64 -0000038b: R30 := mem[R31 + 8, el]:u64 -0000038f: R31 := R31 + 0x20 -00000394: call R30 with noreturn - -0000089c: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008e1: __libc_start_main_main :: in u64 = R0 -000008e2: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008e3: __libc_start_main_arg3 :: in out u64 = R2 -000008e4: __libc_start_main_auxv :: in out u64 = R3 -000008e5: __libc_start_main_result :: out u32 = low:32[R0] - -0000029c: -000006dc: R16 := 0x20000 -000006e3: R17 := mem[R16 + 0x10, el]:u64 -000006e9: R16 := R16 + 0x10 -000006ee: call R17 with noreturn - -0000089d: sub _fini(_fini_result) -000008e6: _fini_result :: out u32 = low:32[R0] +0000087b: program +00000834: sub __cxa_finalize(__cxa_finalize_result) +0000087c: __cxa_finalize_result :: out u32 = low:32[R0] + +00000514: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x18, el]:u64 +000006a5: R16 := R16 + 0x18 +000006aa: call R17 with noreturn + +00000835: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000087d: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000031f: +00000323: #3 := R31 - 0x20 +00000329: mem := mem with [#3, el]:u64 <- R29 +0000032f: mem := mem with [#3 + 8, el]:u64 <- R30 +00000333: R31 := #3 +00000339: R29 := R31 +00000341: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000346: R19 := 0x20000 +0000034d: R0 := pad:64[mem[R19 + 0x78]] +00000353: when 0:0[R0] goto %00000351 +00000871: goto %000004dd + +000004dd: +000004e0: R0 := 0x1F000 +000004e7: R0 := mem[R0 + 0xFC8, el]:u64 +000004ed: when R0 = 0 goto %000004eb +00000872: goto %00000504 + +00000504: +00000507: R0 := 0x20000 +0000050e: R0 := mem[R0 + 0x58, el]:u64 +00000513: R30 := 0x8B0 +00000516: call @__cxa_finalize with return %000004eb + +000004eb: +000004f3: R30 := 0x8B4 +000004f5: call @deregister_tm_clones with return %000004f7 + +000004f7: +000004fa: R0 := 1 +00000502: mem := mem with [R19 + 0x78] <- 7:0[R0] +00000873: goto %00000351 + +00000351: +0000035b: R19 := mem[R31 + 0x10, el]:u64 +00000362: R29 := mem[R31, el]:u64 +00000367: R30 := mem[R31 + 8, el]:u64 +0000036b: R31 := R31 + 0x20 +00000370: 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) +0000087e: __libc_start_main_main :: in u64 = R0 +0000087f: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000880: __libc_start_main_arg3 :: in out u64 = R2 +00000881: __libc_start_main_auxv :: in out u64 = R3 +00000882: __libc_start_main_result :: out u32 = low:32[R0] + +00000278: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x10, el]:u64 +0000068f: R16 := R16 + 0x10 +00000694: call R17 with noreturn + +0000083a: sub _fini(_fini_result) +00000883: _fini_result :: out u32 = low:32[R0] 00000020: 00000026: #0 := R31 - 0x10 @@ -78,298 +78,286 @@ 0000004c: R31 := R31 + 0x10 00000051: call R30 with noreturn -0000089e: sub _init(_init_result) -000008e7: _init_result :: out u32 = low:32[R0] - -000007a4: -000007aa: #6 := R31 - 0x10 -000007b0: mem := mem with [#6, el]:u64 <- R29 -000007b6: mem := mem with [#6 + 8, el]:u64 <- R30 -000007ba: R31 := #6 -000007c0: R29 := R31 -000007c5: R30 := 0x6E8 -000007c7: call @call_weak_fn with return %000007c9 - -000007c9: -000007ce: R29 := mem[R31, el]:u64 -000007d3: R30 := mem[R31 + 8, el]:u64 -000007d7: R31 := R31 + 0x10 -000007dc: call R30 with noreturn - -0000089f: sub _start(_start_result) -000008e8: _start_result :: out u32 = low:32[R0] - -0000025d: -00000262: R29 := 0 -00000267: R30 := 0 -0000026d: R5 := R0 -00000274: R1 := mem[R31, el]:u64 -0000027a: R2 := R31 + 8 -00000280: R6 := R31 -00000285: R0 := 0x1F000 -0000028c: R0 := mem[R0 + 0xFD8, el]:u64 -00000291: R3 := 0 -00000296: R4 := 0 -0000029b: R30 := 0x7F0 -0000029e: call @__libc_start_main with return %000002a0 +0000083b: sub _init(_init_result) +00000884: _init_result :: out u32 = low:32[R0] + +0000074a: +00000750: #6 := R31 - 0x10 +00000756: mem := mem with [#6, el]:u64 <- R29 +0000075c: mem := mem with [#6 + 8, el]:u64 <- R30 +00000760: R31 := #6 +00000766: R29 := R31 +0000076b: R30 := 0x6E8 +0000076d: call @call_weak_fn with return %0000076f + +0000076f: +00000774: R29 := mem[R31, el]:u64 +00000779: R30 := mem[R31 + 8, el]:u64 +0000077d: R31 := R31 + 0x10 +00000782: call R30 with noreturn + +0000083c: sub _start(_start_result) +00000885: _start_result :: out u32 = low:32[R0] + +00000239: +0000023e: R29 := 0 +00000243: R30 := 0 +00000249: R5 := R0 +00000250: R1 := mem[R31, el]:u64 +00000256: R2 := R31 + 8 +0000025c: R6 := R31 +00000261: R0 := 0x1F000 +00000268: R0 := mem[R0 + 0xFD8, el]:u64 +0000026d: R3 := 0 +00000272: R4 := 0 +00000277: R30 := 0x7F0 +0000027a: call @__libc_start_main with return %0000027c + +0000027c: +0000027f: R30 := 0x7F4 +00000282: call @abort with return %00000874 + +00000874: +00000875: call @call_weak_fn with noreturn + +0000083f: sub abort() + + +00000280: +000006f0: R16 := 0x20000 +000006f7: R17 := mem[R16 + 0x38, el]:u64 +000006fd: R16 := R16 + 0x38 +00000702: call R17 with noreturn + +00000840: sub call_weak_fn(call_weak_fn_result) +00000886: call_weak_fn_result :: out u32 = low:32[R0] + +00000284: +00000287: R0 := 0x1F000 +0000028e: R0 := mem[R0 + 0xFD0, el]:u64 +00000294: when R0 = 0 goto %00000292 +00000876: goto %00000554 + +00000292: +0000029a: call R30 with noreturn + +00000554: +00000557: goto @__gmon_start__ + +00000555: +000006da: R16 := 0x20000 +000006e1: R17 := mem[R16 + 0x30, el]:u64 +000006e7: R16 := R16 + 0x30 +000006ec: call R17 with noreturn + +00000842: sub deregister_tm_clones(deregister_tm_clones_result) +00000887: deregister_tm_clones_result :: out u32 = low:32[R0] 000002a0: -000002a3: R30 := 0x7F4 -000002a6: call @abort with return %000008d7 - -000008d7: -000008d8: call @call_weak_fn with noreturn - -000008a2: sub abort() - - -000002a4: -0000074a: R16 := 0x20000 -00000751: R17 := mem[R16 + 0x38, el]:u64 -00000757: R16 := R16 + 0x38 -0000075c: call R17 with noreturn - -000008a3: sub call_weak_fn(call_weak_fn_result) -000008e9: call_weak_fn_result :: out u32 = low:32[R0] - -000002a8: -000002ab: R0 := 0x1F000 -000002b2: R0 := mem[R0 + 0xFD0, el]:u64 -000002b8: when R0 = 0 goto %000002b6 -000008d9: goto %000005ae - -000002b6: -000002be: call R30 with noreturn - -000005ae: -000005b1: goto @__gmon_start__ - -000005af: -00000734: R16 := 0x20000 -0000073b: R17 := mem[R16 + 0x30, el]:u64 -00000741: R16 := R16 + 0x30 -00000746: call R17 with noreturn - -000008a5: sub deregister_tm_clones(deregister_tm_clones_result) -000008ea: deregister_tm_clones_result :: out u32 = low:32[R0] - -000002c4: -000002c7: R0 := 0x20000 -000002cd: R0 := R0 + 0x78 -000002d2: R1 := 0x20000 -000002d8: R1 := R1 + 0x78 -000002de: #1 := ~R0 -000002e3: #2 := R1 + ~R0 -000002e9: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002ef: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002f3: ZF := #2 + 1 = 0 -000002f7: NF := 63:63[#2 + 1] -000002fd: when ZF goto %000002fb -000008da: goto %00000590 - -00000590: -00000593: R1 := 0x1F000 -0000059a: R1 := mem[R1 + 0xFC0, el]:u64 -0000059f: when R1 = 0 goto %000002fb -000008db: goto %000005a3 - -000002fb: -00000303: call R30 with noreturn - -000005a3: -000005a7: R16 := R1 -000005ac: call R16 with noreturn - -000008a8: sub frame_dummy(frame_dummy_result) -000008eb: frame_dummy_result :: out u32 = low:32[R0] - -0000039a: -0000039c: call @register_tm_clones with noreturn - -000008a9: sub free(free_ptr) -000008ec: free_ptr :: in out u64 = R0 - -00000512: -00000776: R16 := 0x20000 -0000077d: R17 := mem[R16 + 0x48, el]:u64 -00000783: R16 := R16 + 0x48 -00000788: call R17 with noreturn - -000008aa: sub main(main_argc, main_argv, main_result) -000008ed: main_argc :: in u32 = low:32[R0] -000008ee: main_argv :: in out u64 = R1 -000008ef: main_result :: out u32 = low:32[R0] - -0000039e: -000003a2: #4 := R31 - 0x30 -000003a8: mem := mem with [#4, el]:u64 <- R29 -000003ae: mem := mem with [#4 + 8, el]:u64 <- R30 -000003b2: R31 := #4 -000003b8: R29 := R31 -000003c0: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000003c7: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003ce: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003d3: R0 := 0x20000 -000003d9: R0 := R0 + 0x60 -000003e0: R1 := pad:64[mem[R0]] -000003e5: R0 := 0x20000 -000003eb: R0 := R0 + 0x68 -000003f3: mem := mem with [R0 + 2] <- 7:0[R1] -000003f8: R0 := 0x20000 -000003fe: R0 := R0 + 0x68 -00000403: R30 := 0x90C -00000406: call @strlen with return %00000408 - -00000408: -0000040c: R0 := R0 + 1 -00000411: R30 := 0x914 -00000414: call @malloc with return %00000416 +000002a3: R0 := 0x20000 +000002a9: R0 := R0 + 0x78 +000002ae: R1 := 0x20000 +000002b4: R1 := R1 + 0x78 +000002ba: #1 := ~R0 +000002bf: #2 := R1 + ~R0 +000002c5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002cb: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002cf: ZF := #2 + 1 = 0 +000002d3: NF := 63:63[#2 + 1] +000002d9: when ZF goto %000002d7 +00000877: goto %00000536 + +00000536: +00000539: R1 := 0x1F000 +00000540: R1 := mem[R1 + 0xFC0, el]:u64 +00000545: when R1 = 0 goto %000002d7 +00000878: goto %00000549 + +000002d7: +000002df: call R30 with noreturn + +00000549: +0000054d: R16 := R1 +00000552: call R16 with noreturn + +00000845: sub frame_dummy(frame_dummy_result) +00000888: frame_dummy_result :: out u32 = low:32[R0] + +00000376: +00000378: call @register_tm_clones with noreturn + +00000846: sub free(free_ptr) +00000889: free_ptr :: in out u64 = R0 + +000004b8: +0000071c: R16 := 0x20000 +00000723: R17 := mem[R16 + 0x48, el]:u64 +00000729: R16 := R16 + 0x48 +0000072e: call R17 with noreturn + +00000847: sub main(main_argc, main_argv, main_result) +0000088a: main_argc :: in u32 = low:32[R0] +0000088b: main_argv :: in out u64 = R1 +0000088c: main_result :: out u32 = low:32[R0] + +0000037a: +0000037e: #4 := R31 - 0x30 +00000384: mem := mem with [#4, el]:u64 <- R29 +0000038a: mem := mem with [#4 + 8, el]:u64 <- R30 +0000038e: R31 := #4 +00000394: R29 := R31 +0000039c: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003a3: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003aa: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003af: R0 := 0xB +000003b4: R30 := 0x8F0 +000003b7: call @malloc with return %000003b9 + +000003b9: +000003bd: R1 := R0 +000003c2: R0 := 0x20000 +000003c8: R0 := R0 + 0x80 +000003d0: mem := mem with [R0, el]:u64 <- R1 +000003d5: R0 := 0x20000 +000003db: R0 := R0 + 0x80 +000003e2: R19 := mem[R0, el]:u64 +000003e7: R0 := 0x20000 +000003ed: R0 := R0 + 0x68 +000003f2: R30 := 0x918 +000003f5: call @strlen with return %000003f7 + +000003f7: +000003fb: R2 := R0 +00000400: R0 := 0x20000 +00000406: R1 := R0 + 0x68 +0000040c: R0 := R19 +00000411: R30 := 0x92C +00000414: call @memcpy with return %00000416 00000416: -0000041a: R1 := R0 -0000041f: R0 := 0x20000 -00000425: R0 := R0 + 0x80 -0000042d: mem := mem with [R0, el]:u64 <- R1 -00000432: R0 := 0x20000 -00000438: R0 := R0 + 0x80 -0000043f: R19 := mem[R0, el]:u64 -00000444: R0 := 0x20000 -0000044a: R0 := R0 + 0x68 -0000044f: R30 := 0x93C -00000451: call @strlen with return %00000453 - -00000453: -00000457: R0 := R0 + 1 -0000045d: R2 := R0 -00000462: R0 := 0x20000 -00000468: R1 := R0 + 0x68 -0000046e: R0 := R19 -00000473: R30 := 0x954 -00000476: call @memcpy with return %00000478 - -00000478: -0000047b: R0 := 0x20000 -00000481: R0 := R0 + 0x80 -00000488: R0 := mem[R0, el]:u64 -0000048d: R30 := 0x964 -00000490: call @puts with return %00000492 - -00000492: -00000495: R0 := 0x20000 -0000049b: R0 := R0 + 0x80 -000004a2: R0 := mem[R0, el]:u64 -000004a8: R0 := R0 + 1 -000004b0: mem := mem with [R31 + 0x28, el]:u64 <- R0 -000004b5: R0 := 0x20000 -000004bb: R0 := R0 + 0x80 -000004c2: R19 := mem[R0, el]:u64 -000004c7: R0 := 0x20000 -000004cd: R0 := R0 + 0x80 -000004d4: R0 := mem[R0, el]:u64 -000004d9: R30 := 0x994 -000004db: call @strlen with return %000004dd - -000004dd: -000004e1: R0 := R0 + 1 -000004e7: R2 := R0 -000004ec: R1 := 0 -000004f2: R0 := R19 -000004f7: R30 := 0x9A8 -000004fa: call @memset with return %000004fc - -000004fc: -000004ff: R0 := 0x20000 -00000505: R0 := R0 + 0x80 -0000050c: R0 := mem[R0, el]:u64 -00000511: R30 := 0x9B8 -00000514: call @free with return %00000516 - -00000516: -00000519: R0 := 0 -00000520: R19 := mem[R31 + 0x10, el]:u64 -00000527: R29 := mem[R31, el]:u64 -0000052c: R30 := mem[R31 + 8, el]:u64 -00000530: R31 := R31 + 0x30 -00000535: call R30 with noreturn - -000008ab: sub malloc(malloc_size, malloc_result) -000008f0: malloc_size :: in u64 = R0 -000008f1: malloc_result :: out u64 = R0 +00000419: R0 := 0x20000 +0000041f: R0 := R0 + 0x80 +00000426: R0 := mem[R0, el]:u64 +0000042b: R30 := 0x93C +0000042e: call @puts with return %00000430 + +00000430: +00000433: R0 := 0x20000 +00000439: R0 := R0 + 0x80 +00000440: R0 := mem[R0, el]:u64 +00000446: R0 := R0 + 2 +0000044e: mem := mem with [R31 + 0x28, el]:u64 <- R0 +00000455: R0 := mem[R31 + 0x28, el]:u64 +0000045c: mem := mem with [R0] <- 0 +00000461: R0 := 0x20000 +00000467: R0 := R0 + 0x80 +0000046e: R19 := mem[R0, el]:u64 +00000473: R0 := 0x20000 +00000479: R0 := R0 + 0x80 +00000480: R0 := mem[R0, el]:u64 +00000485: R30 := 0x974 +00000487: call @strlen with return %00000489 + +00000489: +0000048d: R2 := R0 +00000492: R1 := 1 +00000498: R0 := R19 +0000049d: R30 := 0x984 +000004a0: call @memset with return %000004a2 + +000004a2: +000004a5: R0 := 0x20000 +000004ab: R0 := R0 + 0x80 +000004b2: R0 := mem[R0, el]:u64 +000004b7: R30 := 0x994 +000004ba: call @free with return %000004bc + +000004bc: +000004bf: R0 := 0 +000004c6: R19 := mem[R31 + 0x10, el]:u64 +000004cd: R29 := mem[R31, el]:u64 +000004d2: R30 := mem[R31 + 8, el]:u64 +000004d6: R31 := R31 + 0x30 +000004db: call R30 with noreturn + +00000848: sub malloc(malloc_size, malloc_result) +0000088d: malloc_size :: in u64 = R0 +0000088e: malloc_result :: out u64 = R0 + +000003b5: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x20, el]:u64 +000006bb: R16 := R16 + 0x20 +000006c0: call R17 with noreturn + +00000849: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +0000088f: memcpy_dst :: in out u64 = R0 +00000890: memcpy_src :: in out u64 = R1 +00000891: memcpy_n :: in u64 = R2 +00000892: memcpy_result :: out u64 = R0 00000412: -00000708: R16 := 0x20000 -0000070f: R17 := mem[R16 + 0x20, el]:u64 -00000715: R16 := R16 + 0x20 -0000071a: call R17 with noreturn - -000008ac: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008f2: memcpy_dst :: in out u64 = R0 -000008f3: memcpy_src :: in out u64 = R1 -000008f4: memcpy_n :: in u64 = R2 -000008f5: memcpy_result :: out u64 = R0 - -00000474: -000006b0: R16 := 0x20000 -000006b7: R17 := mem[R16, el]:u64 -000006bd: R16 := R16 -000006c2: call R17 with noreturn - -000008ad: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008f6: memset_buf :: in out u64 = R0 -000008f7: memset_c :: in u32 = low:32[R1] -000008f8: memset_n :: in u64 = R2 -000008f9: memset_result :: out u64 = R0 - -000004f8: -0000071e: R16 := 0x20000 -00000725: R17 := mem[R16 + 0x28, el]:u64 -0000072b: R16 := R16 + 0x28 -00000730: call R17 with noreturn - -000008ae: sub puts(puts_s, puts_result) -000008fa: puts_s :: in u64 = R0 -000008fb: puts_result :: out u32 = low:32[R0] - -0000048e: -00000760: R16 := 0x20000 -00000767: R17 := mem[R16 + 0x40, el]:u64 -0000076d: R16 := R16 + 0x40 -00000772: call R17 with noreturn - -000008af: sub register_tm_clones(register_tm_clones_result) -000008fc: register_tm_clones_result :: out u32 = low:32[R0] - -00000305: -00000308: R0 := 0x20000 -0000030e: R0 := R0 + 0x78 -00000313: R1 := 0x20000 -00000319: R1 := R1 + 0x78 -00000320: R1 := R1 + ~R0 + 1 -00000326: R2 := 0.63:63[R1] -0000032d: R1 := R2 + (R1 ~>> 3) -00000333: R1 := extend:64[63:1[R1]] -00000339: when R1 = 0 goto %00000337 -000008dc: goto %00000572 - -00000572: -00000575: R2 := 0x1F000 -0000057c: R2 := mem[R2 + 0xFE0, el]:u64 -00000581: when R2 = 0 goto %00000337 -000008dd: goto %00000585 - -00000337: -0000033f: call R30 with noreturn - -00000585: -00000589: R16 := R2 -0000058e: call R16 with noreturn - -000008b2: sub strlen(strlen_s, strlen_result) -000008fd: strlen_s :: in u64 = R0 -000008fe: strlen_result :: out u64 = R0 - -00000404: -000006c6: R16 := 0x20000 -000006cd: R17 := mem[R16 + 8, el]:u64 -000006d3: R16 := R16 + 8 -000006d8: call R17 with noreturn +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16, el]:u64 +00000663: R16 := R16 +00000668: call R17 with noreturn + +0000084a: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000893: memset_buf :: in out u64 = R0 +00000894: memset_c :: in u32 = low:32[R1] +00000895: memset_n :: in u64 = R2 +00000896: memset_result :: out u64 = R0 + +0000049e: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x28, el]:u64 +000006d1: R16 := R16 + 0x28 +000006d6: call R17 with noreturn + +0000084b: sub puts(puts_s, puts_result) +00000897: puts_s :: in u64 = R0 +00000898: puts_result :: out u32 = low:32[R0] + +0000042c: +00000706: R16 := 0x20000 +0000070d: R17 := mem[R16 + 0x40, el]:u64 +00000713: R16 := R16 + 0x40 +00000718: call R17 with noreturn + +0000084c: sub register_tm_clones(register_tm_clones_result) +00000899: register_tm_clones_result :: out u32 = low:32[R0] + +000002e1: +000002e4: R0 := 0x20000 +000002ea: R0 := R0 + 0x78 +000002ef: R1 := 0x20000 +000002f5: R1 := R1 + 0x78 +000002fc: R1 := R1 + ~R0 + 1 +00000302: R2 := 0.63:63[R1] +00000309: R1 := R2 + (R1 ~>> 3) +0000030f: R1 := extend:64[63:1[R1]] +00000315: when R1 = 0 goto %00000313 +00000879: goto %00000518 + +00000518: +0000051b: R2 := 0x1F000 +00000522: R2 := mem[R2 + 0xFE0, el]:u64 +00000527: when R2 = 0 goto %00000313 +0000087a: goto %0000052b + +00000313: +0000031b: call R30 with noreturn + +0000052b: +0000052f: R16 := R2 +00000534: call R16 with noreturn + +0000084f: sub strlen(strlen_s, strlen_result) +0000089a: strlen_s :: in u64 = R0 +0000089b: strlen_result :: out u64 = R0 + +000003f3: +0000066c: R16 := 0x20000 +00000673: R17 := mem[R16 + 8, el]:u64 +00000679: R16 := R16 + 8 +0000067e: call R17 with noreturn diff --git a/examples/http_parse_basic/example.bpl b/examples/http_parse_basic/example.bpl index 3d3237ba8..175e49ed2 100644 --- a/examples/http_parse_basic/example.bpl +++ b/examples/http_parse_basic/example.bpl @@ -40,6 +40,8 @@ function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) returns (bv64); function {:extern} {:bvbuiltin "bvmul"} bvmul64(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 {:inline} byte_extract64_64(value: bv64, offset: bv64) returns (bv8) { @@ -86,15 +88,14 @@ function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) memory[index := value] } -function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2524bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2527bv64) == 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, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -144,11 +145,11 @@ procedure {:extern} guarantee_reflexive(); 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, 2524bv64) == 1bv8); - free requires (memory_load8_le(mem, 2525bv64) == 0bv8); - free requires (memory_load8_le(mem, 2526bv64) == 2bv8); - free requires (memory_load8_le(mem, 2527bv64) == 0bv8); + 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, 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, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -181,11 +182,10 @@ procedure #free(); 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, 2524bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2527bv64) == 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, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -222,6 +222,7 @@ procedure #free(); procedure main() modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, 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, 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); @@ -251,18 +252,18 @@ procedure main() free requires (memory_load8_le(mem, 131176bv64) == 104bv8); free requires (memory_load8_le(mem, 131177bv64) == 101bv8); free requires (memory_load8_le(mem, 131178bv64) == 108bv8); - free requires (memory_load8_le(mem, 131179bv64) == 0bv8); - free requires (memory_load8_le(mem, 131180bv64) == 0bv8); - free requires (memory_load8_le(mem, 131181bv64) == 0bv8); + free requires (memory_load8_le(mem, 131179bv64) == 108bv8); + free requires (memory_load8_le(mem, 131180bv64) == 111bv8); + free requires (memory_load8_le(mem, 131181bv64) == 111bv8); free requires (memory_load8_le(mem, 131182bv64) == 0bv8); free requires (memory_load8_le(mem, 131183bv64) == 0bv8); free requires (memory_load8_le(mem, 131184bv64) == 0bv8); free requires (memory_load8_le(mem, 131185bv64) == 0bv8); free requires (memory_load8_le(mem, 131186bv64) == 0bv8); - free requires (memory_load8_le(mem, 2524bv64) == 1bv8); - free requires (memory_load8_le(mem, 2525bv64) == 0bv8); - free requires (memory_load8_le(mem, 2526bv64) == 2bv8); - free requires (memory_load8_le(mem, 2527bv64) == 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, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -301,10 +302,10 @@ procedure main() free ensures (R19 == old(R19)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2524bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2527bv64) == 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, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -344,84 +345,71 @@ procedure main() 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 "%000003a8"} true; + assume {:captureState "%00000384"} true; stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); - assume {:captureState "%000003ae"} true; + assume {:captureState "%0000038a"} true; R31, Gamma_R31 := #4, Gamma_#4; R29, Gamma_R29 := R31, Gamma_R31; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); - assume {:captureState "%000003c0"} true; + assume {:captureState "%0000039c"} true; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); - assume {:captureState "%000003c7"} true; + assume {:captureState "%000003a3"} true; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); - assume {:captureState "%000003ce"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 96bv64), Gamma_R0; - call rely(); - R1, Gamma_R1 := zero_extend56_8(memory_load8_le(mem, R0)), (gamma_load8(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; - call rely(); - assert (L(mem, bvadd64(R0, 2bv64)) ==> Gamma_R1); - mem, Gamma_mem := memory_store8_le(mem, bvadd64(R0, 2bv64), R1[8:0]), gamma_store8(Gamma_mem, bvadd64(R0, 2bv64), Gamma_R1); - assume {:captureState "%000003f3"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; - R30, Gamma_R30 := 2316bv64, true; - call strlen(); - goto l00000408; - l00000408: - assume {:captureState "l00000408"} true; - R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; - R30, Gamma_R30 := 2324bv64, true; + assume {:captureState "%000003aa"} true; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2288bv64, true; call malloc(); - goto l00000416; - l00000416: - assume {:captureState "l00000416"} true; + goto l000003b9; + l000003b9: + assume {:captureState "l000003b9"} true; R1, Gamma_R1 := R0, Gamma_R0; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); assert (L(mem, R0) ==> Gamma_R1); mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%0000042d"} true; + assume {:captureState "%000003d0"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; - R30, Gamma_R30 := 2364bv64, true; + R30, Gamma_R30 := 2328bv64, true; call strlen(); - goto l00000453; - l00000453: - assume {:captureState "l00000453"} true; - R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + goto l000003f7; + l000003f7: + assume {:captureState "l000003f7"} true; R2, Gamma_R2 := R0, Gamma_R0; R0, Gamma_R0 := 131072bv64, true; R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2388bv64, true; + R30, Gamma_R30 := 2348bv64, true; call memcpy(); - goto l00000478; - l00000478: - assume {:captureState "l00000478"} true; + goto l00000416; + l00000416: + assume {:captureState "l00000416"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2404bv64, true; + R30, Gamma_R30 := 2364bv64, true; call puts(); - goto l00000492; - l00000492: - assume {:captureState "l00000492"} true; + goto l00000430; + l00000430: + assume {:captureState "l00000430"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + R0, Gamma_R0 := bvadd64(R0, 2bv64), Gamma_R0; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); - assume {:captureState "%000004b0"} true; + assume {:captureState "%0000044e"} true; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); + call rely(); + assert (L(mem, R0) ==> true); + mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%0000045c"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); @@ -430,29 +418,28 @@ procedure main() R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2452bv64, true; + R30, Gamma_R30 := 2420bv64, true; call strlen(); - goto l000004dd; - l000004dd: - assume {:captureState "l000004dd"} true; - R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + goto l00000489; + l00000489: + assume {:captureState "l00000489"} true; R2, Gamma_R2 := R0, Gamma_R0; - R1, Gamma_R1 := 0bv64, true; + R1, Gamma_R1 := 1bv64, true; R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2472bv64, true; + R30, Gamma_R30 := 2436bv64, true; call memset(); - goto l000004fc; - l000004fc: - assume {:captureState "l000004fc"} true; + goto l000004a2; + l000004a2: + assume {:captureState "l000004a2"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2488bv64, true; + R30, Gamma_R30 := 2452bv64, true; call #free(); - goto l00000516; - l00000516: - assume {:captureState "l00000516"} true; + goto l000004bc; + l000004bc: + assume {:captureState "l000004bc"} true; R0, Gamma_R0 := 0bv64, true; R19, Gamma_R19 := 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); @@ -463,11 +450,12 @@ procedure main() 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, 2524bv64) == 1bv8); - free requires (memory_load8_le(mem, 2525bv64) == 0bv8); - free requires (memory_load8_le(mem, 2526bv64) == 2bv8); - free requires (memory_load8_le(mem, 2527bv64) == 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, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -500,7 +488,7 @@ procedure malloc(); 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 ((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]); @@ -509,10 +497,11 @@ procedure malloc(); 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); - free ensures (memory_load8_le(mem, 2524bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2527bv64) == 0bv8); + 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, 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, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -548,10 +537,10 @@ procedure malloc(); procedure memcpy(); modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - free requires (memory_load8_le(mem, 2524bv64) == 1bv8); - free requires (memory_load8_le(mem, 2525bv64) == 0bv8); - free requires (memory_load8_le(mem, 2526bv64) == 2bv8); - free requires (memory_load8_le(mem, 2527bv64) == 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, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -584,13 +573,13 @@ procedure memcpy(); 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, 2524bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2527bv64) == 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, 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, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -626,10 +615,11 @@ procedure memcpy(); procedure memset(); modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - free requires (memory_load8_le(mem, 2524bv64) == 1bv8); - free requires (memory_load8_le(mem, 2525bv64) == 0bv8); - free requires (memory_load8_le(mem, 2526bv64) == 2bv8); - free requires (memory_load8_le(mem, 2527bv64) == 0bv8); + requires Gamma_R1; + 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, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -662,13 +652,13 @@ procedure memset(); 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 ((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, 2524bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2527bv64) == 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, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -704,10 +694,10 @@ procedure memset(); procedure puts(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2524bv64) == 1bv8); - free requires (memory_load8_le(mem, 2525bv64) == 0bv8); - free requires (memory_load8_le(mem, 2526bv64) == 2bv8); - free requires (memory_load8_le(mem, 2527bv64) == 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, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -740,10 +730,10 @@ procedure puts(); 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, 2524bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2527bv64) == 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, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -779,11 +769,10 @@ procedure puts(); 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, 2524bv64) == 1bv8); - free requires (memory_load8_le(mem, 2525bv64) == 0bv8); - free requires (memory_load8_le(mem, 2526bv64) == 2bv8); - free requires (memory_load8_le(mem, 2527bv64) == 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, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -820,11 +809,11 @@ procedure strlen(); 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, 2524bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2525bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2526bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2527bv64) == 0bv8); + ensures (bvult64(old(R0), bvadd64(bvadd64(old(R0), R0), 1bv64))); + 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, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); diff --git a/examples/http_parse_basic/example.bpl.orig b/examples/http_parse_basic/example.bpl.orig new file mode 100644 index 000000000..1fd507a9d --- /dev/null +++ b/examples/http_parse_basic/example.bpl.orig @@ -0,0 +1,691 @@ +var {:extern} Gamma_R0: bool; +var {:extern} Gamma_R1: bool; +var {:extern} Gamma_R16: bool; +var {:extern} Gamma_R17: bool; +var {:extern} Gamma_R2: 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} R2: 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 == 131184bv64); +const {:extern} $password_addr: bv64; +axiom ($password_addr == 131152bv64); +const {:extern} $stext_addr: bv64; +axiom ($stext_addr == 131160bv64); +function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { + (if ((index == bvadd64($stext_addr, 9bv64)) || ((index == bvadd64($stext_addr, 8bv64)) || ((index == bvadd64($stext_addr, 7bv64)) || ((index == bvadd64($stext_addr, 6bv64)) || ((index == bvadd64($stext_addr, 5bv64)) || ((index == bvadd64($stext_addr, 4bv64)) || ((index == bvadd64($stext_addr, 3bv64)) || ((index == bvadd64($stext_addr, 2bv64)) || ((index == bvadd64($stext_addr, 1bv64)) || (index == bvadd64($stext_addr, 0bv64))))))))))) then true else (if (index == $password_addr) then false else (if (index == $buf_addr) then true else false))) +} + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvlshr"} bvlshr16(bv16, bv16) returns (bv16); +function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) returns (bool); +function {:inline} byte_extract16_64(value: bv16, offset: bv64) returns (bv8) { + bvlshr16(value, bvmul64(offset, 8bv64)[16:0])[8:0] +} + +function {:inline} byte_extract64_64(value: bv64, offset: bv64) returns (bv8) { + bvlshr64(value, bvmul64(offset, 8bv64))[8:0] +} + +function {:extern} gamma_load16(gammaMap: [bv64]bool, index: bv64) returns (bool) { + (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]) +} + +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_store16(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + (lambda i: bv64 :: ((if in_bounds64(index, 2bv64, i) then value else gammaMap[i]))) +} + +function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then value else gammaMap[i]))) +} + +function {:extern} gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + gammaMap[index := value] +} + +function {:inline} in_bounds64_le(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)))) +} + +function {:extern} memory_load16_le(memory: [bv64]bv8, index: bv64) returns (bv16) { + (memory[bvadd64(index, 1bv64)] ++ memory[index]) +} + +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_store16_le(memory: [bv64]bv8, index: bv64, value: bv16) returns ([bv64]bv8) { + (lambda i: bv64 :: ((if in_bounds64(index, 2bv64, i) then byte_extract16_64(value, bvsub64(i, index)) else memory[i]))) +} + +function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) returns ([bv64]bv8) { + (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then byte_extract64_64(value, bvsub64(i, index)) else memory[i]))) +} + +function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { + memory[index := value] +} + +function {:extern} {:bvbuiltin "zero_extend 48"} zero_extend48_16(bv16) returns (bv64); +procedure {:extern} rely(); + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); + free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 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, 2328bv64) == 1bv8); + free requires (memory_load8_le(mem, 2329bv64) == 0bv8); + free requires (memory_load8_le(mem, 2330bv64) == 2bv8); + free requires (memory_load8_le(mem, 2331bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 80bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); + +procedure main() + modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, 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, 131136bv64) == 0bv8); + free requires (memory_load8_le(mem, 131137bv64) == 0bv8); + free requires (memory_load8_le(mem, 131138bv64) == 0bv8); + free requires (memory_load8_le(mem, 131139bv64) == 0bv8); + free requires (memory_load8_le(mem, 131140bv64) == 0bv8); + free requires (memory_load8_le(mem, 131141bv64) == 0bv8); + free requires (memory_load8_le(mem, 131142bv64) == 0bv8); + free requires (memory_load8_le(mem, 131143bv64) == 0bv8); + free requires (memory_load8_le(mem, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 0bv8); + free requires (memory_load8_le(mem, 131152bv64) == 7bv8); + 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) == 108bv8); + free requires (memory_load8_le(mem, 131161bv64) == 107bv8); + free requires (memory_load8_le(mem, 131162bv64) == 97bv8); + free requires (memory_load8_le(mem, 131163bv64) == 106bv8); + free requires (memory_load8_le(mem, 131164bv64) == 100bv8); + free requires (memory_load8_le(mem, 131165bv64) == 108bv8); + free requires (memory_load8_le(mem, 131166bv64) == 107bv8); + free requires (memory_load8_le(mem, 131167bv64) == 97bv8); + free requires (memory_load8_le(mem, 131168bv64) == 106bv8); + free requires (memory_load8_le(mem, 131169bv64) == 100bv8); + free requires (memory_load8_le(mem, 2328bv64) == 1bv8); + free requires (memory_load8_le(mem, 2329bv64) == 0bv8); + free requires (memory_load8_le(mem, 2330bv64) == 2bv8); + free requires (memory_load8_le(mem, 2331bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 80bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 0bv8); + free ensures (Gamma_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); +{ + var #4: bv64; + var Gamma_#4: bool; + lmain: + assume {:captureState "lmain"} true; + #4, Gamma_#4 := bvadd64(R31, 18446744073709551584bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); + assume {:captureState "%00000364"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); + assume {:captureState "%0000036a"} true; + R31, Gamma_R31 := #4, Gamma_#4; + R29, Gamma_R29 := R31, Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), true); + assume {:captureState "%0000037b"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), true); + assume {:captureState "%00000382"} true; + R0, Gamma_R0 := 10bv64, true; + R30, Gamma_R30 := 2156bv64, true; + call malloc(); + goto l00000391; + l00000391: + assume {:captureState "l00000391"} true; + R1, Gamma_R1 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + assert (L(mem, R0) ==> Gamma_R1); + mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); + assume {:captureState "%000003a8"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + R2, Gamma_R2 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 131072bv64, true; + R1, Gamma_R1 := bvadd64(R0, 88bv64), Gamma_R0; + R0, Gamma_R0 := R2, Gamma_R2; + call rely(); + R2, Gamma_R2 := memory_load64_le(mem, R1), (gamma_load64(Gamma_mem, R1) || L(mem, R1)); + call rely(); + assert (L(mem, R0) ==> Gamma_R2); + mem, Gamma_mem := memory_store64_le(mem, R0, R2), gamma_store64(Gamma_mem, R0, Gamma_R2); + assume {:captureState "%000003da"} true; + call rely(); + R1, Gamma_R1 := zero_extend48_16(memory_load16_le(mem, bvadd64(R1, 8bv64))), (gamma_load16(Gamma_mem, bvadd64(R1, 8bv64)) || L(mem, bvadd64(R1, 8bv64))); + call rely(); + assert (L(mem, bvadd64(R0, 8bv64)) ==> Gamma_R1); + mem, Gamma_mem := memory_store16_le(mem, bvadd64(R0, 8bv64), R1[16:0]), gamma_store16(Gamma_mem, bvadd64(R0, 8bv64), Gamma_R1); + assume {:captureState "%000003e9"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2228bv64, true; + call puts(); + goto l00000405; + l00000405: + assume {:captureState "l00000405"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R0); + assume {:captureState "%00000423"} true; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + assert (L(mem, R0) ==> true); + mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%00000431"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R2, Gamma_R2 := 10bv64, true; + R1, Gamma_R1 := 1bv64, true; + R30, Gamma_R30 := 2280bv64, true; + call memset(); + goto l00000457; + l00000457: + assume {:captureState "l00000457"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2296bv64, true; + call #free(); + goto l00000471; + l00000471: + assume {:captureState "l00000471"} true; + R0, Gamma_R0 := 0bv64, true; + 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, 32bv64), 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, 2328bv64) == 1bv8); + free requires (memory_load8_le(mem, 2329bv64) == 0bv8); + free requires (memory_load8_le(mem, 2330bv64) == 2bv8); + free requires (memory_load8_le(mem, 2331bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 80bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 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 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, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); + +procedure memset(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + requires Gamma_R1; + free requires (memory_load8_le(mem, 2328bv64) == 1bv8); + free requires (memory_load8_le(mem, 2329bv64) == 0bv8); + free requires (memory_load8_le(mem, 2330bv64) == 2bv8); + free requires (memory_load8_le(mem, 2331bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 80bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 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_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, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); + +procedure puts(); + modifies Gamma_R16, Gamma_R17, R16, R17; + free requires (memory_load8_le(mem, 2328bv64) == 1bv8); + free requires (memory_load8_le(mem, 2329bv64) == 0bv8); + free requires (memory_load8_le(mem, 2330bv64) == 2bv8); + free requires (memory_load8_le(mem, 2331bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 80bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); diff --git a/examples/http_parse_basic/example.bpl.rej b/examples/http_parse_basic/example.bpl.rej new file mode 100644 index 000000000..1a0590f5c --- /dev/null +++ b/examples/http_parse_basic/example.bpl.rej @@ -0,0 +1,12 @@ +--- example.bpl 2023-11-15 10:21:51.302483904 +1000 ++++ examplesetcommented.bpl 2023-11-15 10:22:53.783375817 +1000 +@@ -395,7 +395,8 @@ + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + assert (L(mem, R0) ==> true); +- mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); ++ // commented out ++ // mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%00000418"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 120bv64), Gamma_R0; diff --git a/examples/http_parse_basic/example.c b/examples/http_parse_basic/example.c index c8a695ad6..025c55729 100644 --- a/examples/http_parse_basic/example.c +++ b/examples/http_parse_basic/example.c @@ -9,7 +9,7 @@ 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] = "helloo"; @@ -17,20 +17,21 @@ 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 + 2; // 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/examples/http_parse_basic/example.model b/examples/http_parse_basic/example.model new file mode 100644 index 000000000..3b8377d11 --- /dev/null +++ b/examples/http_parse_basic/example.model @@ -0,0 +1,802 @@ +*** MODEL +#4 -> +#4@0 -> 52bv64 +$buf_addr -> 131200bv64 +$password_addr -> 131168bv64 +$stext_addr -> 131176bv64 +Gamma_#4 -> +Gamma_malloc_base -> +Gamma_malloc_base@0 -> +Gamma_malloc_count -> +Gamma_malloc_count@0 -> +Gamma_malloc_end -> +Gamma_malloc_end@0 -> +Gamma_malloc_id -> +Gamma_mem -> |T@[bv64]Bool!val!0| +Gamma_mem@0 -> |T@[bv64]Bool!val!0| +Gamma_mem@1 -> |T@[bv64]Bool!val!7| +Gamma_mem@10 -> |T@[bv64]Bool!val!11| +Gamma_mem@11 -> |T@[bv64]Bool!val!11| +Gamma_mem@2 -> |T@[bv64]Bool!val!7| +Gamma_mem@3 -> |T@[bv64]Bool!val!8| +Gamma_mem@4 -> |T@[bv64]Bool!val!8| +Gamma_mem@5 -> |T@[bv64]Bool!val!8| +Gamma_mem@6 -> |T@[bv64]Bool!val!8| +Gamma_mem@7 -> |T@[bv64]Bool!val!10| +Gamma_mem@8 -> |T@[bv64]Bool!val!10| +Gamma_mem@9 -> |T@[bv64]Bool!val!10| +Gamma_R0 -> +Gamma_R0@0 -> true +Gamma_R0@1 -> true +Gamma_R0@2 -> true +Gamma_R0@3 -> true +Gamma_R0@4 -> true +Gamma_R0@5 -> true +Gamma_R0@6 -> true +Gamma_R0@7 -> true +Gamma_R1 -> +Gamma_R16 -> +Gamma_R16@0 -> +Gamma_R16@1 -> +Gamma_R16@2 -> +Gamma_R16@3 -> +Gamma_R16@4 -> +Gamma_R16@5 -> +Gamma_R17 -> +Gamma_R17@0 -> +Gamma_R17@1 -> +Gamma_R17@2 -> +Gamma_R17@3 -> +Gamma_R17@4 -> +Gamma_R17@5 -> +Gamma_R19 -> false +Gamma_R19@0 -> true +Gamma_R19@1 -> true +Gamma_R2 -> +Gamma_R29 -> false +Gamma_R30 -> false +Gamma_R31 -> +Gamma_stack -> |T@[bv64]Bool!val!1| +Gamma_stack@0 -> |T@[bv64]Bool!val!2| +Gamma_stack@1 -> |T@[bv64]Bool!val!3| +Gamma_stack@2 -> |T@[bv64]Bool!val!4| +Gamma_stack@3 -> |T@[bv64]Bool!val!5| +Gamma_stack@4 -> |T@[bv64]Bool!val!6| +Gamma_stack@5 -> |T@[bv64]Bool!val!9| +malloc_base -> +malloc_base@0 -> |T@[Int]bv64!val!0| +malloc_count -> 0 +malloc_count@0 -> 1 +malloc_end -> +malloc_end@0 -> |T@[Int]bv64!val!1| +malloc_id -> +mem -> |T@[bv64]bv8!val!0| +mem@0 -> |T@[bv64]bv8!val!0| +mem@1 -> |T@[bv64]bv8!val!7| +mem@10 -> |T@[bv64]bv8!val!11| +mem@11 -> |T@[bv64]bv8!val!11| +mem@2 -> |T@[bv64]bv8!val!7| +mem@3 -> |T@[bv64]bv8!val!8| +mem@4 -> |T@[bv64]bv8!val!8| +mem@5 -> |T@[bv64]bv8!val!8| +mem@6 -> |T@[bv64]bv8!val!8| +mem@7 -> |T@[bv64]bv8!val!10| +mem@8 -> |T@[bv64]bv8!val!10| +mem@9 -> |T@[bv64]bv8!val!10| +R0 -> +R0@0 -> 72058143793741822bv64 +R0@1 -> 131200bv64 +R0@10 -> 72058143793741824bv64 +R0@11 -> 131200bv64 +R0@12 -> 131200bv64 +R0@13 -> 72058143793741822bv64 +R0@14 -> 2bv64 +R0@15 -> 131200bv64 +R0@16 -> 72058143793741822bv64 +R0@2 -> 131200bv64 +R0@3 -> 131176bv64 +R0@4 -> 8bv64 +R0@5 -> 131200bv64 +R0@6 -> 72058143793741822bv64 +R0@7 -> 131200bv64 +R0@8 -> 72058143793741822bv64 +R0@9 -> 72058143793741824bv64 +R1 -> +R1@0 -> 131176bv64 +R16 -> +R16@0 -> +R16@1 -> +R16@2 -> +R16@3 -> +R16@4 -> +R16@5 -> +R17 -> +R17@0 -> +R17@1 -> +R17@2 -> +R17@3 -> +R17@4 -> +R17@5 -> +R19 -> 0bv64 +R19@0 -> 72058143793741822bv64 +R19@1 -> 72058143793741822bv64 +R2 -> +R29 -> 0bv64 +R30 -> 0bv64 +R31 -> 100bv64 +stack -> |T@[bv64]bv8!val!1| +stack@0 -> |T@[bv64]bv8!val!2| +stack@1 -> |T@[bv64]bv8!val!3| +stack@2 -> |T@[bv64]bv8!val!4| +stack@3 -> |T@[bv64]bv8!val!5| +stack@4 -> |T@[bv64]bv8!val!6| +stack@5 -> |T@[bv64]bv8!val!9| +ControlFlow -> { + 0 2 -> (- 1) + 0 8 -> 2 + else -> 8 +} +gamma_load32 -> { + else -> true +} +gamma_load64 -> { + else -> true +} +gamma_load8 -> { + |T@[bv64]Bool!val!0| 131168bv64 -> false + |T@[bv64]Bool!val!10| 72058143793741828bv64 -> false + |T@[bv64]Bool!val!7| 131182bv64 -> false + |T@[bv64]Bool!val!8| 131182bv64 -> false + else -> true +} +gamma_store64 -> { + |T@[bv64]Bool!val!0| 131200bv64 true -> |T@[bv64]Bool!val!7| + |T@[bv64]Bool!val!2| 60bv64 false -> |T@[bv64]Bool!val!3| + |T@[bv64]Bool!val!3| 68bv64 false -> |T@[bv64]Bool!val!4| + |T@[bv64]Bool!val!4| 92bv64 true -> |T@[bv64]Bool!val!5| + |T@[bv64]Bool!val!5| 84bv64 true -> |T@[bv64]Bool!val!6| + |T@[bv64]Bool!val!6| 92bv64 true -> |T@[bv64]Bool!val!9| + else -> |T@[bv64]Bool!val!2| +} +gamma_store8 -> { + else -> |T@[bv64]Bool!val!10| +} +memory_load64_le -> { + |T@[bv64]bv8!val!0| 131176bv64 -> 122524351096168bv64 + |T@[bv64]bv8!val!9| 92bv64 -> 72058143793741824bv64 + else -> 72058143793741822bv64 +} +memory_load8_le -> { + |T@[bv64]bv8!val!0| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!0| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!0| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!0| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!0| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!0| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!0| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!0| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!0| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!0| 131176bv64 -> 104bv8 + |T@[bv64]bv8!val!0| 131177bv64 -> 101bv8 + |T@[bv64]bv8!val!0| 131178bv64 -> 108bv8 + |T@[bv64]bv8!val!0| 131179bv64 -> 108bv8 + |T@[bv64]bv8!val!0| 131180bv64 -> 111bv8 + |T@[bv64]bv8!val!0| 131181bv64 -> 111bv8 + |T@[bv64]bv8!val!0| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!0| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!10| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!10| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!10| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!10| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!10| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!10| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!10| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!10| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!10| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!10| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!10| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!10| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!10| 131203bv64 -> 255bv8 + |T@[bv64]bv8!val!10| 131204bv64 -> 127bv8 + |T@[bv64]bv8!val!10| 131207bv64 -> 1bv8 + |T@[bv64]bv8!val!10| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!10| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!11| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!11| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!11| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!11| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!11| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!11| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!11| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!11| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!11| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!11| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!11| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!7| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!7| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!7| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!7| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!7| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!7| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!7| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!7| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!7| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!7| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!7| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!7| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!7| 131203bv64 -> 255bv8 + |T@[bv64]bv8!val!7| 131204bv64 -> 127bv8 + |T@[bv64]bv8!val!7| 131207bv64 -> 1bv8 + |T@[bv64]bv8!val!7| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!7| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!7| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!8| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!8| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!8| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!8| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!8| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!8| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!8| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!8| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!8| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!8| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!8| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!8| 2490bv64 -> 2bv8 + else -> 0bv8 +} +memory_store64_le -> { + |T@[bv64]bv8!val!0| 131200bv64 72058143793741822bv64 -> |T@[bv64]bv8!val!7| + |T@[bv64]bv8!val!2| 60bv64 0bv64 -> |T@[bv64]bv8!val!3| + |T@[bv64]bv8!val!3| 68bv64 0bv64 -> |T@[bv64]bv8!val!4| + |T@[bv64]bv8!val!4| 92bv64 0bv64 -> |T@[bv64]bv8!val!5| + |T@[bv64]bv8!val!5| 84bv64 0bv64 -> |T@[bv64]bv8!val!6| + |T@[bv64]bv8!val!6| 92bv64 72058143793741824bv64 -> |T@[bv64]bv8!val!9| + else -> |T@[bv64]bv8!val!2| +} +memory_store8_le -> { + else -> |T@[bv64]bv8!val!10| +} +Select__T@[bv64]Bool_ -> { + |T@[bv64]Bool!val!0| 131168bv64 -> false + |T@[bv64]Bool!val!0| 131182bv64 -> false + |T@[bv64]Bool!val!10| 72058143793741828bv64 -> false + |T@[bv64]Bool!val!11| 72058143793741828bv64 -> false + |T@[bv64]Bool!val!12| 52bv64 -> false + |T@[bv64]Bool!val!13| 53bv64 -> false + |T@[bv64]Bool!val!14| 54bv64 -> false + |T@[bv64]Bool!val!15| 55bv64 -> false + |T@[bv64]Bool!val!16| 56bv64 -> false + |T@[bv64]Bool!val!17| 57bv64 -> false + |T@[bv64]Bool!val!18| 58bv64 -> false + |T@[bv64]Bool!val!19| 60bv64 -> false + |T@[bv64]Bool!val!2| 59bv64 -> false + |T@[bv64]Bool!val!20| 61bv64 -> false + |T@[bv64]Bool!val!21| 62bv64 -> false + |T@[bv64]Bool!val!22| 63bv64 -> false + |T@[bv64]Bool!val!23| 64bv64 -> false + |T@[bv64]Bool!val!24| 65bv64 -> false + |T@[bv64]Bool!val!25| 66bv64 -> false + |T@[bv64]Bool!val!26| 68bv64 -> false + |T@[bv64]Bool!val!27| 69bv64 -> false + |T@[bv64]Bool!val!28| 70bv64 -> false + |T@[bv64]Bool!val!29| 71bv64 -> false + |T@[bv64]Bool!val!3| 67bv64 -> false + |T@[bv64]Bool!val!30| 72bv64 -> false + |T@[bv64]Bool!val!31| 73bv64 -> false + |T@[bv64]Bool!val!32| 74bv64 -> false + |T@[bv64]Bool!val!4| 75bv64 -> false + |T@[bv64]Bool!val!47| 131182bv64 -> false + |T@[bv64]Bool!val!48| 131182bv64 -> false + |T@[bv64]Bool!val!49| 131182bv64 -> false + |T@[bv64]Bool!val!50| 131182bv64 -> false + |T@[bv64]Bool!val!51| 131182bv64 -> false + |T@[bv64]Bool!val!52| 131182bv64 -> false + |T@[bv64]Bool!val!53| 131182bv64 -> false + |T@[bv64]Bool!val!7| 131182bv64 -> false + |T@[bv64]Bool!val!8| 131182bv64 -> false + |T@[bv64]Bool!val!8| 72058143793741828bv64 -> false + else -> true +} +Select__T@[bv64]bv8_ -> { + |T@[bv64]bv8!val!0| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!0| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!0| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!0| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!0| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!0| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!0| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!0| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!0| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!0| 131176bv64 -> 104bv8 + |T@[bv64]bv8!val!0| 131177bv64 -> 101bv8 + |T@[bv64]bv8!val!0| 131178bv64 -> 108bv8 + |T@[bv64]bv8!val!0| 131179bv64 -> 108bv8 + |T@[bv64]bv8!val!0| 131180bv64 -> 111bv8 + |T@[bv64]bv8!val!0| 131181bv64 -> 111bv8 + |T@[bv64]bv8!val!0| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!0| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!0| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!10| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!10| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!10| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!10| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!10| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!10| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!10| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!10| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!10| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!10| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!10| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!10| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!10| 131203bv64 -> 255bv8 + |T@[bv64]bv8!val!10| 131204bv64 -> 127bv8 + |T@[bv64]bv8!val!10| 131207bv64 -> 1bv8 + |T@[bv64]bv8!val!10| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!10| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!11| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!11| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!11| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!11| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!11| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!11| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!11| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!11| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!11| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!11| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!11| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!11| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!11| 131203bv64 -> 255bv8 + |T@[bv64]bv8!val!11| 131204bv64 -> 127bv8 + |T@[bv64]bv8!val!11| 131207bv64 -> 1bv8 + |T@[bv64]bv8!val!11| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!11| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!47| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!47| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!47| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!47| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!47| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!47| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!47| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!47| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!47| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!47| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!47| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!47| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!47| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!48| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!48| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!48| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!48| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!48| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!48| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!48| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!48| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!48| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!48| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!48| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!48| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!48| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!48| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!49| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!49| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!49| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!49| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!49| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!49| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!49| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!49| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!49| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!49| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!49| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!49| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!49| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!49| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!49| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!50| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!50| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!50| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!50| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!50| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!50| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!50| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!50| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!50| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!50| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!50| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!50| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!50| 131203bv64 -> 255bv8 + |T@[bv64]bv8!val!50| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!50| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!50| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!51| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!51| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!51| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!51| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!51| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!51| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!51| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!51| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!51| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!51| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!51| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!51| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!51| 131203bv64 -> 255bv8 + |T@[bv64]bv8!val!51| 131204bv64 -> 127bv8 + |T@[bv64]bv8!val!51| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!51| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!51| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!52| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!52| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!52| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!52| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!52| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!52| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!52| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!52| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!52| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!52| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!52| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!52| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!52| 131203bv64 -> 255bv8 + |T@[bv64]bv8!val!52| 131204bv64 -> 127bv8 + |T@[bv64]bv8!val!52| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!52| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!52| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!53| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!53| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!53| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!53| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!53| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!53| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!53| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!53| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!53| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!53| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!53| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!53| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!53| 131203bv64 -> 255bv8 + |T@[bv64]bv8!val!53| 131204bv64 -> 127bv8 + |T@[bv64]bv8!val!53| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!53| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!53| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!58| 96bv64 -> 128bv8 + |T@[bv64]bv8!val!59| 96bv64 -> 128bv8 + |T@[bv64]bv8!val!60| 96bv64 -> 128bv8 + |T@[bv64]bv8!val!7| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!7| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!7| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!7| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!7| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!7| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!7| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!7| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!7| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!7| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!7| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!7| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!7| 131203bv64 -> 255bv8 + |T@[bv64]bv8!val!7| 131204bv64 -> 127bv8 + |T@[bv64]bv8!val!7| 131207bv64 -> 1bv8 + |T@[bv64]bv8!val!7| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!7| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!7| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!8| 130504bv64 -> 208bv8 + |T@[bv64]bv8!val!8| 130505bv64 -> 8bv8 + |T@[bv64]bv8!val!8| 130512bv64 -> 128bv8 + |T@[bv64]bv8!val!8| 130513bv64 -> 8bv8 + |T@[bv64]bv8!val!8| 131032bv64 -> 212bv8 + |T@[bv64]bv8!val!8| 131033bv64 -> 8bv8 + |T@[bv64]bv8!val!8| 131160bv64 -> 88bv8 + |T@[bv64]bv8!val!8| 131162bv64 -> 2bv8 + |T@[bv64]bv8!val!8| 131168bv64 -> 7bv8 + |T@[bv64]bv8!val!8| 131200bv64 -> 254bv8 + |T@[bv64]bv8!val!8| 131201bv64 -> 255bv8 + |T@[bv64]bv8!val!8| 131202bv64 -> 255bv8 + |T@[bv64]bv8!val!8| 131203bv64 -> 255bv8 + |T@[bv64]bv8!val!8| 131204bv64 -> 127bv8 + |T@[bv64]bv8!val!8| 131207bv64 -> 1bv8 + |T@[bv64]bv8!val!8| 18374685929916072154bv64 -> 64bv8 + |T@[bv64]bv8!val!8| 2488bv64 -> 1bv8 + |T@[bv64]bv8!val!8| 2490bv64 -> 2bv8 + |T@[bv64]bv8!val!9| 96bv64 -> 128bv8 + |T@[bv64]bv8!val!9| 99bv64 -> 1bv8 + else -> 0bv8 +} +Select__T@[Int]bv64_ -> { + |T@[Int]bv64!val!1| 1 -> 72058143793741833bv64 + else -> 72058143793741822bv64 +} +Store__T@[bv64]Bool_ -> { + |T@[bv64]Bool!val!0| 131200bv64 true -> |T@[bv64]Bool!val!47| + |T@[bv64]Bool!val!12| 53bv64 false -> |T@[bv64]Bool!val!13| + |T@[bv64]Bool!val!13| 54bv64 false -> |T@[bv64]Bool!val!14| + |T@[bv64]Bool!val!14| 55bv64 false -> |T@[bv64]Bool!val!15| + |T@[bv64]Bool!val!15| 56bv64 false -> |T@[bv64]Bool!val!16| + |T@[bv64]Bool!val!16| 57bv64 false -> |T@[bv64]Bool!val!17| + |T@[bv64]Bool!val!17| 58bv64 false -> |T@[bv64]Bool!val!18| + |T@[bv64]Bool!val!18| 59bv64 false -> |T@[bv64]Bool!val!2| + |T@[bv64]Bool!val!19| 61bv64 false -> |T@[bv64]Bool!val!20| + |T@[bv64]Bool!val!2| 60bv64 false -> |T@[bv64]Bool!val!19| + |T@[bv64]Bool!val!20| 62bv64 false -> |T@[bv64]Bool!val!21| + |T@[bv64]Bool!val!21| 63bv64 false -> |T@[bv64]Bool!val!22| + |T@[bv64]Bool!val!22| 64bv64 false -> |T@[bv64]Bool!val!23| + |T@[bv64]Bool!val!23| 65bv64 false -> |T@[bv64]Bool!val!24| + |T@[bv64]Bool!val!24| 66bv64 false -> |T@[bv64]Bool!val!25| + |T@[bv64]Bool!val!25| 67bv64 false -> |T@[bv64]Bool!val!3| + |T@[bv64]Bool!val!26| 69bv64 false -> |T@[bv64]Bool!val!27| + |T@[bv64]Bool!val!27| 70bv64 false -> |T@[bv64]Bool!val!28| + |T@[bv64]Bool!val!28| 71bv64 false -> |T@[bv64]Bool!val!29| + |T@[bv64]Bool!val!29| 72bv64 false -> |T@[bv64]Bool!val!30| + |T@[bv64]Bool!val!3| 68bv64 false -> |T@[bv64]Bool!val!26| + |T@[bv64]Bool!val!30| 73bv64 false -> |T@[bv64]Bool!val!31| + |T@[bv64]Bool!val!31| 74bv64 false -> |T@[bv64]Bool!val!32| + |T@[bv64]Bool!val!32| 75bv64 false -> |T@[bv64]Bool!val!4| + |T@[bv64]Bool!val!33| 93bv64 true -> |T@[bv64]Bool!val!34| + |T@[bv64]Bool!val!34| 94bv64 true -> |T@[bv64]Bool!val!35| + |T@[bv64]Bool!val!35| 95bv64 true -> |T@[bv64]Bool!val!36| + |T@[bv64]Bool!val!36| 96bv64 true -> |T@[bv64]Bool!val!37| + |T@[bv64]Bool!val!37| 97bv64 true -> |T@[bv64]Bool!val!38| + |T@[bv64]Bool!val!38| 98bv64 true -> |T@[bv64]Bool!val!39| + |T@[bv64]Bool!val!39| 99bv64 true -> |T@[bv64]Bool!val!5| + |T@[bv64]Bool!val!4| 92bv64 true -> |T@[bv64]Bool!val!33| + |T@[bv64]Bool!val!40| 85bv64 true -> |T@[bv64]Bool!val!41| + |T@[bv64]Bool!val!41| 86bv64 true -> |T@[bv64]Bool!val!42| + |T@[bv64]Bool!val!42| 87bv64 true -> |T@[bv64]Bool!val!43| + |T@[bv64]Bool!val!43| 88bv64 true -> |T@[bv64]Bool!val!44| + |T@[bv64]Bool!val!44| 89bv64 true -> |T@[bv64]Bool!val!45| + |T@[bv64]Bool!val!45| 90bv64 true -> |T@[bv64]Bool!val!46| + |T@[bv64]Bool!val!46| 91bv64 true -> |T@[bv64]Bool!val!6| + |T@[bv64]Bool!val!47| 131201bv64 true -> |T@[bv64]Bool!val!48| + |T@[bv64]Bool!val!48| 131202bv64 true -> |T@[bv64]Bool!val!49| + |T@[bv64]Bool!val!49| 131203bv64 true -> |T@[bv64]Bool!val!50| + |T@[bv64]Bool!val!5| 84bv64 true -> |T@[bv64]Bool!val!40| + |T@[bv64]Bool!val!50| 131204bv64 true -> |T@[bv64]Bool!val!51| + |T@[bv64]Bool!val!51| 131205bv64 true -> |T@[bv64]Bool!val!52| + |T@[bv64]Bool!val!52| 131206bv64 true -> |T@[bv64]Bool!val!53| + |T@[bv64]Bool!val!53| 131207bv64 true -> |T@[bv64]Bool!val!7| + |T@[bv64]Bool!val!54| 93bv64 true -> |T@[bv64]Bool!val!55| + |T@[bv64]Bool!val!55| 94bv64 true -> |T@[bv64]Bool!val!56| + |T@[bv64]Bool!val!56| 95bv64 true -> |T@[bv64]Bool!val!57| + |T@[bv64]Bool!val!57| 96bv64 true -> |T@[bv64]Bool!val!58| + |T@[bv64]Bool!val!58| 97bv64 true -> |T@[bv64]Bool!val!59| + |T@[bv64]Bool!val!59| 98bv64 true -> |T@[bv64]Bool!val!60| + |T@[bv64]Bool!val!6| 92bv64 true -> |T@[bv64]Bool!val!54| + |T@[bv64]Bool!val!60| 99bv64 true -> |T@[bv64]Bool!val!9| + |T@[bv64]Bool!val!8| 72058143793741824bv64 true -> |T@[bv64]Bool!val!10| + else -> |T@[bv64]Bool!val!12| +} +Store__T@[bv64]bv8_ -> { + |T@[bv64]bv8!val!0| 131200bv64 254bv8 -> |T@[bv64]bv8!val!47| + |T@[bv64]bv8!val!12| 53bv64 0bv8 -> |T@[bv64]bv8!val!13| + |T@[bv64]bv8!val!13| 54bv64 0bv8 -> |T@[bv64]bv8!val!14| + |T@[bv64]bv8!val!14| 55bv64 0bv8 -> |T@[bv64]bv8!val!15| + |T@[bv64]bv8!val!15| 56bv64 0bv8 -> |T@[bv64]bv8!val!16| + |T@[bv64]bv8!val!16| 57bv64 0bv8 -> |T@[bv64]bv8!val!17| + |T@[bv64]bv8!val!17| 58bv64 0bv8 -> |T@[bv64]bv8!val!18| + |T@[bv64]bv8!val!18| 59bv64 0bv8 -> |T@[bv64]bv8!val!2| + |T@[bv64]bv8!val!19| 61bv64 0bv8 -> |T@[bv64]bv8!val!20| + |T@[bv64]bv8!val!2| 60bv64 0bv8 -> |T@[bv64]bv8!val!19| + |T@[bv64]bv8!val!20| 62bv64 0bv8 -> |T@[bv64]bv8!val!21| + |T@[bv64]bv8!val!21| 63bv64 0bv8 -> |T@[bv64]bv8!val!22| + |T@[bv64]bv8!val!22| 64bv64 0bv8 -> |T@[bv64]bv8!val!23| + |T@[bv64]bv8!val!23| 65bv64 0bv8 -> |T@[bv64]bv8!val!24| + |T@[bv64]bv8!val!24| 66bv64 0bv8 -> |T@[bv64]bv8!val!25| + |T@[bv64]bv8!val!25| 67bv64 0bv8 -> |T@[bv64]bv8!val!3| + |T@[bv64]bv8!val!26| 69bv64 0bv8 -> |T@[bv64]bv8!val!27| + |T@[bv64]bv8!val!27| 70bv64 0bv8 -> |T@[bv64]bv8!val!28| + |T@[bv64]bv8!val!28| 71bv64 0bv8 -> |T@[bv64]bv8!val!29| + |T@[bv64]bv8!val!29| 72bv64 0bv8 -> |T@[bv64]bv8!val!30| + |T@[bv64]bv8!val!3| 68bv64 0bv8 -> |T@[bv64]bv8!val!26| + |T@[bv64]bv8!val!30| 73bv64 0bv8 -> |T@[bv64]bv8!val!31| + |T@[bv64]bv8!val!31| 74bv64 0bv8 -> |T@[bv64]bv8!val!32| + |T@[bv64]bv8!val!32| 75bv64 0bv8 -> |T@[bv64]bv8!val!4| + |T@[bv64]bv8!val!33| 93bv64 0bv8 -> |T@[bv64]bv8!val!34| + |T@[bv64]bv8!val!34| 94bv64 0bv8 -> |T@[bv64]bv8!val!35| + |T@[bv64]bv8!val!35| 95bv64 0bv8 -> |T@[bv64]bv8!val!36| + |T@[bv64]bv8!val!36| 96bv64 0bv8 -> |T@[bv64]bv8!val!37| + |T@[bv64]bv8!val!37| 97bv64 0bv8 -> |T@[bv64]bv8!val!38| + |T@[bv64]bv8!val!38| 98bv64 0bv8 -> |T@[bv64]bv8!val!39| + |T@[bv64]bv8!val!39| 99bv64 0bv8 -> |T@[bv64]bv8!val!5| + |T@[bv64]bv8!val!4| 92bv64 0bv8 -> |T@[bv64]bv8!val!33| + |T@[bv64]bv8!val!40| 85bv64 0bv8 -> |T@[bv64]bv8!val!41| + |T@[bv64]bv8!val!41| 86bv64 0bv8 -> |T@[bv64]bv8!val!42| + |T@[bv64]bv8!val!42| 87bv64 0bv8 -> |T@[bv64]bv8!val!43| + |T@[bv64]bv8!val!43| 88bv64 0bv8 -> |T@[bv64]bv8!val!44| + |T@[bv64]bv8!val!44| 89bv64 0bv8 -> |T@[bv64]bv8!val!45| + |T@[bv64]bv8!val!45| 90bv64 0bv8 -> |T@[bv64]bv8!val!46| + |T@[bv64]bv8!val!46| 91bv64 0bv8 -> |T@[bv64]bv8!val!6| + |T@[bv64]bv8!val!47| 131201bv64 255bv8 -> |T@[bv64]bv8!val!48| + |T@[bv64]bv8!val!48| 131202bv64 255bv8 -> |T@[bv64]bv8!val!49| + |T@[bv64]bv8!val!49| 131203bv64 255bv8 -> |T@[bv64]bv8!val!50| + |T@[bv64]bv8!val!5| 84bv64 0bv8 -> |T@[bv64]bv8!val!40| + |T@[bv64]bv8!val!50| 131204bv64 127bv8 -> |T@[bv64]bv8!val!51| + |T@[bv64]bv8!val!51| 131205bv64 0bv8 -> |T@[bv64]bv8!val!52| + |T@[bv64]bv8!val!52| 131206bv64 0bv8 -> |T@[bv64]bv8!val!53| + |T@[bv64]bv8!val!53| 131207bv64 1bv8 -> |T@[bv64]bv8!val!7| + |T@[bv64]bv8!val!54| 93bv64 0bv8 -> |T@[bv64]bv8!val!55| + |T@[bv64]bv8!val!55| 94bv64 0bv8 -> |T@[bv64]bv8!val!56| + |T@[bv64]bv8!val!56| 95bv64 0bv8 -> |T@[bv64]bv8!val!57| + |T@[bv64]bv8!val!57| 96bv64 128bv8 -> |T@[bv64]bv8!val!58| + |T@[bv64]bv8!val!58| 97bv64 0bv8 -> |T@[bv64]bv8!val!59| + |T@[bv64]bv8!val!59| 98bv64 0bv8 -> |T@[bv64]bv8!val!60| + |T@[bv64]bv8!val!6| 92bv64 0bv8 -> |T@[bv64]bv8!val!54| + |T@[bv64]bv8!val!60| 99bv64 1bv8 -> |T@[bv64]bv8!val!9| + |T@[bv64]bv8!val!8| 72058143793741824bv64 0bv8 -> |T@[bv64]bv8!val!10| + else -> |T@[bv64]bv8!val!12| +} +tickleBool -> { + else -> true +} +*** STATE + #4 -> + Gamma_#4 -> + Gamma_malloc_base -> + Gamma_malloc_count -> + Gamma_malloc_end -> + Gamma_malloc_id -> + Gamma_mem -> |T@[bv64]Bool!val!0| + Gamma_R0 -> + Gamma_R1 -> + Gamma_R16 -> + Gamma_R17 -> + Gamma_R19 -> false + Gamma_R2 -> + Gamma_R29 -> false + Gamma_R30 -> false + Gamma_R31 -> + Gamma_stack -> |T@[bv64]Bool!val!1| + malloc_base -> + malloc_count -> 0 + malloc_end -> + malloc_id -> + mem -> |T@[bv64]bv8!val!0| + R0 -> + R1 -> + R16 -> + R17 -> + R19 -> 0bv64 + R2 -> + R29 -> 0bv64 + R30 -> 0bv64 + R31 -> 100bv64 + stack -> |T@[bv64]bv8!val!1| +*** END_STATE +*** STATE lmain +*** END_STATE +*** STATE %00000384 + #4 -> 52bv64 + Gamma_#4 -> + Gamma_stack -> |T@[bv64]Bool!val!2| + stack -> |T@[bv64]bv8!val!2| +*** END_STATE +*** STATE %0000038a + Gamma_stack -> |T@[bv64]Bool!val!3| + stack -> |T@[bv64]bv8!val!3| +*** END_STATE +*** STATE %0000039c + Gamma_R29 -> + Gamma_R31 -> + Gamma_stack -> |T@[bv64]Bool!val!4| + R29 -> 52bv64 + R31 -> 52bv64 + stack -> |T@[bv64]bv8!val!4| +*** END_STATE +*** STATE %000003a3 + Gamma_stack -> |T@[bv64]Bool!val!5| + stack -> |T@[bv64]bv8!val!5| +*** END_STATE +*** STATE %000003aa + Gamma_stack -> |T@[bv64]Bool!val!6| + stack -> |T@[bv64]bv8!val!6| +*** END_STATE +*** STATE l000003b9 + Gamma_malloc_base -> + Gamma_malloc_count -> + Gamma_malloc_end -> + Gamma_R0 -> true + Gamma_R16 -> + Gamma_R17 -> + Gamma_R30 -> true + malloc_base -> |T@[Int]bv64!val!0| + malloc_count -> 1 + malloc_end -> |T@[Int]bv64!val!1| + R0 -> 72058143793741822bv64 + R16 -> + R17 -> + R30 -> 2288bv64 +*** END_STATE +*** STATE %000003d0 + Gamma_mem -> |T@[bv64]Bool!val!7| + Gamma_R0 -> true + Gamma_R1 -> true + mem -> |T@[bv64]bv8!val!7| + R0 -> 131200bv64 + R1 -> 72058143793741822bv64 +*** END_STATE +*** STATE l000003f7 + Gamma_mem -> |T@[bv64]Bool!val!7| + Gamma_R0 -> true + Gamma_R16 -> + Gamma_R17 -> + Gamma_R19 -> true + Gamma_R30 -> true + mem -> |T@[bv64]bv8!val!7| + R0 -> 8bv64 + R16 -> + R17 -> + R19 -> 72058143793741822bv64 + R30 -> 2328bv64 +*** END_STATE +*** STATE l00000416 + Gamma_mem -> |T@[bv64]Bool!val!8| + Gamma_R0 -> true + Gamma_R1 -> true + Gamma_R16 -> + Gamma_R17 -> + Gamma_R2 -> true + Gamma_R30 -> true + mem -> |T@[bv64]bv8!val!8| + R0 -> 72058143793741822bv64 + R1 -> 131176bv64 + R16 -> + R17 -> + R2 -> 8bv64 + R30 -> 2348bv64 +*** END_STATE +*** STATE l00000430 + Gamma_mem -> |T@[bv64]Bool!val!8| + Gamma_R0 -> true + Gamma_R16 -> + Gamma_R17 -> + Gamma_R30 -> true + mem -> |T@[bv64]bv8!val!8| + R0 -> 72058143793741822bv64 + R16 -> + R17 -> + R30 -> 2364bv64 +*** END_STATE +*** STATE %0000044e + Gamma_mem -> |T@[bv64]Bool!val!8| + Gamma_R0 -> true + Gamma_stack -> |T@[bv64]Bool!val!9| + mem -> |T@[bv64]bv8!val!8| + R0 -> 72058143793741824bv64 + stack -> |T@[bv64]bv8!val!9| +*** END_STATE +*** STATE %0000045c + Gamma_mem -> |T@[bv64]Bool!val!10| + Gamma_R0 -> true + mem -> |T@[bv64]bv8!val!10| + R0 -> 72058143793741824bv64 +*** END_STATE +*** STATE l00000489 + Gamma_mem -> |T@[bv64]Bool!val!10| + Gamma_R0 -> true + Gamma_R16 -> + Gamma_R17 -> + Gamma_R19 -> true + Gamma_R30 -> true + mem -> |T@[bv64]bv8!val!10| + R0 -> 2bv64 + R16 -> + R17 -> + R19 -> 72058143793741822bv64 + R30 -> 2420bv64 +*** END_STATE +*** STATE l000004a2 + Gamma_mem -> |T@[bv64]Bool!val!11| + Gamma_R0 -> true + Gamma_R1 -> true + Gamma_R16 -> + Gamma_R17 -> + Gamma_R2 -> true + Gamma_R30 -> true + mem -> |T@[bv64]bv8!val!11| + R0 -> 72058143793741822bv64 + R1 -> 1bv64 + R16 -> + R17 -> + R2 -> 2bv64 + R30 -> 2436bv64 +*** END_STATE +*** END_MODEL diff --git a/examples/http_parse_basic/example.relf b/examples/http_parse_basic/example.relf index a05c01656..66be10280 100644 --- a/examples/http_parse_basic/example.relf +++ b/examples/http_parse_basic/example.relf @@ -57,10 +57,10 @@ Symbol table '.symtab' contains 98 entries: 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: 00000000000009c8 0 SECTION LOCAL DEFAULT 14 .fini - 15: 00000000000009dc 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 00000000000009e0 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 0000000000000a20 0 SECTION LOCAL DEFAULT 17 .eh_frame + 14: 00000000000009a4 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009b8 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009bc 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009f8 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 @@ -73,16 +73,16 @@ Symbol table '.symtab' contains 98 entries: 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 0000000000000a34 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 00000000000009dc 0 NOTYPE LOCAL DEFAULT 15 $d + 30: 0000000000000a0c 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009b8 0 NOTYPE LOCAL DEFAULT 15 $d 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 00000000000009c8 0 NOTYPE LOCAL DEFAULT 14 $x + 36: 00000000000009a4 0 NOTYPE LOCAL DEFAULT 14 $x 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 00000000000009d4 0 NOTYPE LOCAL DEFAULT 14 $x + 39: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 14 $x 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones @@ -95,19 +95,19 @@ Symbol table '.symtab' contains 98 entries: 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a48 0 NOTYPE LOCAL DEFAULT 17 $d + 52: 0000000000000a20 0 NOTYPE LOCAL DEFAULT 17 $d 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS example.c 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x - 58: 0000000000000aa8 0 NOTYPE LOCAL DEFAULT 17 $d + 58: 0000000000000a80 0 NOTYPE LOCAL DEFAULT 17 $d 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 60: 0000000000000acc 0 NOTYPE LOCAL DEFAULT 17 $d - 61: 0000000000000acc 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 60: 0000000000000aa4 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000aa4 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 64: 00000000000009e0 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 64: 00000000000009bc 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 @@ -119,7 +119,7 @@ Symbol table '.symtab' contains 98 entries: 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata - 76: 00000000000009c8 0 FUNC GLOBAL HIDDEN 14 _fini + 76: 00000000000009a4 0 FUNC GLOBAL HIDDEN 14 _fini 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 @@ -128,7 +128,7 @@ Symbol table '.symtab' contains 98 entries: 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: 00000000000009dc 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 85: 00000000000009b8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 @@ -137,7 +137,7 @@ Symbol table '.symtab' contains 98 entries: 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 94: 00000000000008d4 244 FUNC GLOBAL DEFAULT 13 main + 94: 00000000000008d4 208 FUNC GLOBAL DEFAULT 13 main 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/examples/http_parse_basic/example.spec b/examples/http_parse_basic/example.spec index 0a470d81c..c5d06fc4a 100644 --- a/examples/http_parse_basic/example.spec +++ b/examples/http_parse_basic/example.spec @@ -4,23 +4,23 @@ buf: long stext: char[11] -DIRECT functions: gamma_load64, gamma_load8, memory_load8_le, bvult64, bvule64, bvsub64, gamma_load32 +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])" - Ensures DIRECT: "Gamma_R0 == true" - + 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) && stext==old(stext) +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])" @@ -29,28 +29,48 @@ 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: 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))))" + // 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 - 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])))" + 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: "(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)" +// 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: "(memory_load8_le(mem, bvadd64(old(R0), R0)) == 0bv8)" - Ensures DIRECT: "(bvule64(old(R0), bvadd64(old(R0), R0)))" +// 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/examples/http_parse_basic/extraspec.bpl b/examples/http_parse_basic/extraspec.bpl new file mode 100644 index 000000000..be56c0989 --- /dev/null +++ b/examples/http_parse_basic/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/examples/http_parse_basic/patch.diff b/examples/http_parse_basic/patch.diff new file mode 100644 index 000000000..1a0590f5c --- /dev/null +++ b/examples/http_parse_basic/patch.diff @@ -0,0 +1,12 @@ +--- example.bpl 2023-11-15 10:21:51.302483904 +1000 ++++ examplesetcommented.bpl 2023-11-15 10:22:53.783375817 +1000 +@@ -395,7 +395,8 @@ + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + assert (L(mem, R0) ==> true); +- mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); ++ // commented out ++ // mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%00000418"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 120bv64), Gamma_R0; diff --git a/examples/http_parse_basic/simplememcpy.c b/examples/http_parse_basic/simplememcpy.c new file mode 100644 index 000000000..e69de29bb diff --git a/examples/http_parse_basic/smtout.log b/examples/http_parse_basic/smtout.log new file mode 100644 index 000000000..b74b65bda --- /dev/null +++ b/examples/http_parse_basic/smtout.log @@ -0,0 +1,1679 @@ +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(set-info :boogie-vc-id rely_transitive_split0) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 1) true) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(set-info :boogie-vc-id rely_transitive_split1) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (= mem@0 mem) (=> (and (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02))) (=> (and (and (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02))) (and (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (= mem@1 mem@0)) (and (= Gamma_mem@1 Gamma_mem@0) (= (memory_load8_le mem@1 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@1 #x00000000000009b9) #x00) (= (memory_load8_le mem@1 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@1 #x00000000000009bb) #x00) (= (memory_load8_le mem@1 #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdc9) #x08) (= (memory_load8_le mem@1 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcb) #x00) (= (memory_load8_le mem@1 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdcd) #x00) (= (memory_load8_le mem@1 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcf) #x00) (= (memory_load8_le mem@1 #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd1) #x08) (= (memory_load8_le mem@1 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd3) #x00) (= (memory_load8_le mem@1 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd5) #x00) (= (memory_load8_le mem@1 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd7) #x00) (= (memory_load8_le mem@1 #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffd9) #x08) (= (memory_load8_le mem@1 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdb) #x00) (= (memory_load8_le mem@1 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffdd) #x00) (= (memory_load8_le mem@1 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdf) #x00) (= (memory_load8_le mem@1 #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020059) #x00) (= (memory_load8_le mem@1 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@1 #x000000000002005b) #x00) (= (memory_load8_le mem@1 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000002005d) #x00) (= (memory_load8_le mem@1 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@1 #x000000000002005f) #x00) (= (ControlFlow 0 2) (- 0 1)))))))) (= mem@1 mem))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(set-info :boogie-vc-id rely_transitive_split2) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (and (= mem@0 mem) (= Gamma_mem@0 Gamma_mem)) (=> (and (and (= (memory_load8_le mem@0 #x00000000000009b8) #x01) (= (memory_load8_le mem@0 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@0 #x00000000000009ba) #x02) (= (memory_load8_le mem@0 #x00000000000009bb) #x00))) (=> (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@0 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x80) (= (memory_load8_le mem@0 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@0 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x0000000000020058) #x58) (= (memory_load8_le mem@0 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005a) #x02) (= (memory_load8_le mem@0 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005c) #x00) (= (memory_load8_le mem@0 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005e) #x00) (= (memory_load8_le mem@0 #x000000000002005f) #x00)))) (and (and (and (= mem@1 mem@0) (= Gamma_mem@1 Gamma_mem@0)) (and (= (memory_load8_le mem@1 #x00000000000009b8) #x01) (= (memory_load8_le mem@1 #x00000000000009b9) #x00))) (and (and (= (memory_load8_le mem@1 #x00000000000009ba) #x02) (= (memory_load8_le mem@1 #x00000000000009bb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@1 #x000000000001fdc9) #x08)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdca) #x00) (= (memory_load8_le mem@1 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcc) #x00) (= (memory_load8_le mem@1 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdce) #x00) (= (memory_load8_le mem@1 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd0) #x80) (= (memory_load8_le mem@1 #x000000000001fdd1) #x08)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd2) #x00) (= (memory_load8_le mem@1 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd4) #x00) (= (memory_load8_le mem@1 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd6) #x00) (= (memory_load8_le mem@1 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@1 #x000000000001ffd9) #x08))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffda) #x00) (= (memory_load8_le mem@1 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdc) #x00) (= (memory_load8_le mem@1 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffde) #x00) (= (memory_load8_le mem@1 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020058) #x58) (= (memory_load8_le mem@1 #x0000000000020059) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x000000000002005a) #x02) (= (memory_load8_le mem@1 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@1 #x000000000002005c) #x00) (= (memory_load8_le mem@1 #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000002005e) #x00) (= (memory_load8_le mem@1 #x000000000002005f) #x00)) (and (= mem@1 mem) (= (ControlFlow 0 2) (- 0 1)))))))) (= Gamma_mem@1 Gamma_mem))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(set-info :boogie-vc-id main_split0) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 1) true) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R19 () (_ BitVec 64)) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R19 () Bool) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun malloc_count () Int) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(set-info :boogie-vc-id main_split1) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (= (ControlFlow 0 2) (- 0 1)))) (bvugt #x000000000000000b #x0000000000000000)))))) +(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R19 () (_ BitVec 64)) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R19 () Bool) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun malloc_count () Int) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(set-info :boogie-vc-id main_split2) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= (ControlFlow 0 2) (- 0 1))))) (= true true)))))) +(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R19 () (_ BitVec 64)) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R19 () Bool) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_R0@0 () Bool) +(declare-fun malloc_count@0 () Int) +(declare-fun malloc_count () Int) +(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) +(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun malloc_base () (Array Int (_ BitVec 64))) +(declare-fun malloc_end () (Array Int (_ BitVec 64))) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(set-info :boogie-vc-id main_split3) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= true true)))) (=> (and (and (and (and (and (= (memory_load64_le mem $buf_addr) (memory_load64_le mem $buf_addr)) (= (memory_load8_le mem $password_addr) (memory_load8_le mem $password_addr))) (= Gamma_R0@0 true)) (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0)))) (and (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b))) (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) + :qid |examplebpl.497:19| + :skolemid |11| +)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) + :qid |examplebpl.498:19| + :skolemid |12| +))))) (and (and (and (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) + :qid |examplebpl.500:19| + :skolemid |13| +))) (and (= (memory_load8_le mem #x00000000000009b8) #x01) (= (memory_load8_le mem #x00000000000009b9) #x00))) (and (and (= (memory_load8_le mem #x00000000000009ba) #x02) (= (memory_load8_le mem #x00000000000009bb) #x00)) (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)))) (and (and (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)))))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)))) (and (and (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00))))) (and (and (and (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00)) (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)) (and (= R0@1 (bvadd #x0000000000020000 #x0000000000000080)) (= mem@0 mem)))) (and (and (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02))) (and (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02)))) (and (and (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (= (ControlFlow 0 2) (- 0 1))) (L mem@0 R0@1)))))) Gamma_R0@0))))))) +(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R19 () (_ BitVec 64)) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R19 () Bool) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_R0@0 () Bool) +(declare-fun malloc_count@0 () Int) +(declare-fun malloc_count () Int) +(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) +(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun malloc_base () (Array Int (_ BitVec 64))) +(declare-fun malloc_end () (Array Int (_ BitVec 64))) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@2 () (_ BitVec 64)) +(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) +(declare-fun R19@0 () (_ BitVec 64)) +(declare-fun Gamma_R19@0 () Bool) +(declare-fun R0@3 () (_ BitVec 64)) +(declare-fun Gamma_R0@1 () Bool) +(declare-fun R0@4 () (_ BitVec 64)) +(declare-fun R1@0 () (_ BitVec 64)) +(set-info :boogie-vc-id main_split4) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= true true)))) (and (and (and (= (memory_load64_le mem $buf_addr) (memory_load64_le mem $buf_addr)) (= (memory_load8_le mem $password_addr) (memory_load8_le mem $password_addr))) (= Gamma_R0@0 true)) (and (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0))) (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b)))))) (and (and (and (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) + :qid |examplebpl.497:19| + :skolemid |11| +)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) + :qid |examplebpl.498:19| + :skolemid |12| +))) (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) + :qid |examplebpl.500:19| + :skolemid |13| +)))) (and (and (= (memory_load8_le mem #x00000000000009b8) #x01) (= (memory_load8_le mem #x00000000000009b9) #x00)) (and (= (memory_load8_le mem #x00000000000009ba) #x02) (= (memory_load8_le mem #x00000000000009bb) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= R0@1 (bvadd #x0000000000020000 #x0000000000000080)) (= mem@0 mem)) (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0))))))) (=> (and (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (=> (L mem@0 R0@1) Gamma_R0@0)))))) (and (and (and (and (and (= mem@1 (memory_store64_le mem@0 R0@1 R0@0)) (= Gamma_mem@1 (gamma_store64 Gamma_mem@0 R0@1 Gamma_R0@0))) (= R0@2 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@2 mem@1) (= Gamma_mem@2 Gamma_mem@1))) (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R19@0 (memory_load64_le mem@2 R0@2)) (= Gamma_R19@0 (or (gamma_load64 Gamma_mem@2 R0@2) (L mem@2 R0@2)))) (= R0@3 (bvadd #x0000000000020000 #x0000000000000068))))) (and (and (and (and (= (memory_load64_le mem@2 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@2 $password_addr) (memory_load8_le mem@2 $password_addr))) (= (memory_load8_le mem@2 $stext_addr) (memory_load8_le mem@2 $stext_addr))) (and (= Gamma_R0@1 true) (forall ((i@@4 (_ BitVec 64)) ) (! (=> (and (bvule R0@3 i@@4) (bvult i@@4 (bvadd R0@3 R0@4))) (not (= (select mem@2 i@@4) #x00))) + :qid |examplebpl.812:19| + :skolemid |18| +)))) (and (and (and (= (memory_load8_le mem@2 (bvadd R0@3 R0@4)) #x00) (bvult R0@3 (bvadd (bvadd R0@3 R0@4) #x0000000000000001))) (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00))) (and (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)))))) (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00)) (and (= R1@0 (bvadd #x0000000000020000 #x0000000000000068)) (= (ControlFlow 0 2) (- 0 1))))))))) (or (bvugt R19@0 (bvadd R1@0 R0@4)) (bvugt R1@0 (bvadd R19@0 R0@4))))))))) +(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(get-info :reason-unknown) +(assert (not (= (ControlFlow 0 2) (- 1)))) +(check-sat) +(pop 1) +; Invalid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Invalid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R19 () (_ BitVec 64)) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R19 () Bool) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_R0@0 () Bool) +(declare-fun malloc_count@0 () Int) +(declare-fun malloc_count () Int) +(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) +(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun malloc_base () (Array Int (_ BitVec 64))) +(declare-fun malloc_end () (Array Int (_ BitVec 64))) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@2 () (_ BitVec 64)) +(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) +(declare-fun R19@0 () (_ BitVec 64)) +(declare-fun Gamma_R19@0 () Bool) +(declare-fun R0@3 () (_ BitVec 64)) +(declare-fun Gamma_R0@1 () Bool) +(declare-fun R0@4 () (_ BitVec 64)) +(declare-fun R1@0 () (_ BitVec 64)) +(set-info :boogie-vc-id main_split5) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= true true)))) (and (and (and (= (memory_load64_le mem $buf_addr) (memory_load64_le mem $buf_addr)) (= (memory_load8_le mem $password_addr) (memory_load8_le mem $password_addr))) (= Gamma_R0@0 true)) (and (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0))) (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b)))))) (=> (and (and (and (and (and (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) + :qid |examplebpl.497:19| + :skolemid |11| +)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) + :qid |examplebpl.498:19| + :skolemid |12| +))) (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) + :qid |examplebpl.500:19| + :skolemid |13| +)))) (and (and (= (memory_load8_le mem #x00000000000009b8) #x01) (= (memory_load8_le mem #x00000000000009b9) #x00)) (and (= (memory_load8_le mem #x00000000000009ba) #x02) (= (memory_load8_le mem #x00000000000009bb) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00))))) (and (and (and (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= R0@1 (bvadd #x0000000000020000 #x0000000000000080)) (= mem@0 mem)) (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4))))))) (=> (and (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (=> (L mem@0 R0@1) Gamma_R0@0))))) (and (and (and (and (= mem@1 (memory_store64_le mem@0 R0@1 R0@0)) (= Gamma_mem@1 (gamma_store64 Gamma_mem@0 R0@1 Gamma_R0@0))) (= R0@2 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@2 mem@1) (= Gamma_mem@2 Gamma_mem@1))) (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R19@0 (memory_load64_le mem@2 R0@2)) (= Gamma_R19@0 (or (gamma_load64 Gamma_mem@2 R0@2) (L mem@2 R0@2)))) (= R0@3 (bvadd #x0000000000020000 #x0000000000000068))))))) (and (and (and (and (and (and (= (memory_load64_le mem@2 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@2 $password_addr) (memory_load8_le mem@2 $password_addr))) (= (memory_load8_le mem@2 $stext_addr) (memory_load8_le mem@2 $stext_addr))) (= Gamma_R0@1 true)) (and (forall ((i@@4 (_ BitVec 64)) ) (! (=> (and (bvule R0@3 i@@4) (bvult i@@4 (bvadd R0@3 R0@4))) (not (= (select mem@2 i@@4) #x00))) + :qid |examplebpl.812:19| + :skolemid |18| +)) (= (memory_load8_le mem@2 (bvadd R0@3 R0@4)) #x00))) (and (and (and (bvult R0@3 (bvadd (bvadd R0@3 R0@4) #x0000000000000001)) (= (memory_load8_le mem@2 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@2 #x00000000000009b9) #x00) (= (memory_load8_le mem@2 #x00000000000009ba) #x02))) (and (and (= (memory_load8_le mem@2 #x00000000000009bb) #x00) (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@2 #x000000000001fdc9) #x08) (= (memory_load8_le mem@2 #x000000000001fdca) #x00))))) (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcb) #x00) (= (memory_load8_le mem@2 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdcd) #x00) (= (memory_load8_le mem@2 #x000000000001fdce) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdcf) #x00) (= (memory_load8_le mem@2 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@2 #x000000000001fdd1) #x08) (= (memory_load8_le mem@2 #x000000000001fdd2) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd3) #x00) (= (memory_load8_le mem@2 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd5) #x00) (= (memory_load8_le mem@2 #x000000000001fdd6) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd7) #x00) (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@2 #x000000000001ffd9) #x08) (= (memory_load8_le mem@2 #x000000000001ffda) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdb) #x00) (= (memory_load8_le mem@2 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffdd) #x00) (= (memory_load8_le mem@2 #x000000000001ffde) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffdf) #x00) (= (memory_load8_le mem@2 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@2 #x0000000000020059) #x00) (= (memory_load8_le mem@2 #x000000000002005a) #x02)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005b) #x00) (= (memory_load8_le mem@2 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005d) #x00) (= (memory_load8_le mem@2 #x000000000002005e) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000002005f) #x00) (= R1@0 (bvadd #x0000000000020000 #x0000000000000068))) (and (or (bvugt R19@0 (bvadd R1@0 R0@4)) (bvugt R1@0 (bvadd R19@0 R0@4))) (= (ControlFlow 0 2) (- 0 1))))))))) (and (bvugt (bvadd R19@0 R0@4) R19@0) (bvugt (bvadd R1@0 R0@4) R1@0))))))))) +(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(get-info :reason-unknown) +(assert (not (= (ControlFlow 0 2) (- 1)))) +(check-sat) +(pop 1) +; Invalid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Invalid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R19 () (_ BitVec 64)) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R19 () Bool) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_R0@0 () Bool) +(declare-fun malloc_count@0 () Int) +(declare-fun malloc_count () Int) +(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) +(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun malloc_base () (Array Int (_ BitVec 64))) +(declare-fun malloc_end () (Array Int (_ BitVec 64))) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@2 () (_ BitVec 64)) +(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) +(declare-fun R19@0 () (_ BitVec 64)) +(declare-fun Gamma_R19@0 () Bool) +(declare-fun R0@3 () (_ BitVec 64)) +(declare-fun Gamma_R0@1 () Bool) +(declare-fun R0@4 () (_ BitVec 64)) +(declare-fun R1@0 () (_ BitVec 64)) +(declare-fun mem@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@3 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@5 () (_ BitVec 64)) +(declare-fun mem@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@4 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@6 () (_ BitVec 64)) +(declare-fun Gamma_R0@2 () Bool) +(declare-fun R0@7 () (_ BitVec 64)) +(declare-fun mem@5 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@5 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@8 () (_ BitVec 64)) +(declare-fun Gamma_R0@3 () Bool) +(declare-fun R0@9 () (_ BitVec 64)) +(declare-fun stack@5 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@5 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@10 () (_ BitVec 64)) +(declare-fun Gamma_R0@4 () Bool) +(declare-fun mem@6 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@6 () (Array (_ BitVec 64) Bool)) +(set-info :boogie-vc-id main_split6) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= true true)))) (and (and (and (= (memory_load64_le mem $buf_addr) (memory_load64_le mem $buf_addr)) (= (memory_load8_le mem $password_addr) (memory_load8_le mem $password_addr))) (= Gamma_R0@0 true)) (and (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0))) (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b)))))) (and (and (and (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) + :qid |examplebpl.497:19| + :skolemid |11| +)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) + :qid |examplebpl.498:19| + :skolemid |12| +))) (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) + :qid |examplebpl.500:19| + :skolemid |13| +)))) (and (and (= (memory_load8_le mem #x00000000000009b8) #x01) (= (memory_load8_le mem #x00000000000009b9) #x00)) (and (= (memory_load8_le mem #x00000000000009ba) #x02) (= (memory_load8_le mem #x00000000000009bb) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00)))))) (=> (and (and (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= R0@1 (bvadd #x0000000000020000 #x0000000000000080)) (= mem@0 mem)) (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (=> (L mem@0 R0@1) Gamma_R0@0))))))) (and (and (and (and (and (and (= mem@1 (memory_store64_le mem@0 R0@1 R0@0)) (= Gamma_mem@1 (gamma_store64 Gamma_mem@0 R0@1 Gamma_R0@0))) (= R0@2 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@2 mem@1) (= Gamma_mem@2 Gamma_mem@1))) (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R19@0 (memory_load64_le mem@2 R0@2)) (= Gamma_R19@0 (or (gamma_load64 Gamma_mem@2 R0@2) (L mem@2 R0@2)))) (= R0@3 (bvadd #x0000000000020000 #x0000000000000068))))) (and (and (and (and (= (memory_load64_le mem@2 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@2 $password_addr) (memory_load8_le mem@2 $password_addr))) (= (memory_load8_le mem@2 $stext_addr) (memory_load8_le mem@2 $stext_addr))) (and (and (= Gamma_R0@1 true) (forall ((i@@4 (_ BitVec 64)) ) (! (=> (and (bvule R0@3 i@@4) (bvult i@@4 (bvadd R0@3 R0@4))) (not (= (select mem@2 i@@4) #x00))) + :qid |examplebpl.812:19| + :skolemid |18| +))) (and (= (memory_load8_le mem@2 (bvadd R0@3 R0@4)) #x00) (bvult R0@3 (bvadd (bvadd R0@3 R0@4) #x0000000000000001))))) (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)))))))) (=> (and (and (and (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R1@0 (bvadd #x0000000000020000 #x0000000000000068)) (or (bvugt R19@0 (bvadd R1@0 R0@4)) (bvugt R1@0 (bvadd R19@0 R0@4)))) (and (bvugt (bvadd R19@0 R0@4) R19@0) (bvugt (bvadd R1@0 R0@4) R1@0)))))) (and (and (and (and (and (= (memory_load64_le mem@3 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@3 $password_addr) (memory_load8_le mem@2 $password_addr))) (forall ((i@@5 (_ BitVec 64)) ) (! (= (select Gamma_mem@3 i@@5) (ite (and (bvule R19@0 i@@5) (bvult i@@5 (bvadd R19@0 R0@4))) (gamma_load8 Gamma_mem@3 (bvadd (bvsub i@@5 R19@0) R1@0)) (gamma_load8 Gamma_mem@2 i@@5))) + :qid |examplebpl.579:19| + :skolemid |14| +))) (and (and (forall ((i@@6 (_ BitVec 64)) ) (! (= (select mem@3 i@@6) (ite (and (bvule R19@0 i@@6) (bvult i@@6 (bvadd R19@0 R0@4))) (memory_load8_le mem@3 (bvadd (bvsub i@@6 R19@0) R1@0)) (memory_load8_le mem@2 i@@6))) + :qid |examplebpl.580:19| + :skolemid |15| +)) (= (memory_load8_le mem@3 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@3 #x00000000000009b9) #x00) (= (memory_load8_le mem@3 #x00000000000009ba) #x02)))) (and (and (and (= (memory_load8_le mem@3 #x00000000000009bb) #x00) (= (memory_load8_le mem@3 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@3 #x000000000001fdc9) #x08) (= (memory_load8_le mem@3 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdcb) #x00) (= (memory_load8_le mem@3 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdcd) #x00) (= (memory_load8_le mem@3 #x000000000001fdce) #x00))))) (and (and (and (and (= (memory_load8_le mem@3 #x000000000001fdcf) #x00) (= (memory_load8_le mem@3 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@3 #x000000000001fdd1) #x08) (= (memory_load8_le mem@3 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdd3) #x00) (= (memory_load8_le mem@3 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd5) #x00) (= (memory_load8_le mem@3 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000001fdd7) #x00) (= (memory_load8_le mem@3 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@3 #x000000000001ffd9) #x08) (= (memory_load8_le mem@3 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001ffdb) #x00) (= (memory_load8_le mem@3 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffdd) #x00) (= (memory_load8_le mem@3 #x000000000001ffde) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@3 #x000000000001ffdf) #x00) (= (memory_load8_le mem@3 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@3 #x0000000000020059) #x00) (= (memory_load8_le mem@3 #x000000000002005a) #x02))) (and (and (= (memory_load8_le mem@3 #x000000000002005b) #x00) (= (memory_load8_le mem@3 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@3 #x000000000002005d) #x00) (= (memory_load8_le mem@3 #x000000000002005e) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000002005f) #x00) (= R0@5 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@4 mem@3) (= Gamma_mem@4 Gamma_mem@3))) (and (and (= (memory_load8_le mem@4 #x00000000000009b8) #x01) (= (memory_load8_le mem@4 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@4 #x00000000000009ba) #x02) (= (memory_load8_le mem@4 #x00000000000009bb) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@4 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdca) #x00) (= (memory_load8_le mem@4 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdcc) #x00) (= (memory_load8_le mem@4 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdce) #x00) (= (memory_load8_le mem@4 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd0) #x80) (= (memory_load8_le mem@4 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdd2) #x00) (= (memory_load8_le mem@4 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd4) #x00) (= (memory_load8_le mem@4 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd6) #x00) (= (memory_load8_le mem@4 #x000000000001fdd7) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@4 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001ffda) #x00) (= (memory_load8_le mem@4 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001ffdc) #x00) (= (memory_load8_le mem@4 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffde) #x00) (= (memory_load8_le mem@4 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x0000000000020058) #x58) (= (memory_load8_le mem@4 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005a) #x02) (= (memory_load8_le mem@4 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000002005c) #x00) (= (memory_load8_le mem@4 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005e) #x00) (= (memory_load8_le mem@4 #x000000000002005f) #x00))))) (and (and (and (and (= R0@6 (memory_load64_le mem@4 R0@5)) (= Gamma_R0@2 (or (gamma_load64 Gamma_mem@4 R0@5) (L mem@4 R0@5)))) (= (memory_load8_le mem@4 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@4 #x00000000000009b9) #x00) (= (memory_load8_le mem@4 #x00000000000009ba) #x02))) (and (and (and (= (memory_load8_le mem@4 #x00000000000009bb) #x00) (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@4 #x000000000001fdc9) #x08) (= (memory_load8_le mem@4 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdcb) #x00) (= (memory_load8_le mem@4 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdcd) #x00) (= (memory_load8_le mem@4 #x000000000001fdce) #x00)))))))) (and (and (and (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdcf) #x00) (= (memory_load8_le mem@4 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@4 #x000000000001fdd1) #x08) (= (memory_load8_le mem@4 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd3) #x00) (= (memory_load8_le mem@4 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd5) #x00) (= (memory_load8_le mem@4 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd7) #x00) (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@4 #x000000000001ffd9) #x08) (= (memory_load8_le mem@4 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001ffdb) #x00) (= (memory_load8_le mem@4 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffdd) #x00) (= (memory_load8_le mem@4 #x000000000001ffde) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x000000000001ffdf) #x00) (= (memory_load8_le mem@4 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@4 #x0000000000020059) #x00) (= (memory_load8_le mem@4 #x000000000002005a) #x02))) (and (and (= (memory_load8_le mem@4 #x000000000002005b) #x00) (= (memory_load8_le mem@4 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005d) #x00) (= (memory_load8_le mem@4 #x000000000002005e) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000002005f) #x00) (= R0@7 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@5 mem@4) (= Gamma_mem@5 Gamma_mem@4))) (and (and (= (memory_load8_le mem@5 #x00000000000009b8) #x01) (= (memory_load8_le mem@5 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@5 #x00000000000009ba) #x02) (= (memory_load8_le mem@5 #x00000000000009bb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@5 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@5 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdca) #x00) (= (memory_load8_le mem@5 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdcc) #x00) (= (memory_load8_le mem@5 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdce) #x00) (= (memory_load8_le mem@5 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x000000000001fdd0) #x80) (= (memory_load8_le mem@5 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdd2) #x00) (= (memory_load8_le mem@5 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdd4) #x00) (= (memory_load8_le mem@5 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdd6) #x00) (= (memory_load8_le mem@5 #x000000000001fdd7) #x00))))) (and (and (and (and (= (memory_load8_le mem@5 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@5 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001ffda) #x00) (= (memory_load8_le mem@5 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001ffdc) #x00) (= (memory_load8_le mem@5 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001ffde) #x00) (= (memory_load8_le mem@5 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x0000000000020058) #x58) (= (memory_load8_le mem@5 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005a) #x02) (= (memory_load8_le mem@5 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000002005c) #x00) (= (memory_load8_le mem@5 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005e) #x00) (= (memory_load8_le mem@5 #x000000000002005f) #x00))))))) (and (and (and (and (and (and (= R0@8 (memory_load64_le mem@5 R0@7)) (= Gamma_R0@3 (or (gamma_load64 Gamma_mem@5 R0@7) (L mem@5 R0@7)))) (= R0@9 (bvadd R0@8 #x0000000000000002))) (and (= stack@5 (memory_store64_le stack@4 (bvadd |#4@0| #x0000000000000028) R0@9)) (= Gamma_stack@5 (gamma_store64 Gamma_stack@4 (bvadd |#4@0| #x0000000000000028) Gamma_R0@3)))) (and (and (= R0@10 (memory_load64_le stack@5 (bvadd |#4@0| #x0000000000000028))) (= Gamma_R0@4 (gamma_load64 Gamma_stack@5 (bvadd |#4@0| #x0000000000000028)))) (= mem@6 mem@5))) (and (and (and (= Gamma_mem@6 Gamma_mem@5) (= (memory_load8_le mem@6 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@6 #x00000000000009b9) #x00) (= (memory_load8_le mem@6 #x00000000000009ba) #x02))) (and (and (= (memory_load8_le mem@6 #x00000000000009bb) #x00) (= (memory_load8_le mem@6 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@6 #x000000000001fdc9) #x08) (= (memory_load8_le mem@6 #x000000000001fdca) #x00))))) (and (and (and (and (and (= (memory_load8_le mem@6 #x000000000001fdcb) #x00) (= (memory_load8_le mem@6 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdcd) #x00) (= (memory_load8_le mem@6 #x000000000001fdce) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001fdcf) #x00) (= (memory_load8_le mem@6 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@6 #x000000000001fdd1) #x08) (= (memory_load8_le mem@6 #x000000000001fdd2) #x00)))) (and (and (and (= (memory_load8_le mem@6 #x000000000001fdd3) #x00) (= (memory_load8_le mem@6 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdd5) #x00) (= (memory_load8_le mem@6 #x000000000001fdd6) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001fdd7) #x00) (= (memory_load8_le mem@6 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@6 #x000000000001ffd9) #x08) (= (memory_load8_le mem@6 #x000000000001ffda) #x00))))) (and (and (and (and (= (memory_load8_le mem@6 #x000000000001ffdb) #x00) (= (memory_load8_le mem@6 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@6 #x000000000001ffdd) #x00) (= (memory_load8_le mem@6 #x000000000001ffde) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001ffdf) #x00) (= (memory_load8_le mem@6 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@6 #x0000000000020059) #x00) (= (memory_load8_le mem@6 #x000000000002005a) #x02)))) (and (and (and (= (memory_load8_le mem@6 #x000000000002005b) #x00) (= (memory_load8_le mem@6 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@6 #x000000000002005d) #x00) (= (memory_load8_le mem@6 #x000000000002005e) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000002005f) #x00) (= (ControlFlow 0 2) (- 0 1))) (L mem@6 R0@10)))))))) true))))))) +(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(set-info :boogie-vc-id main_split7) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 1) true) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.63:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.83:57| + :skolemid |20| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |examplebpl.35:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |examplebpl.75:37| + :skolemid |6| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) + :qid |examplebpl.67:33| + :skolemid |5| + :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) + :qid |examplebpl.87:37| + :skolemid |9| + :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.63:56| + :skolemid |19| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) + :qid |examplebpl.55:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@1 index@@4)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) + :qid |examplebpl.51:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@2 index@@5)) +))) +(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) + :qid |examplebpl.59:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@3 index@@6)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020068)) +(assert (= $buf_addr #x0000000000020080)) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) + :qid |examplebpl.79:36| + :skolemid |7| + :pattern ( (memory_load8_le memory@@2 index@@7)) +))) +(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) + :qid |examplebpl.83:38| + :skolemid |8| + :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R19 () (_ BitVec 64)) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R19 () Bool) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_R0@0 () Bool) +(declare-fun malloc_count@0 () Int) +(declare-fun malloc_count () Int) +(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) +(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun malloc_base () (Array Int (_ BitVec 64))) +(declare-fun malloc_end () (Array Int (_ BitVec 64))) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@2 () (_ BitVec 64)) +(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) +(declare-fun R19@0 () (_ BitVec 64)) +(declare-fun Gamma_R19@0 () Bool) +(declare-fun R0@3 () (_ BitVec 64)) +(declare-fun Gamma_R0@1 () Bool) +(declare-fun R0@4 () (_ BitVec 64)) +(declare-fun R1@0 () (_ BitVec 64)) +(declare-fun mem@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@3 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@5 () (_ BitVec 64)) +(declare-fun mem@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@4 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@6 () (_ BitVec 64)) +(declare-fun Gamma_R0@2 () Bool) +(declare-fun R0@7 () (_ BitVec 64)) +(declare-fun mem@5 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@5 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@8 () (_ BitVec 64)) +(declare-fun Gamma_R0@3 () Bool) +(declare-fun R0@9 () (_ BitVec 64)) +(declare-fun stack@5 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@5 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@10 () (_ BitVec 64)) +(declare-fun Gamma_R0@4 () Bool) +(declare-fun mem@6 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@6 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@7 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@7 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@11 () (_ BitVec 64)) +(declare-fun mem@8 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@8 () (Array (_ BitVec 64) Bool)) +(declare-fun R19@1 () (_ BitVec 64)) +(declare-fun Gamma_R19@1 () Bool) +(declare-fun R0@12 () (_ BitVec 64)) +(declare-fun mem@9 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@9 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@13 () (_ BitVec 64)) +(declare-fun Gamma_R0@5 () Bool) +(declare-fun Gamma_R0@6 () Bool) +(declare-fun R0@14 () (_ BitVec 64)) +(declare-fun mem@10 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@10 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@15 () (_ BitVec 64)) +(declare-fun mem@11 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@11 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@16 () (_ BitVec 64)) +(declare-fun Gamma_R0@7 () Bool) +(set-info :boogie-vc-id main_split8) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= true true)))) (=> (and (and (and (and (and (= (memory_load64_le mem $buf_addr) (memory_load64_le mem $buf_addr)) (= (memory_load8_le mem $password_addr) (memory_load8_le mem $password_addr))) (= Gamma_R0@0 true)) (and (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0))) (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b))))) (and (and (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) + :qid |examplebpl.497:19| + :skolemid |11| +)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) + :qid |examplebpl.498:19| + :skolemid |12| +))) (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) + :qid |examplebpl.500:19| + :skolemid |13| +)))) (and (and (= (memory_load8_le mem #x00000000000009b8) #x01) (= (memory_load8_le mem #x00000000000009b9) #x00)) (and (= (memory_load8_le mem #x00000000000009ba) #x02) (= (memory_load8_le mem #x00000000000009bb) #x00))))) (and (and (and (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)))))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00))))) (and (and (and (and (= R0@1 (bvadd #x0000000000020000 #x0000000000000080)) (= mem@0 mem)) (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)))))) (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58))))) (and (and (and (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (=> (L mem@0 R0@1) Gamma_R0@0)))) (and (and (and (= mem@1 (memory_store64_le mem@0 R0@1 R0@0)) (= Gamma_mem@1 (gamma_store64 Gamma_mem@0 R0@1 Gamma_R0@0))) (= R0@2 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@2 mem@1) (= Gamma_mem@2 Gamma_mem@1)))))) (=> (and (and (and (and (and (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R19@0 (memory_load64_le mem@2 R0@2)) (= Gamma_R19@0 (or (gamma_load64 Gamma_mem@2 R0@2) (L mem@2 R0@2)))) (= R0@3 (bvadd #x0000000000020000 #x0000000000000068)))) (and (and (and (= (memory_load64_le mem@2 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@2 $password_addr) (memory_load8_le mem@2 $password_addr))) (= (memory_load8_le mem@2 $stext_addr) (memory_load8_le mem@2 $stext_addr))) (and (and (= Gamma_R0@1 true) (forall ((i@@4 (_ BitVec 64)) ) (! (=> (and (bvule R0@3 i@@4) (bvult i@@4 (bvadd R0@3 R0@4))) (not (= (select mem@2 i@@4) #x00))) + :qid |examplebpl.812:19| + :skolemid |18| +))) (and (= (memory_load8_le mem@2 (bvadd R0@3 R0@4)) #x00) (bvult R0@3 (bvadd (bvadd R0@3 R0@4) #x0000000000000001)))))) (and (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R1@0 (bvadd #x0000000000020000 #x0000000000000068)) (or (bvugt R19@0 (bvadd R1@0 R0@4)) (bvugt R1@0 (bvadd R19@0 R0@4)))) (and (bvugt (bvadd R19@0 R0@4) R19@0) (bvugt (bvadd R1@0 R0@4) R1@0)))) (and (and (and (= (memory_load64_le mem@3 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@3 $password_addr) (memory_load8_le mem@2 $password_addr))) (forall ((i@@5 (_ BitVec 64)) ) (! (= (select Gamma_mem@3 i@@5) (ite (and (bvule R19@0 i@@5) (bvult i@@5 (bvadd R19@0 R0@4))) (gamma_load8 Gamma_mem@3 (bvadd (bvsub i@@5 R19@0) R1@0)) (gamma_load8 Gamma_mem@2 i@@5))) + :qid |examplebpl.579:19| + :skolemid |14| +))) (and (and (forall ((i@@6 (_ BitVec 64)) ) (! (= (select mem@3 i@@6) (ite (and (bvule R19@0 i@@6) (bvult i@@6 (bvadd R19@0 R0@4))) (memory_load8_le mem@3 (bvadd (bvsub i@@6 R19@0) R1@0)) (memory_load8_le mem@2 i@@6))) + :qid |examplebpl.580:19| + :skolemid |15| +)) (= (memory_load8_le mem@3 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@3 #x00000000000009b9) #x00) (= (memory_load8_le mem@3 #x00000000000009ba) #x02)))))) (and (and (and (and (and (= (memory_load8_le mem@3 #x00000000000009bb) #x00) (= (memory_load8_le mem@3 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@3 #x000000000001fdc9) #x08) (= (memory_load8_le mem@3 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdcb) #x00) (= (memory_load8_le mem@3 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdcd) #x00) (= (memory_load8_le mem@3 #x000000000001fdce) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000001fdcf) #x00) (= (memory_load8_le mem@3 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@3 #x000000000001fdd1) #x08) (= (memory_load8_le mem@3 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdd3) #x00) (= (memory_load8_le mem@3 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd5) #x00) (= (memory_load8_le mem@3 #x000000000001fdd6) #x00))))) (and (and (and (and (= (memory_load8_le mem@3 #x000000000001fdd7) #x00) (= (memory_load8_le mem@3 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@3 #x000000000001ffd9) #x08) (= (memory_load8_le mem@3 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001ffdb) #x00) (= (memory_load8_le mem@3 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffdd) #x00) (= (memory_load8_le mem@3 #x000000000001ffde) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000001ffdf) #x00) (= (memory_load8_le mem@3 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@3 #x0000000000020059) #x00) (= (memory_load8_le mem@3 #x000000000002005a) #x02))) (and (and (= (memory_load8_le mem@3 #x000000000002005b) #x00) (= (memory_load8_le mem@3 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@3 #x000000000002005d) #x00) (= (memory_load8_le mem@3 #x000000000002005e) #x00)))))))) (and (and (and (and (and (and (and (= (memory_load8_le mem@3 #x000000000002005f) #x00) (= R0@5 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@4 mem@3) (= Gamma_mem@4 Gamma_mem@3))) (and (and (= (memory_load8_le mem@4 #x00000000000009b8) #x01) (= (memory_load8_le mem@4 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@4 #x00000000000009ba) #x02) (= (memory_load8_le mem@4 #x00000000000009bb) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@4 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdca) #x00) (= (memory_load8_le mem@4 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdcc) #x00) (= (memory_load8_le mem@4 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdce) #x00) (= (memory_load8_le mem@4 #x000000000001fdcf) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd0) #x80) (= (memory_load8_le mem@4 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdd2) #x00) (= (memory_load8_le mem@4 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd4) #x00) (= (memory_load8_le mem@4 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd6) #x00) (= (memory_load8_le mem@4 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@4 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001ffda) #x00) (= (memory_load8_le mem@4 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001ffdc) #x00) (= (memory_load8_le mem@4 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffde) #x00) (= (memory_load8_le mem@4 #x000000000001ffdf) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@4 #x0000000000020058) #x58) (= (memory_load8_le mem@4 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005a) #x02) (= (memory_load8_le mem@4 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000002005c) #x00) (= (memory_load8_le mem@4 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005e) #x00) (= (memory_load8_le mem@4 #x000000000002005f) #x00)))) (and (and (and (= R0@6 (memory_load64_le mem@4 R0@5)) (= Gamma_R0@2 (or (gamma_load64 Gamma_mem@4 R0@5) (L mem@4 R0@5)))) (= (memory_load8_le mem@4 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@4 #x00000000000009b9) #x00) (= (memory_load8_le mem@4 #x00000000000009ba) #x02)))) (and (and (and (and (= (memory_load8_le mem@4 #x00000000000009bb) #x00) (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@4 #x000000000001fdc9) #x08) (= (memory_load8_le mem@4 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdcb) #x00) (= (memory_load8_le mem@4 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdcd) #x00) (= (memory_load8_le mem@4 #x000000000001fdce) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdcf) #x00) (= (memory_load8_le mem@4 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@4 #x000000000001fdd1) #x08) (= (memory_load8_le mem@4 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd3) #x00) (= (memory_load8_le mem@4 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd5) #x00) (= (memory_load8_le mem@4 #x000000000001fdd6) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd7) #x00) (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@4 #x000000000001ffd9) #x08) (= (memory_load8_le mem@4 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001ffdb) #x00) (= (memory_load8_le mem@4 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffdd) #x00) (= (memory_load8_le mem@4 #x000000000001ffde) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001ffdf) #x00) (= (memory_load8_le mem@4 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@4 #x0000000000020059) #x00) (= (memory_load8_le mem@4 #x000000000002005a) #x02))) (and (and (= (memory_load8_le mem@4 #x000000000002005b) #x00) (= (memory_load8_le mem@4 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005d) #x00) (= (memory_load8_le mem@4 #x000000000002005e) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x000000000002005f) #x00) (= R0@7 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@5 mem@4) (= Gamma_mem@5 Gamma_mem@4))) (and (and (= (memory_load8_le mem@5 #x00000000000009b8) #x01) (= (memory_load8_le mem@5 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@5 #x00000000000009ba) #x02) (= (memory_load8_le mem@5 #x00000000000009bb) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@5 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdca) #x00) (= (memory_load8_le mem@5 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdcc) #x00) (= (memory_load8_le mem@5 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdce) #x00) (= (memory_load8_le mem@5 #x000000000001fdcf) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@5 #x000000000001fdd0) #x80) (= (memory_load8_le mem@5 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdd2) #x00) (= (memory_load8_le mem@5 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdd4) #x00) (= (memory_load8_le mem@5 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdd6) #x00) (= (memory_load8_le mem@5 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@5 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001ffda) #x00) (= (memory_load8_le mem@5 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001ffdc) #x00) (= (memory_load8_le mem@5 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001ffde) #x00) (= (memory_load8_le mem@5 #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem@5 #x0000000000020058) #x58) (= (memory_load8_le mem@5 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005a) #x02) (= (memory_load8_le mem@5 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000002005c) #x00) (= (memory_load8_le mem@5 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005e) #x00) (= (memory_load8_le mem@5 #x000000000002005f) #x00)))) (and (and (and (= R0@8 (memory_load64_le mem@5 R0@7)) (= Gamma_R0@3 (or (gamma_load64 Gamma_mem@5 R0@7) (L mem@5 R0@7)))) (= R0@9 (bvadd R0@8 #x0000000000000002))) (and (= stack@5 (memory_store64_le stack@4 (bvadd |#4@0| #x0000000000000028) R0@9)) (= Gamma_stack@5 (gamma_store64 Gamma_stack@4 (bvadd |#4@0| #x0000000000000028) Gamma_R0@3))))))))) (=> (and (and (and (and (and (and (and (and (and (= R0@10 (memory_load64_le stack@5 (bvadd |#4@0| #x0000000000000028))) (= Gamma_R0@4 (gamma_load64 Gamma_stack@5 (bvadd |#4@0| #x0000000000000028)))) (= mem@6 mem@5)) (and (= Gamma_mem@6 Gamma_mem@5) (= (memory_load8_le mem@6 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@6 #x00000000000009b9) #x00) (= (memory_load8_le mem@6 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@6 #x00000000000009bb) #x00) (= (memory_load8_le mem@6 #x000000000001fdc8) #xd0)))) (and (and (and (= (memory_load8_le mem@6 #x000000000001fdc9) #x08) (= (memory_load8_le mem@6 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdcb) #x00) (= (memory_load8_le mem@6 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001fdcd) #x00) (= (memory_load8_le mem@6 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdcf) #x00) (= (memory_load8_le mem@6 #x000000000001fdd0) #x80))))) (and (and (and (and (= (memory_load8_le mem@6 #x000000000001fdd1) #x08) (= (memory_load8_le mem@6 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdd3) #x00) (= (memory_load8_le mem@6 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001fdd5) #x00) (= (memory_load8_le mem@6 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdd7) #x00) (= (memory_load8_le mem@6 #x000000000001ffd8) #xd4)))) (and (and (and (= (memory_load8_le mem@6 #x000000000001ffd9) #x08) (= (memory_load8_le mem@6 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@6 #x000000000001ffdb) #x00) (= (memory_load8_le mem@6 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001ffdd) #x00) (= (memory_load8_le mem@6 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@6 #x000000000001ffdf) #x00) (= (memory_load8_le mem@6 #x0000000000020058) #x58)))))) (and (and (and (and (and (= (memory_load8_le mem@6 #x0000000000020059) #x00) (= (memory_load8_le mem@6 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@6 #x000000000002005b) #x00) (= (memory_load8_le mem@6 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000002005d) #x00) (= (memory_load8_le mem@6 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@6 #x000000000002005f) #x00) (=> (L mem@6 R0@10) true)))) (and (and (and (= mem@7 (memory_store8_le mem@6 R0@10 #x00)) (= Gamma_mem@7 (gamma_store8 Gamma_mem@6 R0@10 true))) (= R0@11 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@8 mem@7) (= Gamma_mem@8 Gamma_mem@7)))) (and (and (and (and (= (memory_load8_le mem@8 #x00000000000009b8) #x01) (= (memory_load8_le mem@8 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@8 #x00000000000009ba) #x02) (= (memory_load8_le mem@8 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@8 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@8 #x000000000001fdca) #x00) (= (memory_load8_le mem@8 #x000000000001fdcb) #x00)))) (and (and (and (= (memory_load8_le mem@8 #x000000000001fdcc) #x00) (= (memory_load8_le mem@8 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@8 #x000000000001fdce) #x00) (= (memory_load8_le mem@8 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001fdd0) #x80) (= (memory_load8_le mem@8 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@8 #x000000000001fdd2) #x00) (= (memory_load8_le mem@8 #x000000000001fdd3) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@8 #x000000000001fdd4) #x00) (= (memory_load8_le mem@8 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@8 #x000000000001fdd6) #x00) (= (memory_load8_le mem@8 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@8 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@8 #x000000000001ffda) #x00) (= (memory_load8_le mem@8 #x000000000001ffdb) #x00)))) (and (and (and (= (memory_load8_le mem@8 #x000000000001ffdc) #x00) (= (memory_load8_le mem@8 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@8 #x000000000001ffde) #x00) (= (memory_load8_le mem@8 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@8 #x0000000000020058) #x58) (= (memory_load8_le mem@8 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@8 #x000000000002005a) #x02) (= (memory_load8_le mem@8 #x000000000002005b) #x00))))) (and (and (and (and (= (memory_load8_le mem@8 #x000000000002005c) #x00) (= (memory_load8_le mem@8 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@8 #x000000000002005e) #x00) (= (memory_load8_le mem@8 #x000000000002005f) #x00))) (and (and (= R19@1 (memory_load64_le mem@8 R0@11)) (= Gamma_R19@1 (or (gamma_load64 Gamma_mem@8 R0@11) (L mem@8 R0@11)))) (= R0@12 (bvadd #x0000000000020000 #x0000000000000080)))) (and (and (and (= mem@9 mem@8) (= Gamma_mem@9 Gamma_mem@8)) (and (= (memory_load8_le mem@9 #x00000000000009b8) #x01) (= (memory_load8_le mem@9 #x00000000000009b9) #x00))) (and (and (= (memory_load8_le mem@9 #x00000000000009ba) #x02) (= (memory_load8_le mem@9 #x00000000000009bb) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@9 #x000000000001fdc9) #x08)))))) (and (and (and (and (and (= (memory_load8_le mem@9 #x000000000001fdca) #x00) (= (memory_load8_le mem@9 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdcc) #x00) (= (memory_load8_le mem@9 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdce) #x00) (= (memory_load8_le mem@9 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdd0) #x80) (= (memory_load8_le mem@9 #x000000000001fdd1) #x08)))) (and (and (and (= (memory_load8_le mem@9 #x000000000001fdd2) #x00) (= (memory_load8_le mem@9 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdd4) #x00) (= (memory_load8_le mem@9 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdd6) #x00) (= (memory_load8_le mem@9 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@9 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@9 #x000000000001ffd9) #x08))))) (and (and (and (and (= (memory_load8_le mem@9 #x000000000001ffda) #x00) (= (memory_load8_le mem@9 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@9 #x000000000001ffdc) #x00) (= (memory_load8_le mem@9 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001ffde) #x00) (= (memory_load8_le mem@9 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@9 #x0000000000020058) #x58) (= (memory_load8_le mem@9 #x0000000000020059) #x00)))) (and (and (and (= (memory_load8_le mem@9 #x000000000002005a) #x02) (= (memory_load8_le mem@9 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@9 #x000000000002005c) #x00) (= (memory_load8_le mem@9 #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000002005e) #x00) (= (memory_load8_le mem@9 #x000000000002005f) #x00)) (and (= R0@13 (memory_load64_le mem@9 R0@12)) (= Gamma_R0@5 (or (gamma_load64 Gamma_mem@9 R0@12) (L mem@9 R0@12)))))))))) (and (and (and (and (and (and (and (= (memory_load64_le mem@9 $buf_addr) (memory_load64_le mem@9 $buf_addr)) (= (memory_load8_le mem@9 $password_addr) (memory_load8_le mem@9 $password_addr))) (= (memory_load8_le mem@9 $stext_addr) (memory_load8_le mem@9 $stext_addr))) (and (and (= Gamma_R0@6 true) (forall ((i@@7 (_ BitVec 64)) ) (! (=> (and (bvule R0@13 i@@7) (bvult i@@7 (bvadd R0@13 R0@14))) (not (= (select mem@9 i@@7) #x00))) + :qid |examplebpl.812:19| + :skolemid |18| +))) (and (= (memory_load8_le mem@9 (bvadd R0@13 R0@14)) #x00) (bvult R0@13 (bvadd (bvadd R0@13 R0@14) #x0000000000000001))))) (and (and (and (= (memory_load8_le mem@9 #x00000000000009b8) #x01) (= (memory_load8_le mem@9 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@9 #x00000000000009ba) #x02) (= (memory_load8_le mem@9 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@9 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@9 #x000000000001fdca) #x00) (= (memory_load8_le mem@9 #x000000000001fdcb) #x00))))) (and (and (and (and (= (memory_load8_le mem@9 #x000000000001fdcc) #x00) (= (memory_load8_le mem@9 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdce) #x00) (= (memory_load8_le mem@9 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdd0) #x80) (= (memory_load8_le mem@9 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@9 #x000000000001fdd2) #x00) (= (memory_load8_le mem@9 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@9 #x000000000001fdd4) #x00) (= (memory_load8_le mem@9 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdd6) #x00) (= (memory_load8_le mem@9 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@9 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@9 #x000000000001ffda) #x00) (= (memory_load8_le mem@9 #x000000000001ffdb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@9 #x000000000001ffdc) #x00) (= (memory_load8_le mem@9 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@9 #x000000000001ffde) #x00) (= (memory_load8_le mem@9 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@9 #x0000000000020058) #x58) (= (memory_load8_le mem@9 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@9 #x000000000002005a) #x02) (= (memory_load8_le mem@9 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@9 #x000000000002005c) #x00) (= (memory_load8_le mem@9 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@9 #x000000000002005e) #x00) (= (memory_load8_le mem@9 #x000000000002005f) #x00))) (and (and (= (memory_load64_le mem@10 $buf_addr) (memory_load64_le mem@9 $buf_addr)) (= (memory_load8_le mem@10 $password_addr) (memory_load8_le mem@9 $password_addr))) (forall ((i@@8 (_ BitVec 64)) ) (! (= (select Gamma_mem@10 i@@8) (ite (and (bvule R19@1 i@@8) (bvult i@@8 (bvadd R19@1 R0@14))) true (gamma_load8 Gamma_mem@9 i@@8))) + :qid |examplebpl.658:19| + :skolemid |16| +))))) (and (and (and (and (forall ((i@@9 (_ BitVec 64)) ) (! (= (select mem@10 i@@9) (ite (and (bvule R19@1 i@@9) (bvult i@@9 (bvadd R19@1 R0@14))) ((_ extract 7 0) #x0000000000000001) (memory_load8_le mem@9 i@@9))) + :qid |examplebpl.659:19| + :skolemid |17| +)) (= (memory_load8_le mem@10 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@10 #x00000000000009b9) #x00) (= (memory_load8_le mem@10 #x00000000000009ba) #x02))) (and (and (= (memory_load8_le mem@10 #x00000000000009bb) #x00) (= (memory_load8_le mem@10 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@10 #x000000000001fdc9) #x08) (= (memory_load8_le mem@10 #x000000000001fdca) #x00)))) (and (and (and (= (memory_load8_le mem@10 #x000000000001fdcb) #x00) (= (memory_load8_le mem@10 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@10 #x000000000001fdcd) #x00) (= (memory_load8_le mem@10 #x000000000001fdce) #x00))) (and (and (= (memory_load8_le mem@10 #x000000000001fdcf) #x00) (= (memory_load8_le mem@10 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@10 #x000000000001fdd1) #x08) (= (memory_load8_le mem@10 #x000000000001fdd2) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@10 #x000000000001fdd3) #x00) (= (memory_load8_le mem@10 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@10 #x000000000001fdd5) #x00) (= (memory_load8_le mem@10 #x000000000001fdd6) #x00))) (and (and (= (memory_load8_le mem@10 #x000000000001fdd7) #x00) (= (memory_load8_le mem@10 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@10 #x000000000001ffd9) #x08) (= (memory_load8_le mem@10 #x000000000001ffda) #x00)))) (and (and (and (= (memory_load8_le mem@10 #x000000000001ffdb) #x00) (= (memory_load8_le mem@10 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@10 #x000000000001ffdd) #x00) (= (memory_load8_le mem@10 #x000000000001ffde) #x00))) (and (and (= (memory_load8_le mem@10 #x000000000001ffdf) #x00) (= (memory_load8_le mem@10 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@10 #x0000000000020059) #x00) (= (memory_load8_le mem@10 #x000000000002005a) #x02))))) (and (and (and (and (= (memory_load8_le mem@10 #x000000000002005b) #x00) (= (memory_load8_le mem@10 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@10 #x000000000002005d) #x00) (= (memory_load8_le mem@10 #x000000000002005e) #x00))) (and (and (= (memory_load8_le mem@10 #x000000000002005f) #x00) (= R0@15 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@11 mem@10) (= Gamma_mem@11 Gamma_mem@10)))) (and (and (and (= (memory_load8_le mem@11 #x00000000000009b8) #x01) (= (memory_load8_le mem@11 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@11 #x00000000000009ba) #x02) (= (memory_load8_le mem@11 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@11 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@11 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@11 #x000000000001fdca) #x00) (= (memory_load8_le mem@11 #x000000000001fdcb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@11 #x000000000001fdcc) #x00) (= (memory_load8_le mem@11 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@11 #x000000000001fdce) #x00) (= (memory_load8_le mem@11 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@11 #x000000000001fdd0) #x80) (= (memory_load8_le mem@11 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@11 #x000000000001fdd2) #x00) (= (memory_load8_le mem@11 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@11 #x000000000001fdd4) #x00) (= (memory_load8_le mem@11 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@11 #x000000000001fdd6) #x00) (= (memory_load8_le mem@11 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@11 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@11 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@11 #x000000000001ffda) #x00) (= (memory_load8_le mem@11 #x000000000001ffdb) #x00))))) (and (and (and (and (= (memory_load8_le mem@11 #x000000000001ffdc) #x00) (= (memory_load8_le mem@11 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@11 #x000000000001ffde) #x00) (= (memory_load8_le mem@11 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@11 #x0000000000020058) #x58) (= (memory_load8_le mem@11 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@11 #x000000000002005a) #x02) (= (memory_load8_le mem@11 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@11 #x000000000002005c) #x00) (= (memory_load8_le mem@11 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@11 #x000000000002005e) #x00) (= (memory_load8_le mem@11 #x000000000002005f) #x00))) (and (and (= R0@16 (memory_load64_le mem@11 R0@15)) (= Gamma_R0@7 (or (gamma_load64 Gamma_mem@11 R0@15) (L mem@11 R0@15)))) (= (ControlFlow 0 2) (- 0 1))))))))) (forall ((i@@10 Int) (j (_ BitVec 64)) ) (! (=> (and (= (select malloc_base@0 i@@10) R0@16) (and (bvuge j R0@16) (bvult j (select malloc_end@0 i@@10)))) (select Gamma_mem@11 j)) + :qid |examplebpl.148:20| + :skolemid |10| +))))))))))) +(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(get-info :reason-unknown) +(assert (not (= (ControlFlow 0 2) (- 1)))) +(check-sat) +(pop 1) +; Invalid +(get-info :rlimit) 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/beans b/examples/memcpy-variants/beans new file mode 100644 index 000000000..c62ff5936 --- /dev/null +++ b/examples/memcpy-variants/beans @@ -0,0 +1,709 @@ +// Boogie program verifier version 3.0.5.0, Copyright (c) 2003-2014, Microsoft. +// Command Line Options: example.bpl extraspec.bpl /vcsSplitOnEveryAssert /printDesugared /printLambdaLifting /print beans + +var {:extern} Gamma_R0: bool; + +var {:extern} Gamma_R1: bool; + +var {:extern} Gamma_R16: bool; + +var {:extern} Gamma_R17: bool; + +var {:extern} Gamma_R2: bool; + +var {:extern} Gamma_R29: bool; + +var {:extern} Gamma_R30: bool; + +var {:extern} Gamma_R31: 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} R2: bv64; + +var {:extern} R29: bv64; + +var {:extern} R30: bv64; + +var {:extern} R31: bv64; + +var {:extern} mem: [bv64]bv8; + +var {:extern} stack: [bv64]bv8; + +const {:extern} $copiedtext_addr: bv64; + +axiom $copiedtext_addr == 131168bv64; + +const {:extern} $text_addr: bv64; + +axiom $text_addr == 131144bv64; + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) : bv64; + +function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) : bv64; + +function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) : bv64; + +function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) : bv64; + +function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) : bool; + +function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) : bool; + +function {:inline} byte_extract64_64(value: bv64, offset: bv64) : bv8 +{ + bvlshr64(value, bvmul64(offset, 8bv64))[8:0] +} + +function {:extern} gamma_load32(gammaMap: [bv64]bool, index: bv64) : bool +uses { +axiom (forall gammaMap: [bv64]bool, index: bv64 :: + {:extern} { gamma_load32(gammaMap, index): bool } + gamma_load32(gammaMap, index): bool + <==> gammaMap[bvadd64(index, 3bv64)] + && + gammaMap[bvadd64(index, 2bv64)] + && + gammaMap[bvadd64(index, 1bv64)] + && gammaMap[index]); +} + +function {:extern} gamma_load64(gammaMap: [bv64]bool, index: bv64) : bool +uses { +axiom (forall gammaMap: [bv64]bool, index: bv64 :: + {:extern} { gamma_load64(gammaMap, index): bool } + gamma_load64(gammaMap, index): 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) : bool +uses { +axiom (forall gammaMap: [bv64]bool, index: bv64 :: + {:extern} { gamma_load8(gammaMap, index): bool } + gamma_load8(gammaMap, index): bool <==> gammaMap[index]); +} + +function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) : [bv64]bool +uses { +axiom (forall gammaMap: [bv64]bool, index: bv64, value: bool :: + {:extern} { gamma_store64(gammaMap, index, value): [bv64]bool } + gamma_store64(gammaMap, index, value): [bv64]bool + == lambda#0(index, 8bv64, value, gammaMap)); +} + +function {:inline} in_bounds64_le(base: bv64, len: bv64, i: bv64) : 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))) +} + +function {:extern} memory_load64_le(memory: [bv64]bv8, index: bv64) : bv64 +uses { +axiom (forall memory: [bv64]bv8, index: bv64 :: + {:extern} { memory_load64_le(memory, index): bv64 } + memory_load64_le(memory, index): 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) : bv8 +uses { +axiom (forall memory: [bv64]bv8, index: bv64 :: + {:extern} { memory_load8_le(memory, index): bv8 } + memory_load8_le(memory, index): bv8 == memory[index]); +} + +function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) : [bv64]bv8 +uses { +axiom (forall memory: [bv64]bv8, index: bv64, value: bv64 :: + {:extern} { memory_store64_le(memory, index, value): [bv64]bv8 } + memory_store64_le(memory, index, value): [bv64]bv8 + == lambda#1(index, 8bv64, value, index, memory)); +} + +procedure {:extern} rely(); + modifies Gamma_mem, mem; + ensures mem == old(mem); + ensures Gamma_mem == old(Gamma_mem); + free ensures memory_load8_le(mem, 2180bv64) == 1bv8; + free ensures memory_load8_le(mem, 2181bv64) == 0bv8; + free ensures memory_load8_le(mem, 2182bv64) == 2bv8; + free ensures memory_load8_le(mem, 2183bv64) == 0bv8; + free ensures memory_load8_le(mem, 130504bv64) == 16bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 192bv8; + free ensures memory_load8_le(mem, 130513bv64) == 7bv8; + 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) == 20bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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, 131136bv64) == 64bv8; + free ensures memory_load8_le(mem, 131137bv64) == 0bv8; + free ensures memory_load8_le(mem, 131138bv64) == 2bv8; + free ensures memory_load8_le(mem, 131139bv64) == 0bv8; + free ensures memory_load8_le(mem, 131140bv64) == 0bv8; + free ensures memory_load8_le(mem, 131141bv64) == 0bv8; + free ensures memory_load8_le(mem, 131142bv64) == 0bv8; + free ensures memory_load8_le(mem, 131143bv64) == 0bv8; + + + +procedure {:extern} rely_transitive(); + modifies Gamma_mem, mem; + ensures mem == old(mem); + ensures Gamma_mem == old(Gamma_mem); + + + +implementation {:extern} rely_transitive() +{ + call rely(); + call rely(); +} + + + +procedure {:extern} rely_reflexive(); + + + +procedure {:extern} guarantee_reflexive(); + modifies Gamma_mem, mem; + + + +procedure main(); + requires malloc_count == 0; + requires R31 == 100bv64; + free requires memory_load8_le(mem, 131128bv64) == 0bv8; + free requires memory_load8_le(mem, 131129bv64) == 0bv8; + free requires memory_load8_le(mem, 131130bv64) == 0bv8; + free requires memory_load8_le(mem, 131131bv64) == 0bv8; + free requires memory_load8_le(mem, 131132bv64) == 0bv8; + free requires memory_load8_le(mem, 131133bv64) == 0bv8; + free requires memory_load8_le(mem, 131134bv64) == 0bv8; + free requires memory_load8_le(mem, 131135bv64) == 0bv8; + free requires memory_load8_le(mem, 131136bv64) == 64bv8; + free requires memory_load8_le(mem, 131137bv64) == 0bv8; + free requires memory_load8_le(mem, 131138bv64) == 2bv8; + free requires memory_load8_le(mem, 131139bv64) == 0bv8; + free requires memory_load8_le(mem, 131140bv64) == 0bv8; + free requires memory_load8_le(mem, 131141bv64) == 0bv8; + free requires memory_load8_le(mem, 131142bv64) == 0bv8; + free requires memory_load8_le(mem, 131143bv64) == 0bv8; + free requires memory_load8_le(mem, 131144bv64) == 66bv8; + free requires memory_load8_le(mem, 131145bv64) == 65bv8; + free requires memory_load8_le(mem, 131146bv64) == 83bv8; + free requires memory_load8_le(mem, 131147bv64) == 73bv8; + free requires memory_load8_le(mem, 131148bv64) == 76bv8; + free requires memory_load8_le(mem, 131149bv64) == 32bv8; + free requires memory_load8_le(mem, 131150bv64) == 86bv8; + free requires memory_load8_le(mem, 131151bv64) == 101bv8; + free requires memory_load8_le(mem, 131152bv64) == 114bv8; + free requires memory_load8_le(mem, 131153bv64) == 105bv8; + free requires memory_load8_le(mem, 131154bv64) == 102bv8; + free requires memory_load8_le(mem, 131155bv64) == 105bv8; + free requires memory_load8_le(mem, 131156bv64) == 101bv8; + free requires memory_load8_le(mem, 131157bv64) == 114bv8; + free requires memory_load8_le(mem, 2180bv64) == 1bv8; + free requires memory_load8_le(mem, 2181bv64) == 0bv8; + free requires memory_load8_le(mem, 2182bv64) == 2bv8; + free requires memory_load8_le(mem, 2183bv64) == 0bv8; + free requires memory_load8_le(mem, 130504bv64) == 16bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 192bv8; + free requires memory_load8_le(mem, 130513bv64) == 7bv8; + 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) == 20bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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, 131136bv64) == 64bv8; + free requires memory_load8_le(mem, 131137bv64) == 0bv8; + free requires memory_load8_le(mem, 131138bv64) == 2bv8; + free requires memory_load8_le(mem, 131139bv64) == 0bv8; + free requires memory_load8_le(mem, 131140bv64) == 0bv8; + free requires memory_load8_le(mem, 131141bv64) == 0bv8; + free requires memory_load8_le(mem, 131142bv64) == 0bv8; + free requires memory_load8_le(mem, 131143bv64) == 0bv8; + modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, mem, stack; + free ensures Gamma_R29 <==> old(Gamma_R29); + free ensures Gamma_R31 <==> old(Gamma_R31); + free ensures R29 == old(R29); + free ensures R31 == old(R31); + free ensures memory_load8_le(mem, 2180bv64) == 1bv8; + free ensures memory_load8_le(mem, 2181bv64) == 0bv8; + free ensures memory_load8_le(mem, 2182bv64) == 2bv8; + free ensures memory_load8_le(mem, 2183bv64) == 0bv8; + free ensures memory_load8_le(mem, 130504bv64) == 16bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 192bv8; + free ensures memory_load8_le(mem, 130513bv64) == 7bv8; + 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) == 20bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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, 131136bv64) == 64bv8; + free ensures memory_load8_le(mem, 131137bv64) == 0bv8; + free ensures memory_load8_le(mem, 131138bv64) == 2bv8; + free ensures memory_load8_le(mem, 131139bv64) == 0bv8; + free ensures memory_load8_le(mem, 131140bv64) == 0bv8; + free ensures memory_load8_le(mem, 131141bv64) == 0bv8; + free ensures memory_load8_le(mem, 131142bv64) == 0bv8; + free ensures memory_load8_le(mem, 131143bv64) == 0bv8; + + + +implementation main() +{ + var #4: bv64; + var Gamma_#4: bool; + + lmain: + assume {:captureState "lmain"} true; + #4, Gamma_#4 := bvadd64(R31, 18446744073709551584bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); + assume {:captureState "%00000310"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); + assume {:captureState "%00000316"} true; + R31, Gamma_R31 := #4, Gamma_#4; + R29, Gamma_R29 := R31, Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), true); + assume {:captureState "%00000327"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), true); + assume {:captureState "%0000032e"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 72bv64), Gamma_R0; + R30, Gamma_R30 := 2096bv64, true; + call strlen(); + assert R0 == 13bv64; + assume {:captureState "l00000343"} true; + R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R1, Gamma_R1 := bvadd64(R0, 72bv64), Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 96bv64), Gamma_R0; + R30, Gamma_R30 := 2124bv64, true; + call memcpy(); + assume {:captureState "l0000036d"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 96bv64), Gamma_R0; + R30, Gamma_R30 := 2136bv64, true; + call puts(); + assume {:captureState "l00000380"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 72bv64), Gamma_R0; + R30, Gamma_R30 := 2148bv64, true; + call puts(); + assume {:captureState "l00000392"} true; + R0, Gamma_R0 := 0bv64, true; + 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, 32bv64), Gamma_R31; + goto l00000343; + + l00000343: + assume {:captureState "l00000343"} true; + R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R1, Gamma_R1 := bvadd64(R0, 72bv64), Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 96bv64), Gamma_R0; + R30, Gamma_R30 := 2124bv64, true; + call memcpy(); + goto l0000036d; + + l0000036d: + assume {:captureState "l0000036d"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 96bv64), Gamma_R0; + R30, Gamma_R30 := 2136bv64, true; + call puts(); + goto l00000380; + + l00000380: + assume {:captureState "l00000380"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 72bv64), Gamma_R0; + R30, Gamma_R30 := 2148bv64, true; + call puts(); + goto l00000392; + + l00000392: + assume {:captureState "l00000392"} true; + R0, Gamma_R0 := 0bv64, true; + 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, 32bv64), Gamma_R31; + return; +} + + + +procedure memcpy(); + requires bvugt64(R0, bvadd64(R1, R2)) || bvugt64(R1, bvadd64(R0, R2)); + requires bvugt64(bvadd64(R0, R2), R0) && bvugt64(bvadd64(R1, R2), R1); + free requires memory_load8_le(mem, 2180bv64) == 1bv8; + free requires memory_load8_le(mem, 2181bv64) == 0bv8; + free requires memory_load8_le(mem, 2182bv64) == 2bv8; + free requires memory_load8_le(mem, 2183bv64) == 0bv8; + free requires memory_load8_le(mem, 130504bv64) == 16bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 192bv8; + free requires memory_load8_le(mem, 130513bv64) == 7bv8; + 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) == 20bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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, 131136bv64) == 64bv8; + free requires memory_load8_le(mem, 131137bv64) == 0bv8; + free requires memory_load8_le(mem, 131138bv64) == 2bv8; + free requires memory_load8_le(mem, 131139bv64) == 0bv8; + free requires memory_load8_le(mem, 131140bv64) == 0bv8; + free requires memory_load8_le(mem, 131141bv64) == 0bv8; + free requires memory_load8_le(mem, 131142bv64) == 0bv8; + free requires memory_load8_le(mem, 131143bv64) == 0bv8; + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + 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, 2180bv64) == 1bv8; + free ensures memory_load8_le(mem, 2181bv64) == 0bv8; + free ensures memory_load8_le(mem, 2182bv64) == 2bv8; + free ensures memory_load8_le(mem, 2183bv64) == 0bv8; + free ensures memory_load8_le(mem, 130504bv64) == 16bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 192bv8; + free ensures memory_load8_le(mem, 130513bv64) == 7bv8; + 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) == 20bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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, 131136bv64) == 64bv8; + free ensures memory_load8_le(mem, 131137bv64) == 0bv8; + free ensures memory_load8_le(mem, 131138bv64) == 2bv8; + free ensures memory_load8_le(mem, 131139bv64) == 0bv8; + free ensures memory_load8_le(mem, 131140bv64) == 0bv8; + free ensures memory_load8_le(mem, 131141bv64) == 0bv8; + free ensures memory_load8_le(mem, 131142bv64) == 0bv8; + free ensures memory_load8_le(mem, 131143bv64) == 0bv8; + + + +procedure puts(); + free requires memory_load8_le(mem, 2180bv64) == 1bv8; + free requires memory_load8_le(mem, 2181bv64) == 0bv8; + free requires memory_load8_le(mem, 2182bv64) == 2bv8; + free requires memory_load8_le(mem, 2183bv64) == 0bv8; + free requires memory_load8_le(mem, 130504bv64) == 16bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 192bv8; + free requires memory_load8_le(mem, 130513bv64) == 7bv8; + 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) == 20bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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, 131136bv64) == 64bv8; + free requires memory_load8_le(mem, 131137bv64) == 0bv8; + free requires memory_load8_le(mem, 131138bv64) == 2bv8; + free requires memory_load8_le(mem, 131139bv64) == 0bv8; + free requires memory_load8_le(mem, 131140bv64) == 0bv8; + free requires memory_load8_le(mem, 131141bv64) == 0bv8; + free requires memory_load8_le(mem, 131142bv64) == 0bv8; + free requires memory_load8_le(mem, 131143bv64) == 0bv8; + modifies Gamma_R16, Gamma_R17, R16, R17; + free ensures memory_load8_le(mem, 2180bv64) == 1bv8; + free ensures memory_load8_le(mem, 2181bv64) == 0bv8; + free ensures memory_load8_le(mem, 2182bv64) == 2bv8; + free ensures memory_load8_le(mem, 2183bv64) == 0bv8; + free ensures memory_load8_le(mem, 130504bv64) == 16bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 192bv8; + free ensures memory_load8_le(mem, 130513bv64) == 7bv8; + 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) == 20bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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, 131136bv64) == 64bv8; + free ensures memory_load8_le(mem, 131137bv64) == 0bv8; + free ensures memory_load8_le(mem, 131138bv64) == 2bv8; + free ensures memory_load8_le(mem, 131139bv64) == 0bv8; + free ensures memory_load8_le(mem, 131140bv64) == 0bv8; + free ensures memory_load8_le(mem, 131141bv64) == 0bv8; + free ensures memory_load8_le(mem, 131142bv64) == 0bv8; + free ensures memory_load8_le(mem, 131143bv64) == 0bv8; + + + +procedure strlen(); + free requires memory_load8_le(mem, 2180bv64) == 1bv8; + free requires memory_load8_le(mem, 2181bv64) == 0bv8; + free requires memory_load8_le(mem, 2182bv64) == 2bv8; + free requires memory_load8_le(mem, 2183bv64) == 0bv8; + free requires memory_load8_le(mem, 130504bv64) == 16bv8; + free requires memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 192bv8; + free requires memory_load8_le(mem, 130513bv64) == 7bv8; + 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) == 20bv8; + free requires memory_load8_le(mem, 131033bv64) == 8bv8; + 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, 131136bv64) == 64bv8; + free requires memory_load8_le(mem, 131137bv64) == 0bv8; + free requires memory_load8_le(mem, 131138bv64) == 2bv8; + free requires memory_load8_le(mem, 131139bv64) == 0bv8; + free requires memory_load8_le(mem, 131140bv64) == 0bv8; + free requires memory_load8_le(mem, 131141bv64) == 0bv8; + free requires memory_load8_le(mem, 131142bv64) == 0bv8; + free requires memory_load8_le(mem, 131143bv64) == 0bv8; + modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; + 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, 2180bv64) == 1bv8; + free ensures memory_load8_le(mem, 2181bv64) == 0bv8; + free ensures memory_load8_le(mem, 2182bv64) == 2bv8; + free ensures memory_load8_le(mem, 2183bv64) == 0bv8; + free ensures memory_load8_le(mem, 130504bv64) == 16bv8; + free ensures memory_load8_le(mem, 130505bv64) == 8bv8; + 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) == 192bv8; + free ensures memory_load8_le(mem, 130513bv64) == 7bv8; + 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) == 20bv8; + free ensures memory_load8_le(mem, 131033bv64) == 8bv8; + 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, 131136bv64) == 64bv8; + free ensures memory_load8_le(mem, 131137bv64) == 0bv8; + free ensures memory_load8_le(mem, 131138bv64) == 2bv8; + free ensures memory_load8_le(mem, 131139bv64) == 0bv8; + free ensures memory_load8_le(mem, 131140bv64) == 0bv8; + free ensures memory_load8_le(mem, 131141bv64) == 0bv8; + free ensures memory_load8_le(mem, 131142bv64) == 0bv8; + free ensures memory_load8_le(mem, 131143bv64) == 0bv8; + + + +function {:bvbuiltin "bvuge"} bvuge64(bv64, bv64) : bool; + +function {:bvbuiltin "bvugt"} bvugt64(bv64, bv64) : 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; + +function {:inline} in_bounds64(base: bv64, len: bv64, i: bv64) : 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))) +} + +// auto-generated lambda function +function lambda#0(l#0: bv64, l#1: bv64, l#2: bool, l#3: [bv64]bool) : [bv64]bool +uses { +axiom (forall l#0: bv64, l#1: bv64, l#2: bool, l#3: [bv64]bool, i: bv64 :: + { lambda#0(l#0, l#1, l#2, l#3)[i] } + lambda#0(l#0, l#1, l#2, l#3)[i] + == (if in_bounds64(l#0, l#1, i) then l#2 else l#3[i])); +} + +// auto-generated lambda function +function lambda#1(l#0: bv64, l#1: bv64, l#2: bv64, l#3: bv64, l#4: [bv64]bv8) : [bv64]bv8 +uses { +axiom (forall l#0: bv64, l#1: bv64, l#2: bv64, l#3: bv64, l#4: [bv64]bv8, i: bv64 :: + { lambda#1(l#0, l#1, l#2, l#3, l#4)[i] } + lambda#1(l#0, l#1, l#2, l#3, l#4)[i] + == (if in_bounds64(l#0, l#1, i) + then byte_extract64_64(l#2, bvsub64(i, l#3)) + else l#4[i])); +} 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.bpl.orig b/examples/memcpy-variants/example.bpl.orig new file mode 100644 index 000000000..1fd507a9d --- /dev/null +++ b/examples/memcpy-variants/example.bpl.orig @@ -0,0 +1,691 @@ +var {:extern} Gamma_R0: bool; +var {:extern} Gamma_R1: bool; +var {:extern} Gamma_R16: bool; +var {:extern} Gamma_R17: bool; +var {:extern} Gamma_R2: 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} R2: 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 == 131184bv64); +const {:extern} $password_addr: bv64; +axiom ($password_addr == 131152bv64); +const {:extern} $stext_addr: bv64; +axiom ($stext_addr == 131160bv64); +function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { + (if ((index == bvadd64($stext_addr, 9bv64)) || ((index == bvadd64($stext_addr, 8bv64)) || ((index == bvadd64($stext_addr, 7bv64)) || ((index == bvadd64($stext_addr, 6bv64)) || ((index == bvadd64($stext_addr, 5bv64)) || ((index == bvadd64($stext_addr, 4bv64)) || ((index == bvadd64($stext_addr, 3bv64)) || ((index == bvadd64($stext_addr, 2bv64)) || ((index == bvadd64($stext_addr, 1bv64)) || (index == bvadd64($stext_addr, 0bv64))))))))))) then true else (if (index == $password_addr) then false else (if (index == $buf_addr) then true else false))) +} + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvlshr"} bvlshr16(bv16, bv16) returns (bv16); +function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) returns (bool); +function {:inline} byte_extract16_64(value: bv16, offset: bv64) returns (bv8) { + bvlshr16(value, bvmul64(offset, 8bv64)[16:0])[8:0] +} + +function {:inline} byte_extract64_64(value: bv64, offset: bv64) returns (bv8) { + bvlshr64(value, bvmul64(offset, 8bv64))[8:0] +} + +function {:extern} gamma_load16(gammaMap: [bv64]bool, index: bv64) returns (bool) { + (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]) +} + +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_store16(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + (lambda i: bv64 :: ((if in_bounds64(index, 2bv64, i) then value else gammaMap[i]))) +} + +function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then value else gammaMap[i]))) +} + +function {:extern} gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + gammaMap[index := value] +} + +function {:inline} in_bounds64_le(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)))) +} + +function {:extern} memory_load16_le(memory: [bv64]bv8, index: bv64) returns (bv16) { + (memory[bvadd64(index, 1bv64)] ++ memory[index]) +} + +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_store16_le(memory: [bv64]bv8, index: bv64, value: bv16) returns ([bv64]bv8) { + (lambda i: bv64 :: ((if in_bounds64(index, 2bv64, i) then byte_extract16_64(value, bvsub64(i, index)) else memory[i]))) +} + +function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) returns ([bv64]bv8) { + (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then byte_extract64_64(value, bvsub64(i, index)) else memory[i]))) +} + +function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { + memory[index := value] +} + +function {:extern} {:bvbuiltin "zero_extend 48"} zero_extend48_16(bv16) returns (bv64); +procedure {:extern} rely(); + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); + free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 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, 2328bv64) == 1bv8); + free requires (memory_load8_le(mem, 2329bv64) == 0bv8); + free requires (memory_load8_le(mem, 2330bv64) == 2bv8); + free requires (memory_load8_le(mem, 2331bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 80bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); + +procedure main() + modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, 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, 131136bv64) == 0bv8); + free requires (memory_load8_le(mem, 131137bv64) == 0bv8); + free requires (memory_load8_le(mem, 131138bv64) == 0bv8); + free requires (memory_load8_le(mem, 131139bv64) == 0bv8); + free requires (memory_load8_le(mem, 131140bv64) == 0bv8); + free requires (memory_load8_le(mem, 131141bv64) == 0bv8); + free requires (memory_load8_le(mem, 131142bv64) == 0bv8); + free requires (memory_load8_le(mem, 131143bv64) == 0bv8); + free requires (memory_load8_le(mem, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 0bv8); + free requires (memory_load8_le(mem, 131152bv64) == 7bv8); + 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) == 108bv8); + free requires (memory_load8_le(mem, 131161bv64) == 107bv8); + free requires (memory_load8_le(mem, 131162bv64) == 97bv8); + free requires (memory_load8_le(mem, 131163bv64) == 106bv8); + free requires (memory_load8_le(mem, 131164bv64) == 100bv8); + free requires (memory_load8_le(mem, 131165bv64) == 108bv8); + free requires (memory_load8_le(mem, 131166bv64) == 107bv8); + free requires (memory_load8_le(mem, 131167bv64) == 97bv8); + free requires (memory_load8_le(mem, 131168bv64) == 106bv8); + free requires (memory_load8_le(mem, 131169bv64) == 100bv8); + free requires (memory_load8_le(mem, 2328bv64) == 1bv8); + free requires (memory_load8_le(mem, 2329bv64) == 0bv8); + free requires (memory_load8_le(mem, 2330bv64) == 2bv8); + free requires (memory_load8_le(mem, 2331bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 80bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 0bv8); + free ensures (Gamma_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); +{ + var #4: bv64; + var Gamma_#4: bool; + lmain: + assume {:captureState "lmain"} true; + #4, Gamma_#4 := bvadd64(R31, 18446744073709551584bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); + assume {:captureState "%00000364"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); + assume {:captureState "%0000036a"} true; + R31, Gamma_R31 := #4, Gamma_#4; + R29, Gamma_R29 := R31, Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), true); + assume {:captureState "%0000037b"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), true); + assume {:captureState "%00000382"} true; + R0, Gamma_R0 := 10bv64, true; + R30, Gamma_R30 := 2156bv64, true; + call malloc(); + goto l00000391; + l00000391: + assume {:captureState "l00000391"} true; + R1, Gamma_R1 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + assert (L(mem, R0) ==> Gamma_R1); + mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); + assume {:captureState "%000003a8"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + R2, Gamma_R2 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 131072bv64, true; + R1, Gamma_R1 := bvadd64(R0, 88bv64), Gamma_R0; + R0, Gamma_R0 := R2, Gamma_R2; + call rely(); + R2, Gamma_R2 := memory_load64_le(mem, R1), (gamma_load64(Gamma_mem, R1) || L(mem, R1)); + call rely(); + assert (L(mem, R0) ==> Gamma_R2); + mem, Gamma_mem := memory_store64_le(mem, R0, R2), gamma_store64(Gamma_mem, R0, Gamma_R2); + assume {:captureState "%000003da"} true; + call rely(); + R1, Gamma_R1 := zero_extend48_16(memory_load16_le(mem, bvadd64(R1, 8bv64))), (gamma_load16(Gamma_mem, bvadd64(R1, 8bv64)) || L(mem, bvadd64(R1, 8bv64))); + call rely(); + assert (L(mem, bvadd64(R0, 8bv64)) ==> Gamma_R1); + mem, Gamma_mem := memory_store16_le(mem, bvadd64(R0, 8bv64), R1[16:0]), gamma_store16(Gamma_mem, bvadd64(R0, 8bv64), Gamma_R1); + assume {:captureState "%000003e9"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2228bv64, true; + call puts(); + goto l00000405; + l00000405: + assume {:captureState "l00000405"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R0); + assume {:captureState "%00000423"} true; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + assert (L(mem, R0) ==> true); + mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%00000431"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R2, Gamma_R2 := 10bv64, true; + R1, Gamma_R1 := 1bv64, true; + R30, Gamma_R30 := 2280bv64, true; + call memset(); + goto l00000457; + l00000457: + assume {:captureState "l00000457"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2296bv64, true; + call #free(); + goto l00000471; + l00000471: + assume {:captureState "l00000471"} true; + R0, Gamma_R0 := 0bv64, true; + 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, 32bv64), 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, 2328bv64) == 1bv8); + free requires (memory_load8_le(mem, 2329bv64) == 0bv8); + free requires (memory_load8_le(mem, 2330bv64) == 2bv8); + free requires (memory_load8_le(mem, 2331bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 80bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 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 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, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); + +procedure memset(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + requires Gamma_R1; + free requires (memory_load8_le(mem, 2328bv64) == 1bv8); + free requires (memory_load8_le(mem, 2329bv64) == 0bv8); + free requires (memory_load8_le(mem, 2330bv64) == 2bv8); + free requires (memory_load8_le(mem, 2331bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 80bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 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_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, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); + +procedure puts(); + modifies Gamma_R16, Gamma_R17, R16, R17; + free requires (memory_load8_le(mem, 2328bv64) == 1bv8); + free requires (memory_load8_le(mem, 2329bv64) == 0bv8); + free requires (memory_load8_le(mem, 2330bv64) == 2bv8); + free requires (memory_load8_le(mem, 2331bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 80bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free requires (memory_load8_le(mem, 131145bv64) == 0bv8); + free requires (memory_load8_le(mem, 131146bv64) == 2bv8); + free requires (memory_load8_le(mem, 131147bv64) == 0bv8); + free requires (memory_load8_le(mem, 131148bv64) == 0bv8); + free requires (memory_load8_le(mem, 131149bv64) == 0bv8); + free requires (memory_load8_le(mem, 131150bv64) == 0bv8); + free requires (memory_load8_le(mem, 131151bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 0bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 84bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 131144bv64) == 72bv8); + free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); diff --git a/examples/memcpy-variants/example.bpl.rej b/examples/memcpy-variants/example.bpl.rej new file mode 100644 index 000000000..1a0590f5c --- /dev/null +++ b/examples/memcpy-variants/example.bpl.rej @@ -0,0 +1,12 @@ +--- example.bpl 2023-11-15 10:21:51.302483904 +1000 ++++ examplesetcommented.bpl 2023-11-15 10:22:53.783375817 +1000 +@@ -395,7 +395,8 @@ + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + assert (L(mem, R0) ==> true); +- mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); ++ // commented out ++ // mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%00000418"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 120bv64), Gamma_R0; 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.model b/examples/memcpy-variants/example.model new file mode 100644 index 000000000..59aa92e76 --- /dev/null +++ b/examples/memcpy-variants/example.model @@ -0,0 +1,488 @@ +*** MODEL +#4 -> +#4@0 -> 84bv64 +$copiedtext_addr -> 131152bv64 +$text_addr -> 131128bv64 +Gamma_#4 -> +Gamma_malloc_base -> +Gamma_malloc_count -> +Gamma_malloc_end -> +Gamma_malloc_id -> +Gamma_mem -> (let (_ (a!1 (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 35184372088832 64) false) (_ 131141 64) false) (_ 131152 64) false))) (store (a!1) (_ (bv0) 64) false)) +Gamma_mem@0 -> (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 35184372088832 64) false) (_ 131141 64) false) (_ 131165 64) false) +Gamma_R0 -> +Gamma_R1 -> +Gamma_R16 -> +Gamma_R16@0 -> +Gamma_R17 -> +Gamma_R17@0 -> +Gamma_R2 -> +Gamma_R29 -> false +Gamma_R29@0 -> false +Gamma_R30 -> false +Gamma_R30@0 -> false +Gamma_R31 -> +Gamma_stack -> (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 128 64) false) (_ (bv2) 64) false) (_ 65536 64) false) +Gamma_stack@0 -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ (bv96) 64)) (= (x!1) (_ 35184372088832 64)))) +Gamma_stack@1 -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ 35184372088832 64)))) +malloc_base -> +malloc_count -> 0 +malloc_end -> +malloc_id -> +mem -> (_ (as-array) (k!0)) +mem@0 -> (_ (as-array) (k!7)) +R0 -> +R0@0 -> 131152bv64 +R1 -> +R1@0 -> 131128bv64 +R16 -> +R16@0 -> +R17 -> +R17@0 -> +R2 -> +R29 -> 0bv64 +R29@0 -> 0bv64 +R30 -> 0bv64 +R30@0 -> 0bv64 +R31 -> 100bv64 +R31@0 -> 100bv64 +stack -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv88) 64) (_ 128 8)) (_ (bv92) 64) (_ (bv2) 8)) +stack@0 -> (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv92) 64) (_ (bv2) 8)) +stack@1 -> (_ (as (const) (Array (bv64) (bv8))) 0bv8) +ControlFlow -> { + 0 2 -> (- 1) + 0 4 -> 2 + else -> 4 +} +gamma_load64 -> { + else -> false +} +gamma_load8 -> { + (_ (as-array) (k!8)) 131141bv64 -> false + (_ (as-array) (k!9)) 131141bv64 -> false + (_ (as-array) (k!9)) 35184372088832bv64 -> false + else -> true +} +gamma_store64 -> { + (_ (as-array) (k!4)) 92bv64 false -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ 35184372088832 64)))) + else -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ (bv96) 64)) (= (x!1) (_ 35184372088832 64)))) +} +k!0 -> { + 0bv64 -> 16bv8 + 130504bv64 -> 80bv8 + 130505bv64 -> 7bv8 + 130513bv64 -> 7bv8 + 131032bv64 -> 84bv8 + 131033bv64 -> 7bv8 + 131120bv64 -> 48bv8 + 131122bv64 -> 2bv8 + 131128bv64 -> 66bv8 + 131129bv64 -> 65bv8 + 131130bv64 -> 83bv8 + 131131bv64 -> 73bv8 + 131132bv64 -> 76bv8 + 131133bv64 -> 32bv8 + 131134bv64 -> 86bv8 + 131135bv64 -> 101bv8 + 131136bv64 -> 114bv8 + 131137bv64 -> 105bv8 + 131138bv64 -> 102bv8 + 131139bv64 -> 105bv8 + 131140bv64 -> 101bv8 + 131141bv64 -> 114bv8 + 131165bv64 -> 34bv8 + 1940bv64 -> 1bv8 + 1942bv64 -> 2bv8 + 20bv64 -> 128bv8 + 33554432bv64 -> 4bv8 + else -> 0bv8 +} +k!7 -> { + 1152921504606846976bv64 -> 64bv8 + 130504bv64 -> 80bv8 + 130505bv64 -> 7bv8 + 130513bv64 -> 7bv8 + 131032bv64 -> 84bv8 + 131033bv64 -> 7bv8 + 131120bv64 -> 48bv8 + 131122bv64 -> 2bv8 + 131140bv64 -> 101bv8 + 131141bv64 -> 114bv8 + 131152bv64 -> 66bv8 + 131153bv64 -> 65bv8 + 131154bv64 -> 83bv8 + 131155bv64 -> 73bv8 + 131156bv64 -> 76bv8 + 131157bv64 -> 32bv8 + 131158bv64 -> 86bv8 + 131159bv64 -> 101bv8 + 131160bv64 -> 114bv8 + 131161bv64 -> 105bv8 + 131162bv64 -> 102bv8 + 131165bv64 -> 114bv8 + 1940bv64 -> 1bv8 + 1942bv64 -> 2bv8 + 96bv64 -> 2bv8 + else -> 0bv8 +} +lambda#0 -> { + 92bv64 8bv64 false (_ (as-array) (k!4)) -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ 35184372088832 64)))) + else -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ (bv96) 64)) (= (x!1) (_ 35184372088832 64)))) +} +lambda#1 -> { + 92bv64 8bv64 0bv64 92bv64 (_ (as-array) (k!2)) -> (_ (as (const) (Array (bv64) (bv8))) 0bv8) + else -> (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv92) 64) (_ (bv2) 8)) +} +memory_load64_le -> { + else -> 0bv64 +} +memory_load8_le -> { + (_ (as-array) (k!0)) 130504bv64 -> 80bv8 + (_ (as-array) (k!0)) 130505bv64 -> 7bv8 + (_ (as-array) (k!0)) 130513bv64 -> 7bv8 + (_ (as-array) (k!0)) 131032bv64 -> 84bv8 + (_ (as-array) (k!0)) 131033bv64 -> 7bv8 + (_ (as-array) (k!0)) 131120bv64 -> 48bv8 + (_ (as-array) (k!0)) 131122bv64 -> 2bv8 + (_ (as-array) (k!0)) 131128bv64 -> 66bv8 + (_ (as-array) (k!0)) 131129bv64 -> 65bv8 + (_ (as-array) (k!0)) 131130bv64 -> 83bv8 + (_ (as-array) (k!0)) 131131bv64 -> 73bv8 + (_ (as-array) (k!0)) 131132bv64 -> 76bv8 + (_ (as-array) (k!0)) 131133bv64 -> 32bv8 + (_ (as-array) (k!0)) 131134bv64 -> 86bv8 + (_ (as-array) (k!0)) 131135bv64 -> 101bv8 + (_ (as-array) (k!0)) 131136bv64 -> 114bv8 + (_ (as-array) (k!0)) 131137bv64 -> 105bv8 + (_ (as-array) (k!0)) 131138bv64 -> 102bv8 + (_ (as-array) (k!0)) 131139bv64 -> 105bv8 + (_ (as-array) (k!0)) 131140bv64 -> 101bv8 + (_ (as-array) (k!0)) 131141bv64 -> 114bv8 + (_ (as-array) (k!0)) 131165bv64 -> 34bv8 + (_ (as-array) (k!0)) 1940bv64 -> 1bv8 + (_ (as-array) (k!0)) 1942bv64 -> 2bv8 + (_ (as-array) (k!7)) 130504bv64 -> 80bv8 + (_ (as-array) (k!7)) 130505bv64 -> 7bv8 + (_ (as-array) (k!7)) 130513bv64 -> 7bv8 + (_ (as-array) (k!7)) 131032bv64 -> 84bv8 + (_ (as-array) (k!7)) 131033bv64 -> 7bv8 + (_ (as-array) (k!7)) 131120bv64 -> 48bv8 + (_ (as-array) (k!7)) 131122bv64 -> 2bv8 + (_ (as-array) (k!7)) 131140bv64 -> 101bv8 + (_ (as-array) (k!7)) 131141bv64 -> 114bv8 + (_ (as-array) (k!7)) 131152bv64 -> 66bv8 + (_ (as-array) (k!7)) 131153bv64 -> 65bv8 + (_ (as-array) (k!7)) 131154bv64 -> 83bv8 + (_ (as-array) (k!7)) 131155bv64 -> 73bv8 + (_ (as-array) (k!7)) 131156bv64 -> 76bv8 + (_ (as-array) (k!7)) 131157bv64 -> 32bv8 + (_ (as-array) (k!7)) 131158bv64 -> 86bv8 + (_ (as-array) (k!7)) 131159bv64 -> 101bv8 + (_ (as-array) (k!7)) 131160bv64 -> 114bv8 + (_ (as-array) (k!7)) 131161bv64 -> 105bv8 + (_ (as-array) (k!7)) 131162bv64 -> 102bv8 + (_ (as-array) (k!7)) 131165bv64 -> 114bv8 + (_ (as-array) (k!7)) 1940bv64 -> 1bv8 + (_ (as-array) (k!7)) 1942bv64 -> 2bv8 + else -> 0bv8 +} +memory_store64_le -> { + (_ (as-array) (k!2)) 92bv64 0bv64 -> (_ (as (const) (Array (bv64) (bv8))) 0bv8) + else -> (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv92) 64) (_ (bv2) 8)) +} +tickleBool -> { + else -> true +} +*** STATE + #4 -> + Gamma_#4 -> + Gamma_malloc_base -> + Gamma_malloc_count -> + Gamma_malloc_end -> + Gamma_malloc_id -> + Gamma_mem -> (let (_ (a!1 (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 35184372088832 64) false) (_ 131141 64) false) (_ 131152 64) false))) (store (a!1) (_ (bv0) 64) false)) + Gamma_R0 -> + Gamma_R1 -> + Gamma_R16 -> + Gamma_R17 -> + Gamma_R2 -> + Gamma_R29 -> false + Gamma_R30 -> false + Gamma_R31 -> + Gamma_stack -> (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 128 64) false) (_ (bv2) 64) false) (_ 65536 64) false) + malloc_base -> + malloc_count -> 0 + malloc_end -> + malloc_id -> + mem -> (_ (as-array) (k!0)) + R0 -> + R1 -> + R16 -> + R17 -> + R2 -> + R29 -> 0bv64 + R30 -> 0bv64 + R31 -> 100bv64 + stack -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv88) 64) (_ 128 8)) (_ (bv92) 64) (_ (bv2) 8)) +*** END_STATE +*** STATE lmain +*** END_STATE +*** STATE %000002e0 + #4 -> 84bv64 + Gamma_#4 -> + Gamma_stack -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ (bv96) 64)) (= (x!1) (_ 35184372088832 64)))) + stack -> (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv92) 64) (_ (bv2) 8)) +*** END_STATE +*** STATE %000002e6 + Gamma_stack -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ 35184372088832 64)))) + stack -> (_ (as (const) (Array (bv64) (bv8))) 0bv8) +*** END_STATE +*** STATE l00000315 + Gamma_mem -> (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 35184372088832 64) false) (_ 131141 64) false) (_ 131165 64) false) + Gamma_R0 -> true + Gamma_R1 -> true + Gamma_R16 -> + Gamma_R17 -> + Gamma_R2 -> true + Gamma_R29 -> + Gamma_R30 -> true + Gamma_R31 -> + mem -> (_ (as-array) (k!7)) + R0 -> 131152bv64 + R1 -> 131128bv64 + R16 -> + R17 -> + R2 -> 14bv64 + R29 -> 84bv64 + R30 -> 1908bv64 + R31 -> 84bv64 +*** END_STATE +*** END_MODEL +*** MODEL +#4 -> +#4@0 -> 84bv64 +$copiedtext_addr -> 131152bv64 +$text_addr -> 131128bv64 +Gamma_#4 -> +Gamma_malloc_base -> +Gamma_malloc_count -> +Gamma_malloc_end -> +Gamma_malloc_id -> +Gamma_mem -> (lambda (_ (x!1 (bv64))) (= (x!1) 0bv64)) +Gamma_mem@0 -> (lambda (_ (x!1 (bv64))) (= (x!1) 0bv64)) +Gamma_R0 -> +Gamma_R1 -> +Gamma_R16 -> +Gamma_R16@0 -> +Gamma_R17 -> +Gamma_R17@0 -> +Gamma_R2 -> +Gamma_R29 -> false +Gamma_R29@0 -> false +Gamma_R30 -> false +Gamma_R30@0 -> false +Gamma_R31 -> +Gamma_stack -> (lambda (_ (x!1 (bv64))) (= (x!1) 84bv64)) +Gamma_stack@0 -> (_ (as (const) (Array (bv64) (Bool))) false) +Gamma_stack@1 -> (_ (as (const) (Array (bv64) (Bool))) false) +malloc_base -> +malloc_count -> 0 +malloc_end -> +malloc_id -> +mem -> (_ (as-array) (k!10)) +mem@0 -> (_ (as-array) (k!15)) +R0 -> +R0@0 -> 131152bv64 +R1 -> +R1@0 -> 131128bv64 +R16 -> +R16@0 -> +R17 -> +R17@0 -> +R2 -> +R29 -> 0bv64 +R29@0 -> 0bv64 +R30 -> 0bv64 +R30@0 -> 0bv64 +R31 -> 100bv64 +R31@0 -> 100bv64 +stack -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) +stack@0 -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) +stack@1 -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) +ControlFlow -> { + 0 2 -> (- 3) + 0 4 -> 2 + else -> 4 +} +gamma_load64 -> { + else -> false +} +gamma_load8 -> { + else -> (and (= (:var 0) (lambda (_ (x!1 (bv64))) (= (x!1) 0bv64))) (= (:var 1) (_ (bv0) 64))) +} +gamma_store64 -> { + else -> (_ (as (const) (Array (bv64) (Bool))) false) +} +k!10 -> { + 130504bv64 -> 80bv8 + 130505bv64 -> 7bv8 + 130513bv64 -> 7bv8 + 131032bv64 -> 84bv8 + 131033bv64 -> 7bv8 + 131120bv64 -> 48bv8 + 131122bv64 -> 2bv8 + 131128bv64 -> 66bv8 + 131129bv64 -> 65bv8 + 131130bv64 -> 83bv8 + 131131bv64 -> 73bv8 + 131132bv64 -> 76bv8 + 131133bv64 -> 32bv8 + 131134bv64 -> 86bv8 + 131135bv64 -> 101bv8 + 131136bv64 -> 114bv8 + 131137bv64 -> 105bv8 + 131138bv64 -> 102bv8 + 131139bv64 -> 105bv8 + 131140bv64 -> 101bv8 + 131141bv64 -> 114bv8 + 131160bv64 -> 66bv8 + 1940bv64 -> 1bv8 + 1942bv64 -> 2bv8 + 33554432bv64 -> 136bv8 + else -> 0bv8 +} +k!15 -> { + 130504bv64 -> 80bv8 + 130505bv64 -> 7bv8 + 130513bv64 -> 7bv8 + 131032bv64 -> 84bv8 + 131033bv64 -> 7bv8 + 131120bv64 -> 48bv8 + 131122bv64 -> 2bv8 + 131136bv64 -> 114bv8 + 131138bv64 -> 102bv8 + 131154bv64 -> 82bv8 + 131160bv64 -> 114bv8 + 1940bv64 -> 1bv8 + 1942bv64 -> 2bv8 + else -> 0bv8 +} +lambda#0 -> { + else -> (_ (as (const) (Array (bv64) (Bool))) false) +} +lambda#1 -> { + 92bv64 8bv64 0bv64 92bv64 (_ (as-array) (k!11)) -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) + else -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) +} +memory_load64_le -> { + else -> 0bv64 +} +memory_load8_le -> { + (_ (as-array) (k!10)) 130504bv64 -> 80bv8 + (_ (as-array) (k!10)) 130505bv64 -> 7bv8 + (_ (as-array) (k!10)) 130513bv64 -> 7bv8 + (_ (as-array) (k!10)) 131032bv64 -> 84bv8 + (_ (as-array) (k!10)) 131033bv64 -> 7bv8 + (_ (as-array) (k!10)) 131120bv64 -> 48bv8 + (_ (as-array) (k!10)) 131122bv64 -> 2bv8 + (_ (as-array) (k!10)) 131128bv64 -> 66bv8 + (_ (as-array) (k!10)) 131129bv64 -> 65bv8 + (_ (as-array) (k!10)) 131130bv64 -> 83bv8 + (_ (as-array) (k!10)) 131131bv64 -> 73bv8 + (_ (as-array) (k!10)) 131132bv64 -> 76bv8 + (_ (as-array) (k!10)) 131133bv64 -> 32bv8 + (_ (as-array) (k!10)) 131134bv64 -> 86bv8 + (_ (as-array) (k!10)) 131135bv64 -> 101bv8 + (_ (as-array) (k!10)) 131136bv64 -> 114bv8 + (_ (as-array) (k!10)) 131137bv64 -> 105bv8 + (_ (as-array) (k!10)) 131138bv64 -> 102bv8 + (_ (as-array) (k!10)) 131139bv64 -> 105bv8 + (_ (as-array) (k!10)) 131140bv64 -> 101bv8 + (_ (as-array) (k!10)) 131141bv64 -> 114bv8 + (_ (as-array) (k!10)) 1940bv64 -> 1bv8 + (_ (as-array) (k!10)) 1942bv64 -> 2bv8 + (_ (as-array) (k!15)) 130504bv64 -> 80bv8 + (_ (as-array) (k!15)) 130505bv64 -> 7bv8 + (_ (as-array) (k!15)) 130513bv64 -> 7bv8 + (_ (as-array) (k!15)) 131032bv64 -> 84bv8 + (_ (as-array) (k!15)) 131033bv64 -> 7bv8 + (_ (as-array) (k!15)) 131120bv64 -> 48bv8 + (_ (as-array) (k!15)) 131122bv64 -> 2bv8 + (_ (as-array) (k!15)) 131136bv64 -> 114bv8 + (_ (as-array) (k!15)) 131154bv64 -> 82bv8 + (_ (as-array) (k!15)) 1940bv64 -> 1bv8 + (_ (as-array) (k!15)) 1942bv64 -> 2bv8 + else -> 0bv8 +} +memory_store64_le -> { + (_ (as-array) (k!11)) 92bv64 0bv64 -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) + else -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) +} +tickleBool -> { + else -> true +} +*** STATE + #4 -> + Gamma_#4 -> + Gamma_malloc_base -> + Gamma_malloc_count -> + Gamma_malloc_end -> + Gamma_malloc_id -> + Gamma_mem -> (lambda (_ (x!1 (bv64))) (= (x!1) 0bv64)) + Gamma_R0 -> + Gamma_R1 -> + Gamma_R16 -> + Gamma_R17 -> + Gamma_R2 -> + Gamma_R29 -> false + Gamma_R30 -> false + Gamma_R31 -> + Gamma_stack -> (lambda (_ (x!1 (bv64))) (= (x!1) 84bv64)) + malloc_base -> + malloc_count -> 0 + malloc_end -> + malloc_id -> + mem -> (_ (as-array) (k!10)) + R0 -> + R1 -> + R16 -> + R17 -> + R2 -> + R29 -> 0bv64 + R30 -> 0bv64 + R31 -> 100bv64 + stack -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) +*** END_STATE +*** STATE lmain +*** END_STATE +*** STATE %000002e0 + #4 -> 84bv64 + Gamma_#4 -> + Gamma_stack -> (_ (as (const) (Array (bv64) (Bool))) false) + stack -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) +*** END_STATE +*** STATE %000002e6 + Gamma_stack -> (_ (as (const) (Array (bv64) (Bool))) false) + stack -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) +*** END_STATE +*** STATE l00000315 + Gamma_mem -> (lambda (_ (x!1 (bv64))) (= (x!1) 0bv64)) + Gamma_R0 -> true + Gamma_R1 -> true + Gamma_R16 -> + Gamma_R17 -> + Gamma_R2 -> true + Gamma_R29 -> + Gamma_R30 -> true + Gamma_R31 -> + mem -> (_ (as-array) (k!15)) + R0 -> 131152bv64 + R1 -> 131128bv64 + R16 -> + R17 -> + R2 -> 14bv64 + R29 -> 84bv64 + R30 -> 1908bv64 + R31 -> 84bv64 +*** END_STATE +*** END_MODEL 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/iterator.log b/examples/memcpy-variants/iterator.log new file mode 100644 index 000000000..fe4c02b08 --- /dev/null +++ b/examples/memcpy-variants/iterator.log @@ -0,0 +1,1007 @@ +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :produce-models true) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |iteratorspecbpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |iteratorspecbpl.65:57| + :skolemid |10| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |iteratorspecbpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |iteratorspecbpl.49:56| + :skolemid |9| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |iteratorspecbpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |iteratorspecbpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |iteratorspecbpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $copiedtext_addr #x0000000000020050)) +(assert (= $text_addr #x0000000000020038)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |iteratorspecbpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |iteratorspecbpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(set-info :boogie-vc-id rely_transitive_split0) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 1) true) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :produce-models true) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |iteratorspecbpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |iteratorspecbpl.65:57| + :skolemid |10| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |iteratorspecbpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |iteratorspecbpl.49:56| + :skolemid |9| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |iteratorspecbpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |iteratorspecbpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |iteratorspecbpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $copiedtext_addr #x0000000000020050)) +(assert (= $text_addr #x0000000000020038)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |iteratorspecbpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |iteratorspecbpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(set-info :boogie-vc-id rely_transitive_split1) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (= mem@0 mem) (=> (and (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x0000000000000794) #x01)) (and (= (memory_load8_le mem@0 #x0000000000000795) #x00) (= (memory_load8_le mem@0 #x0000000000000796) #x02))) (=> (and (and (and (= (memory_load8_le mem@0 #x0000000000000797) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #x50)) (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x07) (= (memory_load8_le mem@0 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x07) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #x54)) (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x07) (= (memory_load8_le mem@0 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020030) #x30)) (and (= (memory_load8_le mem@0 #x0000000000020031) #x00) (= (memory_load8_le mem@0 #x0000000000020032) #x02))) (and (and (= (memory_load8_le mem@0 #x0000000000020033) #x00) (= (memory_load8_le mem@0 #x0000000000020034) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020035) #x00) (= (memory_load8_le mem@0 #x0000000000020036) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020037) #x00) (= mem@1 mem@0)) (and (= Gamma_mem@1 Gamma_mem@0) (= (memory_load8_le mem@1 #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem@1 #x0000000000000795) #x00) (= (memory_load8_le mem@1 #x0000000000000796) #x02)) (and (= (memory_load8_le mem@1 #x0000000000000797) #x00) (= (memory_load8_le mem@1 #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdc9) #x07) (= (memory_load8_le mem@1 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcb) #x00) (= (memory_load8_le mem@1 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdcd) #x00) (= (memory_load8_le mem@1 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcf) #x00) (= (memory_load8_le mem@1 #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd1) #x07) (= (memory_load8_le mem@1 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd3) #x00) (= (memory_load8_le mem@1 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd5) #x00) (= (memory_load8_le mem@1 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd7) #x00) (= (memory_load8_le mem@1 #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffd9) #x07) (= (memory_load8_le mem@1 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdb) #x00) (= (memory_load8_le mem@1 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffdd) #x00) (= (memory_load8_le mem@1 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdf) #x00) (= (memory_load8_le mem@1 #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020031) #x00) (= (memory_load8_le mem@1 #x0000000000020032) #x02)) (and (= (memory_load8_le mem@1 #x0000000000020033) #x00) (= (memory_load8_le mem@1 #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000020035) #x00) (= (memory_load8_le mem@1 #x0000000000020036) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020037) #x00) (= (ControlFlow 0 2) (- 0 1)))))))) (= mem@1 mem))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :produce-models true) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |iteratorspecbpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |iteratorspecbpl.65:57| + :skolemid |10| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |iteratorspecbpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |iteratorspecbpl.49:56| + :skolemid |9| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |iteratorspecbpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |iteratorspecbpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |iteratorspecbpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $copiedtext_addr #x0000000000020050)) +(assert (= $text_addr #x0000000000020038)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |iteratorspecbpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |iteratorspecbpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(set-info :boogie-vc-id rely_transitive_split2) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (and (= mem@0 mem) (= Gamma_mem@0 Gamma_mem)) (=> (and (and (= (memory_load8_le mem@0 #x0000000000000794) #x01) (= (memory_load8_le mem@0 #x0000000000000795) #x00)) (and (= (memory_load8_le mem@0 #x0000000000000796) #x02) (= (memory_load8_le mem@0 #x0000000000000797) #x00))) (=> (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc8) #x50) (= (memory_load8_le mem@0 #x000000000001fdc9) #x07)) (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x00) (= (memory_load8_le mem@0 #x000000000001fdd1) #x07)) (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd8) #x54) (= (memory_load8_le mem@0 #x000000000001ffd9) #x07)) (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x0000000000020030) #x30) (= (memory_load8_le mem@0 #x0000000000020031) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020032) #x02) (= (memory_load8_le mem@0 #x0000000000020033) #x00))) (and (and (= (memory_load8_le mem@0 #x0000000000020034) #x00) (= (memory_load8_le mem@0 #x0000000000020035) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020036) #x00) (= (memory_load8_le mem@0 #x0000000000020037) #x00)))) (and (and (and (= mem@1 mem@0) (= Gamma_mem@1 Gamma_mem@0)) (and (= (memory_load8_le mem@1 #x0000000000000794) #x01) (= (memory_load8_le mem@1 #x0000000000000795) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000000796) #x02) (= (memory_load8_le mem@1 #x0000000000000797) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdc8) #x50) (= (memory_load8_le mem@1 #x000000000001fdc9) #x07)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdca) #x00) (= (memory_load8_le mem@1 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcc) #x00) (= (memory_load8_le mem@1 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdce) #x00) (= (memory_load8_le mem@1 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd0) #x00) (= (memory_load8_le mem@1 #x000000000001fdd1) #x07)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd2) #x00) (= (memory_load8_le mem@1 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd4) #x00) (= (memory_load8_le mem@1 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd6) #x00) (= (memory_load8_le mem@1 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffd8) #x54) (= (memory_load8_le mem@1 #x000000000001ffd9) #x07))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffda) #x00) (= (memory_load8_le mem@1 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdc) #x00) (= (memory_load8_le mem@1 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffde) #x00) (= (memory_load8_le mem@1 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020030) #x30) (= (memory_load8_le mem@1 #x0000000000020031) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020032) #x02) (= (memory_load8_le mem@1 #x0000000000020033) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020034) #x00) (= (memory_load8_le mem@1 #x0000000000020035) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000020036) #x00) (= (memory_load8_le mem@1 #x0000000000020037) #x00)) (and (= mem@1 mem) (= (ControlFlow 0 2) (- 0 1)))))))) (= Gamma_mem@1 Gamma_mem))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :produce-models true) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |iteratorspecbpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |iteratorspecbpl.65:57| + :skolemid |10| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |iteratorspecbpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |iteratorspecbpl.49:56| + :skolemid |9| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |iteratorspecbpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |iteratorspecbpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |iteratorspecbpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $copiedtext_addr #x0000000000020050)) +(assert (= $text_addr #x0000000000020038)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |iteratorspecbpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |iteratorspecbpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun mem@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@3 () (Array (_ BitVec 64) Bool)) +(set-info :boogie-vc-id rely_transitive_smoke0) +(set-option :timeout 10000) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 5) (let ((anon0_correct (=> (= mem@2 mem) (=> (and (and (= Gamma_mem@2 Gamma_mem) (= (memory_load8_le mem@2 #x0000000000000794) #x01)) (and (= (memory_load8_le mem@2 #x0000000000000795) #x00) (= (memory_load8_le mem@2 #x0000000000000796) #x02))) (=> (and (and (and (= (memory_load8_le mem@2 #x0000000000000797) #x00) (= (memory_load8_le mem@2 #x000000000001fdc8) #x50)) (and (= (memory_load8_le mem@2 #x000000000001fdc9) #x07) (= (memory_load8_le mem@2 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdcb) #x00) (= (memory_load8_le mem@2 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdcd) #x00) (= (memory_load8_le mem@2 #x000000000001fdce) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcf) #x00) (= (memory_load8_le mem@2 #x000000000001fdd0) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd1) #x07) (= (memory_load8_le mem@2 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd3) #x00) (= (memory_load8_le mem@2 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd5) #x00) (= (memory_load8_le mem@2 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd7) #x00) (= (memory_load8_le mem@2 #x000000000001ffd8) #x54)) (and (= (memory_load8_le mem@2 #x000000000001ffd9) #x07) (= (memory_load8_le mem@2 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffdb) #x00) (= (memory_load8_le mem@2 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffdd) #x00) (= (memory_load8_le mem@2 #x000000000001ffde) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdf) #x00) (= (memory_load8_le mem@2 #x0000000000020030) #x30)) (and (= (memory_load8_le mem@2 #x0000000000020031) #x00) (= (memory_load8_le mem@2 #x0000000000020032) #x02))) (and (and (= (memory_load8_le mem@2 #x0000000000020033) #x00) (= (memory_load8_le mem@2 #x0000000000020034) #x00)) (and (= (memory_load8_le mem@2 #x0000000000020035) #x00) (= (memory_load8_le mem@2 #x0000000000020036) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x0000000000020037) #x00) (= mem@3 mem@2)) (and (= Gamma_mem@3 Gamma_mem@2) (= (memory_load8_le mem@3 #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem@3 #x0000000000000795) #x00) (= (memory_load8_le mem@3 #x0000000000000796) #x02)) (and (= (memory_load8_le mem@3 #x0000000000000797) #x00) (= (memory_load8_le mem@3 #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem@3 #x000000000001fdc9) #x07) (= (memory_load8_le mem@3 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdcb) #x00) (= (memory_load8_le mem@3 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdcd) #x00) (= (memory_load8_le mem@3 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdcf) #x00) (= (memory_load8_le mem@3 #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000001fdd1) #x07) (= (memory_load8_le mem@3 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd3) #x00) (= (memory_load8_le mem@3 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdd5) #x00) (= (memory_load8_le mem@3 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd7) #x00) (= (memory_load8_le mem@3 #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem@3 #x000000000001ffd9) #x07) (= (memory_load8_le mem@3 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffdb) #x00) (= (memory_load8_le mem@3 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001ffdd) #x00) (= (memory_load8_le mem@3 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffdf) #x00) (= (memory_load8_le mem@3 #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem@3 #x0000000000020031) #x00) (= (memory_load8_le mem@3 #x0000000000020032) #x02)) (and (= (memory_load8_le mem@3 #x0000000000020033) #x00) (= (memory_load8_le mem@3 #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem@3 #x0000000000020035) #x00) (= (memory_load8_le mem@3 #x0000000000020036) #x00)) (and (= (memory_load8_le mem@3 #x0000000000020037) #x00) (= (ControlFlow 0 2) (- 0 4)))))))) false)))))) +(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 5) 2) anon0_correct))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(get-info :reason-unknown) +(get-model) +(assert (not (= (ControlFlow 0 2) (- 4)))) +(check-sat) +(pop 1) +; Invalid +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :produce-models true) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |iteratorspecbpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |iteratorspecbpl.65:57| + :skolemid |10| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |iteratorspecbpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |iteratorspecbpl.49:56| + :skolemid |9| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |iteratorspecbpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |iteratorspecbpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |iteratorspecbpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $copiedtext_addr #x0000000000020050)) +(assert (= $text_addr #x0000000000020038)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |iteratorspecbpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |iteratorspecbpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Invalid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(set-info :boogie-vc-id main_split0) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 1) true) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :produce-models true) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |iteratorspecbpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |iteratorspecbpl.65:57| + :skolemid |10| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |iteratorspecbpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |iteratorspecbpl.49:56| + :skolemid |9| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |iteratorspecbpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |iteratorspecbpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |iteratorspecbpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $copiedtext_addr #x0000000000020050)) +(assert (= $text_addr #x0000000000020038)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |iteratorspecbpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |iteratorspecbpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun R1@0 () (_ BitVec 64)) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun malloc_count () Int) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(set-info :boogie-vc-id main_split1) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xfffffffffffffff0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (= R1@0 (bvadd #x0000000000020000 #x0000000000000038))) (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000050)) (= (ControlFlow 0 2) (- 0 1)))) (or (bvugt R0@0 (bvadd R1@0 #x000000000000000e)) (bvugt R1@0 (bvadd R0@0 #x000000000000000e)))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020028) #x00)) (and (= (memory_load8_le mem #x0000000000020029) #x00) (= (memory_load8_le mem #x000000000002002a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002002b) #x00) (= (memory_load8_le mem #x000000000002002c) #x00)) (and (= (memory_load8_le mem #x000000000002002d) #x00) (= (memory_load8_le mem #x000000000002002e) #x00))) (and (and (= (memory_load8_le mem #x000000000002002f) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)) (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00)) (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00))) (and (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (memory_load8_le mem #x0000000000020038) #x42)) (and (= (memory_load8_le mem #x0000000000020039) #x41) (= (memory_load8_le mem #x000000000002003a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x49) (= (memory_load8_le mem #x000000000002003c) #x4c)) (and (= (memory_load8_le mem #x000000000002003d) #x20) (= (memory_load8_le mem #x000000000002003e) #x56))) (and (and (= (memory_load8_le mem #x000000000002003f) #x65) (= (memory_load8_le mem #x0000000000020040) #x72)) (and (= (memory_load8_le mem #x0000000000020041) #x69) (= (memory_load8_le mem #x0000000000020042) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x69) (= (memory_load8_le mem #x0000000000020044) #x65)) (and (= (memory_load8_le mem #x0000000000020045) #x72) (= (memory_load8_le mem #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem #x0000000000000795) #x00) (= (memory_load8_le mem #x0000000000000796) #x02)) (and (= (memory_load8_le mem #x0000000000000797) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x07) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x07) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)) (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00)) (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :produce-models true) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |iteratorspecbpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |iteratorspecbpl.65:57| + :skolemid |10| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |iteratorspecbpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |iteratorspecbpl.49:56| + :skolemid |9| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |iteratorspecbpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |iteratorspecbpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |iteratorspecbpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $copiedtext_addr #x0000000000020050)) +(assert (= $text_addr #x0000000000020038)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |iteratorspecbpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |iteratorspecbpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun R1@0 () (_ BitVec 64)) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun malloc_count () Int) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(set-info :boogie-vc-id main_split2) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xfffffffffffffff0)) (=> (and (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (and (and (= R1@0 (bvadd #x0000000000020000 #x0000000000000038)) (= R0@0 (bvadd #x0000000000020000 #x0000000000000050))) (and (or (bvugt R0@0 (bvadd R1@0 #x000000000000000e)) (bvugt R1@0 (bvadd R0@0 #x000000000000000e))) (= (ControlFlow 0 2) (- 0 1))))) (and (bvugt (bvadd R0@0 #x000000000000000e) R0@0) (bvugt (bvadd R1@0 #x000000000000000e) R1@0)))))) +(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020028) #x00)) (and (= (memory_load8_le mem #x0000000000020029) #x00) (= (memory_load8_le mem #x000000000002002a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002002b) #x00) (= (memory_load8_le mem #x000000000002002c) #x00)) (and (= (memory_load8_le mem #x000000000002002d) #x00) (= (memory_load8_le mem #x000000000002002e) #x00))) (and (and (= (memory_load8_le mem #x000000000002002f) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)) (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00)) (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00))) (and (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (memory_load8_le mem #x0000000000020038) #x42)) (and (= (memory_load8_le mem #x0000000000020039) #x41) (= (memory_load8_le mem #x000000000002003a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x49) (= (memory_load8_le mem #x000000000002003c) #x4c)) (and (= (memory_load8_le mem #x000000000002003d) #x20) (= (memory_load8_le mem #x000000000002003e) #x56))) (and (and (= (memory_load8_le mem #x000000000002003f) #x65) (= (memory_load8_le mem #x0000000000020040) #x72)) (and (= (memory_load8_le mem #x0000000000020041) #x69) (= (memory_load8_le mem #x0000000000020042) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x69) (= (memory_load8_le mem #x0000000000020044) #x65)) (and (= (memory_load8_le mem #x0000000000020045) #x72) (= (memory_load8_le mem #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem #x0000000000000795) #x00) (= (memory_load8_le mem #x0000000000000796) #x02)) (and (= (memory_load8_le mem #x0000000000000797) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x07) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x07) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)) (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00)) (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :produce-models true) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |iteratorspecbpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |iteratorspecbpl.65:57| + :skolemid |10| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |iteratorspecbpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |iteratorspecbpl.49:56| + :skolemid |9| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |iteratorspecbpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |iteratorspecbpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |iteratorspecbpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $copiedtext_addr #x0000000000020050)) +(assert (= $text_addr #x0000000000020038)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |iteratorspecbpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |iteratorspecbpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun R1@0 () (_ BitVec 64)) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun malloc_count () Int) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(set-info :boogie-vc-id main_split3) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xfffffffffffffff0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (= R1@0 (bvadd #x0000000000020000 #x0000000000000038))) (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000050)) (or (bvugt R0@0 (bvadd R1@0 #x000000000000000e)) (bvugt R1@0 (bvadd R0@0 #x000000000000000e))))) (and (and (bvugt (bvadd R0@0 #x000000000000000e) R0@0) (bvugt (bvadd R1@0 #x000000000000000e) R1@0)) (= (ControlFlow 0 2) (- 0 1)))) (exists ((i@@1 (_ BitVec 64)) ) (! (and (bvuge i@@1 #x0000000000000000) (bvult i@@1 #x000000000000000e)) + :qid |iteratorspecbpl.269:20| + :skolemid |7| +))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020028) #x00)) (and (= (memory_load8_le mem #x0000000000020029) #x00) (= (memory_load8_le mem #x000000000002002a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002002b) #x00) (= (memory_load8_le mem #x000000000002002c) #x00)) (and (= (memory_load8_le mem #x000000000002002d) #x00) (= (memory_load8_le mem #x000000000002002e) #x00))) (and (and (= (memory_load8_le mem #x000000000002002f) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)) (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00)) (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00))) (and (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (memory_load8_le mem #x0000000000020038) #x42)) (and (= (memory_load8_le mem #x0000000000020039) #x41) (= (memory_load8_le mem #x000000000002003a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x49) (= (memory_load8_le mem #x000000000002003c) #x4c)) (and (= (memory_load8_le mem #x000000000002003d) #x20) (= (memory_load8_le mem #x000000000002003e) #x56))) (and (and (= (memory_load8_le mem #x000000000002003f) #x65) (= (memory_load8_le mem #x0000000000020040) #x72)) (and (= (memory_load8_le mem #x0000000000020041) #x69) (= (memory_load8_le mem #x0000000000020042) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x69) (= (memory_load8_le mem #x0000000000020044) #x65)) (and (= (memory_load8_le mem #x0000000000020045) #x72) (= (memory_load8_le mem #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem #x0000000000000795) #x00) (= (memory_load8_le mem #x0000000000000796) #x02)) (and (= (memory_load8_le mem #x0000000000000797) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x07) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x07) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)) (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00)) (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(get-info :reason-unknown) +(get-model) +(assert (not (= (ControlFlow 0 2) (- 1)))) +(check-sat) +(pop 1) +; Invalid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :produce-models true) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |iteratorspecbpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |iteratorspecbpl.65:57| + :skolemid |10| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |iteratorspecbpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |iteratorspecbpl.49:56| + :skolemid |9| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |iteratorspecbpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |iteratorspecbpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |iteratorspecbpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $copiedtext_addr #x0000000000020050)) +(assert (= $text_addr #x0000000000020038)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |iteratorspecbpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |iteratorspecbpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Invalid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun R1@0 () (_ BitVec 64)) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29@0 () (_ BitVec 64)) +(declare-fun Gamma_R29@0 () Bool) +(declare-fun R30@0 () (_ BitVec 64)) +(declare-fun Gamma_R30@0 () Bool) +(declare-fun R31@0 () (_ BitVec 64)) +(declare-fun malloc_count () Int) +(set-info :boogie-vc-id main_split4) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xfffffffffffffff0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (= R1@0 (bvadd #x0000000000020000 #x0000000000000038))) (=> (and (and (and (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000050)) (or (bvugt R0@0 (bvadd R1@0 #x000000000000000e)) (bvugt R1@0 (bvadd R0@0 #x000000000000000e)))) (and (bvugt (bvadd R0@0 #x000000000000000e) R0@0) (bvugt (bvadd R1@0 #x000000000000000e) R1@0))) (and (and (exists ((i@@1 (_ BitVec 64)) ) (! (and (bvuge i@@1 #x0000000000000000) (bvult i@@1 #x000000000000000e)) + :qid |iteratorspecbpl.269:20| + :skolemid |7| +)) (forall ((i@@2 (_ BitVec 64)) ) (! (=> (and (and (and (bvuge i@@2 #x0000000000000000) (bvult i@@2 #x000000000000000e)) (bvuge (bvadd R0@1 i@@2) R1@0)) (bvuge (bvadd R0@1 i@@2) R0@1)) (and (= R0@1 #x0000000000000005) (= (select mem@0 (bvadd R0@1 i@@2)) (memory_load8_le mem (bvadd R1@0 i@@2))))) + :qid |iteratorspecbpl.306:19| + :skolemid |8| + :pattern ( (select mem@0 i@@2)) +))) (and (= (memory_load8_le mem@0 #x0000000000000794) #x01) (= (memory_load8_le mem@0 #x0000000000000795) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000000796) #x02) (= (memory_load8_le mem@0 #x0000000000000797) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdc8) #x50) (= (memory_load8_le mem@0 #x000000000001fdc9) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00))))) (=> (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x00) (= (memory_load8_le mem@0 #x000000000001fdd1) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffd8) #x54) (= (memory_load8_le mem@0 #x000000000001ffd9) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020030) #x30) (= (memory_load8_le mem@0 #x0000000000020031) #x00))) (and (and (= (memory_load8_le mem@0 #x0000000000020032) #x02) (= (memory_load8_le mem@0 #x0000000000020033) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020034) #x00) (= (memory_load8_le mem@0 #x0000000000020035) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020036) #x00) (= (memory_load8_le mem@0 #x0000000000020037) #x00)) (and (= R29@0 (memory_load64_le stack@1 |#4@0|)) (= Gamma_R29@0 (gamma_load64 Gamma_stack@1 |#4@0|)))) (and (and (= R30@0 (memory_load64_le stack@1 (bvadd |#4@0| #x0000000000000008))) (= Gamma_R30@0 (gamma_load64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000008)))) (and (= R31@0 (bvadd |#4@0| #x0000000000000010)) (= (ControlFlow 0 2) (- 0 1))))))) (and (and (and (and (and (and (and (and (and (and (and (and (= #x42 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000000))) (= #x41 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000001)))) (= #x53 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000002)))) (= #x49 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000003)))) (= #x4c (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000004)))) (= #x20 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000005)))) (= #x56 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000006)))) (= #x65 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000007)))) (= #x72 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000008)))) (= #x69 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000009)))) (= #x66 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000a)))) (= (= #x69 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000b))) (= #x65 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000c))))) (= #x72 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000d))))))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020028) #x00)) (and (= (memory_load8_le mem #x0000000000020029) #x00) (= (memory_load8_le mem #x000000000002002a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002002b) #x00) (= (memory_load8_le mem #x000000000002002c) #x00)) (and (= (memory_load8_le mem #x000000000002002d) #x00) (= (memory_load8_le mem #x000000000002002e) #x00))) (and (and (= (memory_load8_le mem #x000000000002002f) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)) (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00)) (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00))) (and (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (memory_load8_le mem #x0000000000020038) #x42)) (and (= (memory_load8_le mem #x0000000000020039) #x41) (= (memory_load8_le mem #x000000000002003a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x49) (= (memory_load8_le mem #x000000000002003c) #x4c)) (and (= (memory_load8_le mem #x000000000002003d) #x20) (= (memory_load8_le mem #x000000000002003e) #x56))) (and (and (= (memory_load8_le mem #x000000000002003f) #x65) (= (memory_load8_le mem #x0000000000020040) #x72)) (and (= (memory_load8_le mem #x0000000000020041) #x69) (= (memory_load8_le mem #x0000000000020042) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x69) (= (memory_load8_le mem #x0000000000020044) #x65)) (and (= (memory_load8_le mem #x0000000000020045) #x72) (= (memory_load8_le mem #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem #x0000000000000795) #x00) (= (memory_load8_le mem #x0000000000000796) #x02)) (and (= (memory_load8_le mem #x0000000000000797) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x07) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x07) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)) (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00)) (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(get-info :reason-unknown) +(get-model) +(assert (not (= (ControlFlow 0 2) (- 1)))) +(check-sat) +(pop 1) +; Invalid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :produce-models true) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |iteratorspecbpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |iteratorspecbpl.65:57| + :skolemid |10| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |iteratorspecbpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |iteratorspecbpl.49:56| + :skolemid |9| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |iteratorspecbpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |iteratorspecbpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |iteratorspecbpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $copiedtext_addr #x0000000000020050)) +(assert (= $text_addr #x0000000000020038)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |iteratorspecbpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |iteratorspecbpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Invalid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun R1@0 () (_ BitVec 64)) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29@0 () (_ BitVec 64)) +(declare-fun Gamma_R29@0 () Bool) +(declare-fun R30@0 () (_ BitVec 64)) +(declare-fun Gamma_R30@0 () Bool) +(declare-fun R31@0 () (_ BitVec 64)) +(declare-fun malloc_count () Int) +(set-info :boogie-vc-id main_split5) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xfffffffffffffff0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (= R1@0 (bvadd #x0000000000020000 #x0000000000000038))) (=> (and (and (and (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000050)) (or (bvugt R0@0 (bvadd R1@0 #x000000000000000e)) (bvugt R1@0 (bvadd R0@0 #x000000000000000e)))) (and (bvugt (bvadd R0@0 #x000000000000000e) R0@0) (bvugt (bvadd R1@0 #x000000000000000e) R1@0))) (and (and (exists ((i@@1 (_ BitVec 64)) ) (! (and (bvuge i@@1 #x0000000000000000) (bvult i@@1 #x000000000000000e)) + :qid |iteratorspecbpl.269:20| + :skolemid |7| +)) (forall ((i@@2 (_ BitVec 64)) ) (! (=> (and (and (and (bvuge i@@2 #x0000000000000000) (bvult i@@2 #x000000000000000e)) (bvuge (bvadd R0@1 i@@2) R1@0)) (bvuge (bvadd R0@1 i@@2) R0@1)) (and (= R0@1 #x0000000000000005) (= (select mem@0 (bvadd R0@1 i@@2)) (memory_load8_le mem (bvadd R1@0 i@@2))))) + :qid |iteratorspecbpl.306:19| + :skolemid |8| + :pattern ( (select mem@0 i@@2)) +))) (and (= (memory_load8_le mem@0 #x0000000000000794) #x01) (= (memory_load8_le mem@0 #x0000000000000795) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000000796) #x02) (= (memory_load8_le mem@0 #x0000000000000797) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdc8) #x50) (= (memory_load8_le mem@0 #x000000000001fdc9) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00))))) (=> (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x00) (= (memory_load8_le mem@0 #x000000000001fdd1) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffd8) #x54) (= (memory_load8_le mem@0 #x000000000001ffd9) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020030) #x30) (= (memory_load8_le mem@0 #x0000000000020031) #x00))) (and (and (= (memory_load8_le mem@0 #x0000000000020032) #x02) (= (memory_load8_le mem@0 #x0000000000020033) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020034) #x00) (= (memory_load8_le mem@0 #x0000000000020035) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020036) #x00) (= (memory_load8_le mem@0 #x0000000000020037) #x00)) (and (= R29@0 (memory_load64_le stack@1 |#4@0|)) (= Gamma_R29@0 (gamma_load64 Gamma_stack@1 |#4@0|)))) (and (and (= R30@0 (memory_load64_le stack@1 (bvadd |#4@0| #x0000000000000008))) (= Gamma_R30@0 (gamma_load64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000008)))) (= R31@0 (bvadd |#4@0| #x0000000000000010)))))) (=> (and (and (and (and (and (and (and (and (and (and (and (and (and (= #x42 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000000))) (= #x41 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000001)))) (= #x53 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000002)))) (= #x49 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000003)))) (= #x4c (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000004)))) (= #x20 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000005)))) (= #x56 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000006)))) (= #x65 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000007)))) (= #x72 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000008)))) (= #x69 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000009)))) (= #x66 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000a)))) (= (= #x69 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000b))) (= #x65 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000c))))) (= #x72 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000d)))) (= (ControlFlow 0 2) (- 0 1))) (and (and (and (and (and (and (and (and (and (and (and (and (and (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000000)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000000))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000001)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000001)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000002)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000002)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000003)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000003)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000004)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000004)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000005)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000005)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000006)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000006)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000007)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000007)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000008)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000008)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000009)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000009)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x000000000000000a)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000a)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x000000000000000b)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000b)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x000000000000000c)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000c)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x000000000000000d)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000d)))))))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020028) #x00)) (and (= (memory_load8_le mem #x0000000000020029) #x00) (= (memory_load8_le mem #x000000000002002a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002002b) #x00) (= (memory_load8_le mem #x000000000002002c) #x00)) (and (= (memory_load8_le mem #x000000000002002d) #x00) (= (memory_load8_le mem #x000000000002002e) #x00))) (and (and (= (memory_load8_le mem #x000000000002002f) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)) (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00)) (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00))) (and (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (memory_load8_le mem #x0000000000020038) #x42)) (and (= (memory_load8_le mem #x0000000000020039) #x41) (= (memory_load8_le mem #x000000000002003a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x49) (= (memory_load8_le mem #x000000000002003c) #x4c)) (and (= (memory_load8_le mem #x000000000002003d) #x20) (= (memory_load8_le mem #x000000000002003e) #x56))) (and (and (= (memory_load8_le mem #x000000000002003f) #x65) (= (memory_load8_le mem #x0000000000020040) #x72)) (and (= (memory_load8_le mem #x0000000000020041) #x69) (= (memory_load8_le mem #x0000000000020042) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x69) (= (memory_load8_le mem #x0000000000020044) #x65)) (and (= (memory_load8_le mem #x0000000000020045) #x72) (= (memory_load8_le mem #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem #x0000000000000795) #x00) (= (memory_load8_le mem #x0000000000000796) #x02)) (and (= (memory_load8_le mem #x0000000000000797) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x07) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x07) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)) (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00)) (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(get-info :reason-unknown) +(get-model) +(assert (not (= (ControlFlow 0 2) (- 1)))) +(check-sat) +(pop 1) +; Invalid +(get-info :rlimit) 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/memcpy-variants/simplememcpy.c b/examples/memcpy-variants/simplememcpy.c new file mode 100644 index 000000000..e69de29bb diff --git a/examples/memcpy-variants/smtout.log b/examples/memcpy-variants/smtout.log new file mode 100644 index 000000000..f21eb66a9 --- /dev/null +++ b/examples/memcpy-variants/smtout.log @@ -0,0 +1,688 @@ +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.65:57| + :skolemid |11| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |examplebpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.49:56| + :skolemid |10| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |examplebpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |examplebpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |examplebpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $text_addr #x0000000000020048)) +(assert (= $copiedtext_addr #x0000000000020060)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |examplebpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |examplebpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(set-info :boogie-vc-id rely_transitive_split0) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 1) true) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.65:57| + :skolemid |11| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |examplebpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.49:56| + :skolemid |10| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |examplebpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |examplebpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |examplebpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $text_addr #x0000000000020048)) +(assert (= $copiedtext_addr #x0000000000020060)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |examplebpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |examplebpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(set-info :boogie-vc-id rely_transitive_split1) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (= mem@0 mem) (=> (and (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x0000000000000884) #x01)) (and (= (memory_load8_le mem@0 #x0000000000000885) #x00) (= (memory_load8_le mem@0 #x0000000000000886) #x02))) (=> (and (and (and (= (memory_load8_le mem@0 #x0000000000000887) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #x10)) (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #xc0)) (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x07) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #x14)) (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020040) #x40)) (and (= (memory_load8_le mem@0 #x0000000000020041) #x00) (= (memory_load8_le mem@0 #x0000000000020042) #x02))) (and (and (= (memory_load8_le mem@0 #x0000000000020043) #x00) (= (memory_load8_le mem@0 #x0000000000020044) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020045) #x00) (= (memory_load8_le mem@0 #x0000000000020046) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020047) #x00) (= mem@1 mem@0)) (and (= Gamma_mem@1 Gamma_mem@0) (= (memory_load8_le mem@1 #x0000000000000884) #x01))) (and (and (= (memory_load8_le mem@1 #x0000000000000885) #x00) (= (memory_load8_le mem@1 #x0000000000000886) #x02)) (and (= (memory_load8_le mem@1 #x0000000000000887) #x00) (= (memory_load8_le mem@1 #x000000000001fdc8) #x10)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdc9) #x08) (= (memory_load8_le mem@1 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcb) #x00) (= (memory_load8_le mem@1 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdcd) #x00) (= (memory_load8_le mem@1 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcf) #x00) (= (memory_load8_le mem@1 #x000000000001fdd0) #xc0)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd1) #x07) (= (memory_load8_le mem@1 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd3) #x00) (= (memory_load8_le mem@1 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd5) #x00) (= (memory_load8_le mem@1 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd7) #x00) (= (memory_load8_le mem@1 #x000000000001ffd8) #x14))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffd9) #x08) (= (memory_load8_le mem@1 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdb) #x00) (= (memory_load8_le mem@1 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffdd) #x00) (= (memory_load8_le mem@1 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdf) #x00) (= (memory_load8_le mem@1 #x0000000000020040) #x40)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020041) #x00) (= (memory_load8_le mem@1 #x0000000000020042) #x02)) (and (= (memory_load8_le mem@1 #x0000000000020043) #x00) (= (memory_load8_le mem@1 #x0000000000020044) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000020045) #x00) (= (memory_load8_le mem@1 #x0000000000020046) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020047) #x00) (= (ControlFlow 0 2) (- 0 1)))))))) (= mem@1 mem))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.65:57| + :skolemid |11| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |examplebpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.49:56| + :skolemid |10| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |examplebpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |examplebpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |examplebpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $text_addr #x0000000000020048)) +(assert (= $copiedtext_addr #x0000000000020060)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |examplebpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |examplebpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(set-info :boogie-vc-id rely_transitive_split2) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (and (= mem@0 mem) (= Gamma_mem@0 Gamma_mem)) (=> (and (and (= (memory_load8_le mem@0 #x0000000000000884) #x01) (= (memory_load8_le mem@0 #x0000000000000885) #x00)) (and (= (memory_load8_le mem@0 #x0000000000000886) #x02) (= (memory_load8_le mem@0 #x0000000000000887) #x00))) (=> (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc8) #x10) (= (memory_load8_le mem@0 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd0) #xc0) (= (memory_load8_le mem@0 #x000000000001fdd1) #x07)) (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd8) #x14) (= (memory_load8_le mem@0 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x0000000000020040) #x40) (= (memory_load8_le mem@0 #x0000000000020041) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020042) #x02) (= (memory_load8_le mem@0 #x0000000000020043) #x00))) (and (and (= (memory_load8_le mem@0 #x0000000000020044) #x00) (= (memory_load8_le mem@0 #x0000000000020045) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020046) #x00) (= (memory_load8_le mem@0 #x0000000000020047) #x00)))) (and (and (and (= mem@1 mem@0) (= Gamma_mem@1 Gamma_mem@0)) (and (= (memory_load8_le mem@1 #x0000000000000884) #x01) (= (memory_load8_le mem@1 #x0000000000000885) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000000886) #x02) (= (memory_load8_le mem@1 #x0000000000000887) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdc8) #x10) (= (memory_load8_le mem@1 #x000000000001fdc9) #x08)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdca) #x00) (= (memory_load8_le mem@1 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcc) #x00) (= (memory_load8_le mem@1 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdce) #x00) (= (memory_load8_le mem@1 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd0) #xc0) (= (memory_load8_le mem@1 #x000000000001fdd1) #x07)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd2) #x00) (= (memory_load8_le mem@1 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd4) #x00) (= (memory_load8_le mem@1 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd6) #x00) (= (memory_load8_le mem@1 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffd8) #x14) (= (memory_load8_le mem@1 #x000000000001ffd9) #x08))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffda) #x00) (= (memory_load8_le mem@1 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdc) #x00) (= (memory_load8_le mem@1 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffde) #x00) (= (memory_load8_le mem@1 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020040) #x40) (= (memory_load8_le mem@1 #x0000000000020041) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020042) #x02) (= (memory_load8_le mem@1 #x0000000000020043) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020044) #x00) (= (memory_load8_le mem@1 #x0000000000020045) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000020046) #x00) (= (memory_load8_le mem@1 #x0000000000020047) #x00)) (and (= mem@1 mem) (= (ControlFlow 0 2) (- 0 1)))))))) (= Gamma_mem@1 Gamma_mem))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.65:57| + :skolemid |11| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |examplebpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.49:56| + :skolemid |10| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |examplebpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |examplebpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |examplebpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $text_addr #x0000000000020048)) +(assert (= $copiedtext_addr #x0000000000020060)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |examplebpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |examplebpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(set-info :boogie-vc-id main_split0) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 1) true) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.65:57| + :skolemid |11| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |examplebpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.49:56| + :skolemid |10| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |examplebpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |examplebpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |examplebpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $text_addr #x0000000000020048)) +(assert (= $copiedtext_addr #x0000000000020060)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |examplebpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |examplebpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun Gamma_R0@0 () Bool) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun malloc_count () Int) +(set-info :boogie-vc-id main_split1) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffe0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000018) #x0000000000000000)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000018) true)))) (and (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000010) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000010) true))) (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000048)) (= Gamma_R0@0 true)))) (and (and (and (forall ((i@@1 (_ BitVec 64)) ) (! (=> (and (bvule R0@0 i@@1) (bvult i@@1 (bvadd R0@0 R0@1))) (not (= (select mem i@@1) #x00))) + :qid |examplebpl.483:19| + :skolemid |9| +)) (= (memory_load8_le mem (bvadd R0@0 R0@1)) #x00)) (and (bvult R0@0 (bvadd (bvadd R0@0 R0@1) #x0000000000000001)) (= (memory_load8_le mem #x0000000000000884) #x01))) (and (and (= (memory_load8_le mem #x0000000000000885) #x00) (= (memory_load8_le mem #x0000000000000886) #x02)) (and (= (memory_load8_le mem #x0000000000000887) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x10))))) (=> (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #xc0)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x14))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)))) (and (and (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)) (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00))) (and (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00)) (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (ControlFlow 0 2) (- 0 1))))))) (= R0@1 #x000000000000000d))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020038) #x00)) (and (= (memory_load8_le mem #x0000000000020039) #x00) (= (memory_load8_le mem #x000000000002003a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x00) (= (memory_load8_le mem #x000000000002003c) #x00)) (and (= (memory_load8_le mem #x000000000002003d) #x00) (= (memory_load8_le mem #x000000000002003e) #x00))) (and (and (= (memory_load8_le mem #x000000000002003f) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)) (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00)) (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00))) (and (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (memory_load8_le mem #x0000000000020048) #x42)) (and (= (memory_load8_le mem #x0000000000020049) #x41) (= (memory_load8_le mem #x000000000002004a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002004b) #x49) (= (memory_load8_le mem #x000000000002004c) #x4c)) (and (= (memory_load8_le mem #x000000000002004d) #x20) (= (memory_load8_le mem #x000000000002004e) #x56))) (and (and (= (memory_load8_le mem #x000000000002004f) #x65) (= (memory_load8_le mem #x0000000000020050) #x72)) (and (= (memory_load8_le mem #x0000000000020051) #x69) (= (memory_load8_le mem #x0000000000020052) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020053) #x69) (= (memory_load8_le mem #x0000000000020054) #x65)) (and (= (memory_load8_le mem #x0000000000020055) #x72) (= (memory_load8_le mem #x0000000000000884) #x01))) (and (and (= (memory_load8_le mem #x0000000000000885) #x00) (= (memory_load8_le mem #x0000000000000886) #x02)) (and (= (memory_load8_le mem #x0000000000000887) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x10)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #xc0)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x14))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)))) (and (and (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)) (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00))) (and (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00)) (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(get-info :reason-unknown) +(assert (not (= (ControlFlow 0 2) (- 1)))) +(check-sat) +(pop 1) +; Invalid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.65:57| + :skolemid |11| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |examplebpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.49:56| + :skolemid |10| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |examplebpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |examplebpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |examplebpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $text_addr #x0000000000020048)) +(assert (= $copiedtext_addr #x0000000000020060)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |examplebpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |examplebpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Invalid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun Gamma_R0@0 () Bool) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R0@2 () (_ BitVec 64)) +(declare-fun R1@0 () (_ BitVec 64)) +(declare-fun R0@3 () (_ BitVec 64)) +(declare-fun malloc_count () Int) +(set-info :boogie-vc-id main_split2) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffe0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000018) #x0000000000000000)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000018) true)))) (=> (and (and (and (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000010) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000010) true))) (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000048)) (= Gamma_R0@0 true))) (and (and (forall ((i@@1 (_ BitVec 64)) ) (! (=> (and (bvule R0@0 i@@1) (bvult i@@1 (bvadd R0@0 R0@1))) (not (= (select mem i@@1) #x00))) + :qid |examplebpl.483:19| + :skolemid |9| +)) (= (memory_load8_le mem (bvadd R0@0 R0@1)) #x00)) (and (bvult R0@0 (bvadd (bvadd R0@0 R0@1) #x0000000000000001)) (= (memory_load8_le mem #x0000000000000884) #x01)))) (and (and (and (= (memory_load8_le mem #x0000000000000885) #x00) (= (memory_load8_le mem #x0000000000000886) #x02)) (and (= (memory_load8_le mem #x0000000000000887) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x10))) (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))))) (=> (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #xc0))) (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x14))) (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020040) #x40))) (and (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)) (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00)) (and (= (memory_load8_le mem #x0000000000020047) #x00) (= R0@1 #x000000000000000d))) (and (and (= R0@2 (bvadd R0@1 #x0000000000000001)) (= R1@0 (bvadd #x0000000000020000 #x0000000000000048))) (and (= R0@3 (bvadd #x0000000000020000 #x0000000000000060)) (= (ControlFlow 0 2) (- 0 1))))))) (or (bvugt R0@3 (bvadd R1@0 R0@2)) (bvugt R1@0 (bvadd R0@3 R0@2)))))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020038) #x00)) (and (= (memory_load8_le mem #x0000000000020039) #x00) (= (memory_load8_le mem #x000000000002003a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x00) (= (memory_load8_le mem #x000000000002003c) #x00)) (and (= (memory_load8_le mem #x000000000002003d) #x00) (= (memory_load8_le mem #x000000000002003e) #x00))) (and (and (= (memory_load8_le mem #x000000000002003f) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)) (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00)) (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00))) (and (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (memory_load8_le mem #x0000000000020048) #x42)) (and (= (memory_load8_le mem #x0000000000020049) #x41) (= (memory_load8_le mem #x000000000002004a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002004b) #x49) (= (memory_load8_le mem #x000000000002004c) #x4c)) (and (= (memory_load8_le mem #x000000000002004d) #x20) (= (memory_load8_le mem #x000000000002004e) #x56))) (and (and (= (memory_load8_le mem #x000000000002004f) #x65) (= (memory_load8_le mem #x0000000000020050) #x72)) (and (= (memory_load8_le mem #x0000000000020051) #x69) (= (memory_load8_le mem #x0000000000020052) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020053) #x69) (= (memory_load8_le mem #x0000000000020054) #x65)) (and (= (memory_load8_le mem #x0000000000020055) #x72) (= (memory_load8_le mem #x0000000000000884) #x01))) (and (and (= (memory_load8_le mem #x0000000000000885) #x00) (= (memory_load8_le mem #x0000000000000886) #x02)) (and (= (memory_load8_le mem #x0000000000000887) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x10)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #xc0)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x14))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)))) (and (and (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)) (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00))) (and (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00)) (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $text_addr () (_ BitVec 64)) +(declare-fun $copiedtext_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |examplebpl.49:34| + :skolemid |3| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |examplebpl.65:57| + :skolemid |11| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) + :qid |examplebpl.57:37| + :skolemid |4| + :pattern ( (memory_load64_le memory index@@0)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |examplebpl.49:56| + :skolemid |10| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) + :qid |examplebpl.41:33| + :skolemid |1| + :pattern ( (gamma_load64 gammaMap@@0 index@@1)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) + :qid |examplebpl.37:33| + :skolemid |0| + :pattern ( (gamma_load32 gammaMap@@1 index@@2)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) + :qid |examplebpl.45:32| + :skolemid |2| + :pattern ( (gamma_load8 gammaMap@@2 index@@3)) +))) +(assert (= $text_addr #x0000000000020048)) +(assert (= $copiedtext_addr #x0000000000020060)) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) + :qid |examplebpl.61:36| + :skolemid |5| + :pattern ( (memory_load8_le memory@@0 index@@4)) +))) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) + :qid |examplebpl.65:38| + :skolemid |6| + :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun Gamma_R0@0 () Bool) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R0@2 () (_ BitVec 64)) +(declare-fun R1@0 () (_ BitVec 64)) +(declare-fun R0@3 () (_ BitVec 64)) +(declare-fun malloc_count () Int) +(set-info :boogie-vc-id main_split3) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffe0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000018) #x0000000000000000)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000018) true)))) (=> (and (and (and (and (and (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000010) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000010) true))) (= R0@0 (bvadd #x0000000000020000 #x0000000000000048))) (and (= Gamma_R0@0 true) (forall ((i@@1 (_ BitVec 64)) ) (! (=> (and (bvule R0@0 i@@1) (bvult i@@1 (bvadd R0@0 R0@1))) (not (= (select mem i@@1) #x00))) + :qid |examplebpl.483:19| + :skolemid |9| +)))) (and (and (= (memory_load8_le mem (bvadd R0@0 R0@1)) #x00) (bvult R0@0 (bvadd (bvadd R0@0 R0@1) #x0000000000000001))) (and (= (memory_load8_le mem #x0000000000000884) #x01) (= (memory_load8_le mem #x0000000000000885) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000000886) #x02) (= (memory_load8_le mem #x0000000000000887) #x00)) (and (= (memory_load8_le mem #x000000000001fdc8) #x10) (= (memory_load8_le mem #x000000000001fdc9) #x08))) (and (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem #x000000000001fdd0) #xc0) (= (memory_load8_le mem #x000000000001fdd1) #x07))) (and (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem #x000000000001ffd8) #x14) (= (memory_load8_le mem #x000000000001ffd9) #x08))) (and (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem #x0000000000020040) #x40) (= (memory_load8_le mem #x0000000000020041) #x00))) (and (and (= (memory_load8_le mem #x0000000000020042) #x02) (= (memory_load8_le mem #x0000000000020043) #x00)) (and (= (memory_load8_le mem #x0000000000020044) #x00) (= (memory_load8_le mem #x0000000000020045) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020046) #x00) (= (memory_load8_le mem #x0000000000020047) #x00)) (and (= R0@1 #x000000000000000d) (= R0@2 (bvadd R0@1 #x0000000000000001)))) (and (and (= R1@0 (bvadd #x0000000000020000 #x0000000000000048)) (= R0@3 (bvadd #x0000000000020000 #x0000000000000060))) (and (or (bvugt R0@3 (bvadd R1@0 R0@2)) (bvugt R1@0 (bvadd R0@3 R0@2))) (= (ControlFlow 0 2) (- 0 1)))))))) (and (bvugt (bvadd R0@3 R0@2) R0@3) (bvugt (bvadd R1@0 R0@2) R1@0)))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020038) #x00)) (and (= (memory_load8_le mem #x0000000000020039) #x00) (= (memory_load8_le mem #x000000000002003a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x00) (= (memory_load8_le mem #x000000000002003c) #x00)) (and (= (memory_load8_le mem #x000000000002003d) #x00) (= (memory_load8_le mem #x000000000002003e) #x00))) (and (and (= (memory_load8_le mem #x000000000002003f) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)) (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00)) (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00))) (and (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (memory_load8_le mem #x0000000000020048) #x42)) (and (= (memory_load8_le mem #x0000000000020049) #x41) (= (memory_load8_le mem #x000000000002004a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002004b) #x49) (= (memory_load8_le mem #x000000000002004c) #x4c)) (and (= (memory_load8_le mem #x000000000002004d) #x20) (= (memory_load8_le mem #x000000000002004e) #x56))) (and (and (= (memory_load8_le mem #x000000000002004f) #x65) (= (memory_load8_le mem #x0000000000020050) #x72)) (and (= (memory_load8_le mem #x0000000000020051) #x69) (= (memory_load8_le mem #x0000000000020052) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020053) #x69) (= (memory_load8_le mem #x0000000000020054) #x65)) (and (= (memory_load8_le mem #x0000000000020055) #x72) (= (memory_load8_le mem #x0000000000000884) #x01))) (and (and (= (memory_load8_le mem #x0000000000000885) #x00) (= (memory_load8_le mem #x0000000000000886) #x02)) (and (= (memory_load8_le mem #x0000000000000887) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x10)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #xc0)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x14))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)))) (and (and (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)) (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00))) (and (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00)) (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/Makefile new file mode 100644 index 000000000..b0247fc10 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/Makefile @@ -0,0 +1,2 @@ + +include ../../make/lift-directories.mk diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/Makefile new file mode 100644 index 000000000..3765849b9 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/Makefile @@ -0,0 +1,4 @@ +CC=clang +CFLAGS=-target $(TARGET) + +include ../../../make/lift.mk diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..e8c7e49a2 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,759 @@ +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 2428 20 2428)\n(code-region 1984 444 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 168)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2428 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2428 20)\n(llvm:code-entry .text 1984 444)\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 2452 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 2712)\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 2452 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 2712)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2512 200 2512)\n(llvm:section-entry .eh_frame_hdr 2452 60 2452)\n(llvm:section-entry .rodata 2448 4 2448)\n(llvm:section-entry .fini 2428 20 2428)\n(llvm:section-entry .text 1984 444 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 168 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2428 0 2428 2428)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2712 0)\n(mapped 130504 676 64968)\n(named-region 0 2712 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 444 .text)\n(named-region 2428 20 .fini)\n(named-region 2448 4 .rodata)\n(named-region 2452 60 .eh_frame_hdr)\n(named-region 2512 200 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2428 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 444)\n(section 2428 20)\n(section 2448 4)\n(section 2452 60)\n(section 2512 200)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2712 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 168 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2428 2428)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\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"), +Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x97C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x990, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x994, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x2c\xfe\xff\xff\x50\x00\x00\x00\x7c\xfe\xff\xff\x64\x00\x00\x00\xac\xfe\xff\xff\x78\x00\x00\x00\xec\xfe\xff\xff\x8c\x00\x00\x00\x3c\xff\xff\xff\xb0\x00\x00\x00\x40\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0x9D0, "\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\xd4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x10\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x2c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x58\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\x84\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\x24\x00\x00\x00\x18\x00\x00\x00\x60\xfe\xff\xff\xa8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x90\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x75\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x81\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x8e\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xA97), Attr("segment","02 0 2712")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), +Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), +Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), +Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), +Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), +Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), +Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), +Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), +Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x97B), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x97B), Attr("symbol-info","main 0x8D4 168")), +Annotation(Region(0x97C,0x98F), Attr("section","\".fini\"")), +Annotation(Region(0x990,0x993), Attr("section","\".rodata\"")), +Annotation(Region(0x994,0x9CF), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9D0,0xA97), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x97B), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x97B), Attr("code-region","()")), +Annotation(Region(0x97C,0x98F), Attr("code-region","()"))]), +Program(Tid(2_030, "%000007ee"), Attrs([]), + Subs([Sub(Tid(2_002, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_031, "%000007ef"), + 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_212, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), 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_618, "%00000652"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_003, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_032, "%000007f0"), + 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(759, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(763, "%000002fb"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(775, "%00000307"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(785, "%00000311"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(793, "%00000319"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(798, "%0000031e"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(805, "%00000325"), Attrs([Attr("address","0x890"), +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(811, "%0000032b"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(809, "%00000329"))), +Goto(Tid(2_004, "%000007d4"), Attrs([]), Int(1,1), +Direct(Tid(1_157, "%00000485")))])), Blk(Tid(1_157, "%00000485"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_173, "%00000495"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_171, "%00000493"))), Goto(Tid(2_005, "%000007d5"), Attrs([]), + Int(1,1), Direct(Tid(1_196, "%000004ac")))])), Blk(Tid(1_196, "%000004ac"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_214, "%000004be"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_002, "@__cxa_finalize")),Direct(Tid(1_171, "%00000493"))))])), +Blk(Tid(1_171, "%00000493"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_016, "@deregister_tm_clones")),Direct(Tid(1_183, "%0000049f"))))])), +Blk(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x8B8"), +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_006, "%000007d6"), Attrs([]), Int(1,1), +Direct(Tid(809, "%00000329")))])), Blk(Tid(809, "%00000329"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(819, "%00000333"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(826, "%0000033a"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(831, "%0000033f"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(835, "%00000343"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(840, "%00000348"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_007, "@__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_033, "%000007f1"), + 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_034, "%000007f2"), 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_035, "%000007f3"), 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_036, "%000007f4"), 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_037, "%000007f5"), 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(592, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_578, "%0000062a"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_585, "%00000631"), 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_591, "%00000637"), 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_596, "%0000063c"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_008, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x97C")]), + "_fini", Args([Arg(Tid(2_038, "%000007f6"), + 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","0x97C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x980"), +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","0x980"), +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","0x980"), +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","0x980"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x984"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x988"), +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","0x988"), +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","0x988"), +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","0x98C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_009, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_039, "%000007f7"), + 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_778, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_784, "%000006f8"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_790, "%000006fe"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_796, "%00000704"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_800, "%00000708"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#7",Imm(64))), Def(Tid(1_806, "%0000070e"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_811, "%00000713"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_813, "%00000715"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_014, "@call_weak_fn")),Direct(Tid(1_815, "%00000717"))))])), +Blk(Tid(1_815, "%00000717"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_820, "%0000071c"), 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_825, "%00000721"), 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_829, "%00000725"), 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_834, "%0000072a"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_010, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_040, "%000007f8"), + 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(529, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(534, "%00000216"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(539, "%0000021b"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(545, "%00000221"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(552, "%00000228"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(558, "%0000022e"), Attrs([Attr("address","0x7D4"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(564, "%00000234"), + Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(569, "%00000239"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(576, "%00000240"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(581, "%00000245"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(586, "%0000024a"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(591, "%0000024f"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(594, "%00000252"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_007, "@__libc_start_main")),Direct(Tid(596, "%00000254"))))])), +Blk(Tid(596, "%00000254"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(599, "%00000257"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_013, "@abort")),Direct(Tid(2_011, "%000007db"))))])), +Blk(Tid(2_011, "%000007db"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_012, "%000007dc"), Attrs([]), Int(1,1), +(Direct(Tid(2_014, "@call_weak_fn")),))]))])), Sub(Tid(2_013, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(600, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_014, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(2_041, "%000007f9"), + 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(604, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(607, "%0000025f"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(614, "%00000266"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(620, "%0000026c"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(618, "%0000026a"))), Goto(Tid(2_015, "%000007df"), Attrs([]), + Int(1,1), Direct(Tid(1_276, "%000004fc")))])), Blk(Tid(618, "%0000026a"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_277, "@__gmon_start__")))])), Blk(Tid(1_277, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_016, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(2_042, "%000007fa"), + 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(632, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(635, "%0000027b"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(641, "%00000281"), + Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(646, "%00000286"), Attrs([Attr("address","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(652, "%0000028c"), Attrs([Attr("address","0x81C"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(658, "%00000292"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(663, "%00000297"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(669, "%0000029d"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(675, "%000002a3"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(679, "%000002a7"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(683, "%000002ab"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(689, "%000002b1"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(687, "%000002af"))), Goto(Tid(2_017, "%000007e1"), Attrs([]), + Int(1,1), Direct(Tid(1_246, "%000004de")))])), Blk(Tid(1_246, "%000004de"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(687, "%000002af"))), Goto(Tid(2_018, "%000007e2"), Attrs([]), + Int(1,1), Direct(Tid(1_265, "%000004f1")))])), Blk(Tid(687, "%000002af"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(695, "%000002b7"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_019, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_043, "%000007fb"), + 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(846, "@frame_dummy"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_026, "@register_tm_clones")),))]))])), Sub(Tid(2_020, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_044, "%000007fc"), + 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_121, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_021, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_045, "%000007fd"), + 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_046, "%000007fe"), + 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_047, "%000007ff"), + 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(850, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(854, "%00000356"), + Attrs([Attr("address","0x8D4"), Attr("insn","sub sp, sp, #0x40")]), + Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), +Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x8D8"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(866, "%00000362"), + Attrs([Attr("address","0x8D8"), 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(872, "%00000368"), Attrs([Attr("address","0x8D8"), +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(878, "%0000036e"), Attrs([Attr("address","0x8DC"), +Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(885, "%00000375"), + Attrs([Attr("address","0x8E0"), Attr("insn","stur xzr, [x29, #-0x8]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x8E4"), +Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(897, "%00000381"), Attrs([Attr("address","0x8E8"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(905, "%00000389"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_022, "@malloc")),Direct(Tid(907, "%0000038b"))))])), +Blk(Tid(907, "%0000038b"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8F0"), +Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), +Def(Tid(918, "%00000396"), Attrs([Attr("address","0x8F4"), +Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x8F8"), +Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(933, "%000003a5"), Attrs([Attr("address","0x8FC"), +Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x900"), +Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x904"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(952, "%000003b8"), Attrs([Attr("address","0x908"), +Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(960, "%000003c0"), + Attrs([Attr("address","0x90C"), Attr("insn","str x0, [sp]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x910"), +Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2324,64))]), +Jmps([Call(Tid(968, "%000003c8"), Attrs([Attr("address","0x910"), +Attr("insn","bl #-0x1f0")]), Int(1,1), +(Direct(Tid(2_029, "@strlen")),Direct(Tid(970, "%000003ca"))))])), +Blk(Tid(970, "%000003ca"), Attrs([Attr("address","0x914")]), Phis([]), +Defs([Def(Tid(975, "%000003cf"), Attrs([Attr("address","0x914"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x918"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(988, "%000003dc"), Attrs([Attr("address","0x91C"), +Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x920"), +Attr("insn","bl #-0x210")]), Var("R30",Imm(64)), Int(2340,64))]), +Jmps([Call(Tid(996, "%000003e4"), Attrs([Attr("address","0x920"), +Attr("insn","bl #-0x210")]), Int(1,1), +(Direct(Tid(2_023, "@memcpy")),Direct(Tid(998, "%000003e6"))))])), +Blk(Tid(998, "%000003e6"), Attrs([Attr("address","0x924")]), Phis([]), +Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x924"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x928"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_025, "@puts")),Direct(Tid(1_020, "%000003fc"))))])), +Blk(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x930"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x934"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x938"), +Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_046, "%00000416"), + Attrs([Attr("address","0x93C"), Attr("insn","stur x9, [x29, #-0x8]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x940"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x944"), +Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x948"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x94C"), +Attr("insn","bl #-0x22c")]), Var("R30",Imm(64)), Int(2384,64))]), +Jmps([Call(Tid(1_075, "%00000433"), Attrs([Attr("address","0x94C"), +Attr("insn","bl #-0x22c")]), Int(1,1), +(Direct(Tid(2_029, "@strlen")),Direct(Tid(1_077, "%00000435"))))])), +Blk(Tid(1_077, "%00000435"), Attrs([Attr("address","0x950")]), Phis([]), +Defs([Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x950"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x954"), +Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x958"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x1fc")]), Var("R30",Imm(64)), Int(2400,64))]), +Jmps([Call(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x1fc")]), Int(1,1), +(Direct(Tid(2_024, "@memset")),Direct(Tid(1_103, "%0000044f"))))])), +Blk(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x960")]), Phis([]), +Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x960"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x964"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x1c8")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x1c8")]), Int(1,1), +(Direct(Tid(2_020, "@free")),Direct(Tid(1_125, "%00000465"))))])), +Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x96C"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x970"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_139, "%00000473"), + Attrs([Attr("address","0x970"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), + Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), +Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x970"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x974"), +Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_155, "%00000483"), + Attrs([Attr("address","0x978"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_022, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_048, "%00000800"), 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_049, "%00000801"), + 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(903, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_023, "@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_050, "%00000802"), 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_051, "%00000803"), + 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_052, "%00000804"), 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_053, "%00000805"), 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(994, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_534, "%000005fe"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_541, "%00000605"), 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_547, "%0000060b"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_552, "%00000610"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_024, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_054, "%00000806"), 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_055, "%00000807"), + 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_056, "%00000808"), + 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_057, "%00000809"), 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_099, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_025, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_058, "%0000080a"), 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_059, "%0000080b"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_016, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_026, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(2_060, "%0000080c"), + 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(697, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(706, "%000002c2"), Attrs([Attr("address","0x844"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(711, "%000002c7"), + Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(717, "%000002cd"), + Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(724, "%000002d4"), Attrs([Attr("address","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(730, "%000002da"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(737, "%000002e1"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(749, "%000002ed"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(747, "%000002eb"))), Goto(Tid(2_027, "%000007eb"), Attrs([]), + Int(1,1), Direct(Tid(1_216, "%000004c0")))])), Blk(Tid(1_216, "%000004c0"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(747, "%000002eb"))), Goto(Tid(2_028, "%000007ec"), Attrs([]), + Int(1,1), Direct(Tid(1_235, "%000004d3")))])), Blk(Tid(747, "%000002eb"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(755, "%000002f3"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_029, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_061, "%0000080d"), 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_062, "%0000080e"), + 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(966, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_563, "%0000061b"), 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_569, "%00000621"), 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_574, "%00000626"), + 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/clang/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..b8bf42653 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,352 @@ +000007ee: program +000007d2: sub __cxa_finalize(__cxa_finalize_result) +000007ef: __cxa_finalize_result :: out u32 = low:32[R0] + +000004bc: +00000640: R16 := 0x20000 +00000647: R17 := mem[R16 + 0x18, el]:u64 +0000064d: R16 := R16 + 0x18 +00000652: call R17 with noreturn + +000007d3: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000007f0: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002f7: +000002fb: #3 := R31 - 0x20 +00000301: mem := mem with [#3, el]:u64 <- R29 +00000307: mem := mem with [#3 + 8, el]:u64 <- R30 +0000030b: R31 := #3 +00000311: R29 := R31 +00000319: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000031e: R19 := 0x20000 +00000325: R0 := pad:64[mem[R19 + 0x70]] +0000032b: when 0:0[R0] goto %00000329 +000007d4: goto %00000485 + +00000485: +00000488: R0 := 0x1F000 +0000048f: R0 := mem[R0 + 0xFC8, el]:u64 +00000495: when R0 = 0 goto %00000493 +000007d5: goto %000004ac + +000004ac: +000004af: R0 := 0x20000 +000004b6: R0 := mem[R0 + 0x58, el]:u64 +000004bb: R30 := 0x8B0 +000004be: call @__cxa_finalize with return %00000493 + +00000493: +0000049b: R30 := 0x8B4 +0000049d: call @deregister_tm_clones with return %0000049f + +0000049f: +000004a2: R0 := 1 +000004aa: mem := mem with [R19 + 0x70] <- 7:0[R0] +000007d6: goto %00000329 + +00000329: +00000333: R19 := mem[R31 + 0x10, el]:u64 +0000033a: R29 := mem[R31, el]:u64 +0000033f: R30 := mem[R31 + 8, el]:u64 +00000343: R31 := R31 + 0x20 +00000348: call R30 with noreturn + +000007d7: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000007f1: __libc_start_main_main :: in u64 = R0 +000007f2: __libc_start_main_arg2 :: in u32 = low:32[R1] +000007f3: __libc_start_main_arg3 :: in out u64 = R2 +000007f4: __libc_start_main_auxv :: in out u64 = R3 +000007f5: __libc_start_main_result :: out u32 = low:32[R0] + +00000250: +0000062a: R16 := 0x20000 +00000631: R17 := mem[R16 + 0x10, el]:u64 +00000637: R16 := R16 + 0x10 +0000063c: call R17 with noreturn + +000007d8: sub _fini(_fini_result) +000007f6: _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 + +000007d9: sub _init(_init_result) +000007f7: _init_result :: out u32 = low:32[R0] + +000006f2: +000006f8: #7 := R31 - 0x10 +000006fe: mem := mem with [#7, el]:u64 <- R29 +00000704: mem := mem with [#7 + 8, el]:u64 <- R30 +00000708: R31 := #7 +0000070e: R29 := R31 +00000713: R30 := 0x6E8 +00000715: call @call_weak_fn with return %00000717 + +00000717: +0000071c: R29 := mem[R31, el]:u64 +00000721: R30 := mem[R31 + 8, el]:u64 +00000725: R31 := R31 + 0x10 +0000072a: call R30 with noreturn + +000007da: sub _start(_start_result) +000007f8: _start_result :: out u32 = low:32[R0] + +00000211: +00000216: R29 := 0 +0000021b: R30 := 0 +00000221: R5 := R0 +00000228: R1 := mem[R31, el]:u64 +0000022e: R2 := R31 + 8 +00000234: R6 := R31 +00000239: R0 := 0x1F000 +00000240: R0 := mem[R0 + 0xFD8, el]:u64 +00000245: R3 := 0 +0000024a: R4 := 0 +0000024f: R30 := 0x7F0 +00000252: call @__libc_start_main with return %00000254 + +00000254: +00000257: R30 := 0x7F4 +0000025a: call @abort with return %000007db + +000007db: +000007dc: call @call_weak_fn with noreturn + +000007dd: sub abort() + + +00000258: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x38, el]:u64 +000006a5: R16 := R16 + 0x38 +000006aa: call R17 with noreturn + +000007de: sub call_weak_fn(call_weak_fn_result) +000007f9: call_weak_fn_result :: out u32 = low:32[R0] + +0000025c: +0000025f: R0 := 0x1F000 +00000266: R0 := mem[R0 + 0xFD0, el]:u64 +0000026c: when R0 = 0 goto %0000026a +000007df: goto %000004fc + +0000026a: +00000272: call R30 with noreturn + +000004fc: +000004ff: goto @__gmon_start__ + +000004fd: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x30, el]:u64 +0000068f: R16 := R16 + 0x30 +00000694: call R17 with noreturn + +000007e0: sub deregister_tm_clones(deregister_tm_clones_result) +000007fa: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000278: +0000027b: R0 := 0x20000 +00000281: R0 := R0 + 0x70 +00000286: R1 := 0x20000 +0000028c: R1 := R1 + 0x70 +00000292: #1 := ~R0 +00000297: #2 := R1 + ~R0 +0000029d: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002a3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002a7: ZF := #2 + 1 = 0 +000002ab: NF := 63:63[#2 + 1] +000002b1: when ZF goto %000002af +000007e1: goto %000004de + +000004de: +000004e1: R1 := 0x1F000 +000004e8: R1 := mem[R1 + 0xFC0, el]:u64 +000004ed: when R1 = 0 goto %000002af +000007e2: goto %000004f1 + +000002af: +000002b7: call R30 with noreturn + +000004f1: +000004f5: R16 := R1 +000004fa: call R16 with noreturn + +000007e3: sub frame_dummy(frame_dummy_result) +000007fb: frame_dummy_result :: out u32 = low:32[R0] + +0000034e: +00000350: call @register_tm_clones with noreturn + +000007e4: sub free(free_ptr) +000007fc: free_ptr :: in out u64 = R0 + +00000461: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x48, el]:u64 +000006d1: R16 := R16 + 0x48 +000006d6: call R17 with noreturn + +000007e5: sub main(main_argc, main_argv, main_result) +000007fd: main_argc :: in u32 = low:32[R0] +000007fe: main_argv :: in out u64 = R1 +000007ff: main_result :: out u32 = low:32[R0] + +00000352: +00000356: R31 := R31 - 0x40 +0000035c: #4 := R31 + 0x30 +00000362: mem := mem with [#4, el]:u64 <- R29 +00000368: mem := mem with [#4 + 8, el]:u64 <- R30 +0000036e: R29 := R31 + 0x30 +00000375: mem := mem with [R29 - 8, el]:u64 <- 0 +0000037c: mem := mem with [R29 - 0x10, el]:u64 <- 0 +00000381: R0 := 0xB +00000386: R30 := 0x8F0 +00000389: call @malloc with return %0000038b + +0000038b: +0000038e: R8 := 0x20000 +00000396: mem := mem with [R31 + 0x18, el]:u64 <- R8 +0000039e: mem := mem with [R8 + 0x78, el]:u64 <- R0 +000003a5: R8 := mem[R8 + 0x78, el]:u64 +000003ad: mem := mem with [R31 + 8, el]:u64 <- R8 +000003b2: R0 := 0x20000 +000003b8: R0 := R0 + 0x61 +000003c0: mem := mem with [R31, el]:u64 <- R0 +000003c5: R30 := 0x914 +000003c8: call @strlen with return %000003ca + +000003ca: +000003cf: R1 := mem[R31, el]:u64 +000003d5: R2 := R0 +000003dc: R0 := mem[R31 + 8, el]:u64 +000003e1: R30 := 0x924 +000003e4: call @memcpy with return %000003e6 + +000003e6: +000003eb: R8 := mem[R31 + 0x18, el]:u64 +000003f2: R0 := mem[R8 + 0x78, el]:u64 +000003f7: R30 := 0x930 +000003fa: call @puts with return %000003fc + +000003fc: +00000401: R8 := mem[R31 + 0x18, el]:u64 +00000408: R9 := mem[R8 + 0x78, el]:u64 +0000040e: R9 := R9 + 4 +00000416: mem := mem with [R29 - 8, el]:u64 <- R9 +0000041d: R9 := mem[R8 + 0x78, el]:u64 +00000425: mem := mem with [R31 + 0x10, el]:u64 <- R9 +0000042c: R0 := mem[R8 + 0x78, el]:u64 +00000431: R30 := 0x950 +00000433: call @strlen with return %00000435 + +00000435: +00000439: R2 := R0 +00000440: R0 := mem[R31 + 0x10, el]:u64 +00000445: R1 := 1 +0000044a: R30 := 0x960 +0000044d: call @memset with return %0000044f + +0000044f: +00000454: R8 := mem[R31 + 0x18, el]:u64 +0000045b: R0 := mem[R8 + 0x78, el]:u64 +00000460: R30 := 0x96C +00000463: call @free with return %00000465 + +00000465: +00000468: R0 := 0 +0000046e: #5 := R31 + 0x30 +00000473: R29 := mem[#5, el]:u64 +00000478: R30 := mem[#5 + 8, el]:u64 +0000047e: R31 := R31 + 0x40 +00000483: call R30 with noreturn + +000007e6: sub malloc(malloc_size, malloc_result) +00000800: malloc_size :: in u64 = R0 +00000801: malloc_result :: out u64 = R0 + +00000387: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16 + 0x20, el]:u64 +00000663: R16 := R16 + 0x20 +00000668: call R17 with noreturn + +000007e7: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000802: memcpy_dst :: in out u64 = R0 +00000803: memcpy_src :: in out u64 = R1 +00000804: memcpy_n :: in u64 = R2 +00000805: memcpy_result :: out u64 = R0 + +000003e2: +000005fe: R16 := 0x20000 +00000605: R17 := mem[R16, el]:u64 +0000060b: R16 := R16 +00000610: call R17 with noreturn + +000007e8: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000806: memset_buf :: in out u64 = R0 +00000807: memset_c :: in u32 = low:32[R1] +00000808: memset_n :: in u64 = R2 +00000809: memset_result :: out u64 = R0 + +0000044b: +0000066c: R16 := 0x20000 +00000673: R17 := mem[R16 + 0x28, el]:u64 +00000679: R16 := R16 + 0x28 +0000067e: call R17 with noreturn + +000007e9: sub puts(puts_s, puts_result) +0000080a: puts_s :: in u64 = R0 +0000080b: puts_result :: out u32 = low:32[R0] + +000003f8: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x40, el]:u64 +000006bb: R16 := R16 + 0x40 +000006c0: call R17 with noreturn + +000007ea: sub register_tm_clones(register_tm_clones_result) +0000080c: register_tm_clones_result :: out u32 = low:32[R0] + +000002b9: +000002bc: R0 := 0x20000 +000002c2: R0 := R0 + 0x70 +000002c7: R1 := 0x20000 +000002cd: R1 := R1 + 0x70 +000002d4: R1 := R1 + ~R0 + 1 +000002da: R2 := 0.63:63[R1] +000002e1: R1 := R2 + (R1 ~>> 3) +000002e7: R1 := extend:64[63:1[R1]] +000002ed: when R1 = 0 goto %000002eb +000007eb: goto %000004c0 + +000004c0: +000004c3: R2 := 0x1F000 +000004ca: R2 := mem[R2 + 0xFE0, el]:u64 +000004cf: when R2 = 0 goto %000002eb +000007ec: goto %000004d3 + +000002eb: +000002f3: call R30 with noreturn + +000004d3: +000004d7: R16 := R2 +000004dc: call R16 with noreturn + +000007ed: sub strlen(strlen_s, strlen_result) +0000080d: strlen_s :: in u64 = R0 +0000080e: strlen_result :: out u64 = R0 + +000003c6: +00000614: R16 := 0x20000 +0000061b: R17 := mem[R16 + 8, el]:u64 +00000621: R16 := R16 + 8 +00000626: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..b8d9040b4 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,144 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 99 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: 000000000000097c 0 SECTION LOCAL DEFAULT 14 .fini + 15: 0000000000000990 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 0000000000000994 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009d0 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 00000000000009e4 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 0000000000000990 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 000000000000097c 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 0000000000000988 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 00000000000009f8 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 + 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 + 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 + 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 + 59: 0000000000000a58 0 NOTYPE LOCAL DEFAULT 17 $d.4 + 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 61: 0000000000000a94 0 NOTYPE LOCAL DEFAULT 17 $d + 62: 0000000000000a94 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 65: 0000000000000994 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata + 77: 000000000000097c 0 FUNC GLOBAL HIDDEN 14 _fini + 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 86: 0000000000000990 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end + 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf + 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext + 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 95: 00000000000008d4 168 FUNC GLOBAL DEFAULT 13 main + 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/Makefile new file mode 100644 index 000000000..46de10ac0 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/Makefile @@ -0,0 +1,5 @@ +CC=clang +CFLAGS=-target $(TARGET) -O2 + +include ../../../make/lift.mk + 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..82df9a672 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,740 @@ +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 2392 20 2392)\n(code-region 1984 408 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 132)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2392 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2392 20)\n(llvm:code-entry .text 1984 408)\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 2416 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 2688)\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 2416 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 2688)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2480 208 2480)\n(llvm:section-entry .eh_frame_hdr 2416 60 2416)\n(llvm:section-entry .rodata 2412 4 2412)\n(llvm:section-entry .fini 2392 20 2392)\n(llvm:section-entry .text 1984 408 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 132 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2392 0 2392 2392)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2688 0)\n(mapped 130504 676 64968)\n(named-region 0 2688 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 408 .text)\n(named-region 2392 20 .fini)\n(named-region 2412 4 .rodata)\n(named-region 2416 60 .eh_frame_hdr)\n(named-region 2480 208 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2392 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 408)\n(section 2392 20)\n(section 2412 4)\n(section 2416 60)\n(section 2480 208)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2688 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 132 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2392 2392)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\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\x70\x09\x00\x00\x00\x00\x00\x00\x70\x09\x00\x00\x00\x00\x00\x00\x70\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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e\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"), +Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\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\x70\x09\x00\x00\x00\x00\x00\x00\x70\x09\x00\x00\x00\x00\x00\x00\x70\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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7e\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x8a\xff\xff\x97\xa0\x3e\x40\xf9\x98\xff\xff\x97\xe0\x03\x1f\x2a"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x958, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x96C, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x970, "\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", 0x9B0, "\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", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x58\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7e\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x8a\xff\xff\x97\xa0\x3e\x40\xf9\x98\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,0xA7F), Attr("segment","02 0 2688")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), +Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), +Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), +Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), +Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), +Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), +Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), +Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), +Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x957), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x957), Attr("symbol-info","main 0x8D4 132")), +Annotation(Region(0x958,0x96B), Attr("section","\".fini\"")), +Annotation(Region(0x96C,0x96F), Attr("section","\".rodata\"")), +Annotation(Region(0x970,0x9AB), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9B0,0xA7F), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x957), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x957), Attr("code-region","()")), +Annotation(Region(0x958,0x96B), Attr("code-region","()"))]), +Program(Tid(1_938, "%00000792"), Attrs([]), + Subs([Sub(Tid(1_910, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(1_939, "%00000793"), + 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","0x740")]), Phis([]), +Defs([Def(Tid(1_517, "%000005ed"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_524, "%000005f4"), 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_530, "%000005fa"), 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_535, "%000005ff"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(1_911, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(1_940, "%00000794"), + 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","0x880")]), Phis([]), Defs([Def(Tid(727, "%000002d7"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(733, "%000002dd"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(739, "%000002e3"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(749, "%000002ed"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(757, "%000002f5"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x890"), +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","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(773, "%00000305"))), +Goto(Tid(1_912, "%00000778"), Attrs([]), Int(1,1), +Direct(Tid(1_074, "%00000432")))])), Blk(Tid(1_074, "%00000432"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_090, "%00000442"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_088, "%00000440"))), Goto(Tid(1_913, "%00000779"), Attrs([]), + Int(1,1), Direct(Tid(1_113, "%00000459")))])), Blk(Tid(1_113, "%00000459"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_131, "%0000046b"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(1_910, "@__cxa_finalize")),Direct(Tid(1_088, "%00000440"))))])), +Blk(Tid(1_088, "%00000440"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(1_924, "@deregister_tm_clones")),Direct(Tid(1_100, "%0000044c"))))])), +Blk(Tid(1_100, "%0000044c"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x8B8"), +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(1_914, "%0000077a"), Attrs([]), Int(1,1), +Direct(Tid(773, "%00000305")))])), Blk(Tid(773, "%00000305"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(783, "%0000030f"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(790, "%00000316"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(795, "%0000031b"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(799, "%0000031f"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(804, "%00000324"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_915, "@__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(1_941, "%00000795"), + 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_942, "%00000796"), 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_943, "%00000797"), 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_944, "%00000798"), 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_945, "%00000799"), 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","0x730")]), Phis([]), +Defs([Def(Tid(1_495, "%000005d7"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_502, "%000005de"), 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_508, "%000005e4"), 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_513, "%000005e9"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_916, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x958")]), + "_fini", Args([Arg(Tid(1_946, "%0000079a"), + 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","0x958")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x95C"), +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","0x95C"), +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","0x95C"), +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","0x95C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x960"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x964"), +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","0x964"), +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","0x964"), +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","0x968"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_917, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(1_947, "%0000079b"), + 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_695, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_701, "%000006a5"), 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_707, "%000006ab"), 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_713, "%000006b1"), 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_717, "%000006b5"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#8",Imm(64))), Def(Tid(1_723, "%000006bb"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_728, "%000006c0"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_730, "%000006c2"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(1_922, "@call_weak_fn")),Direct(Tid(1_732, "%000006c4"))))])), +Blk(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_737, "%000006c9"), 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_742, "%000006ce"), 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_746, "%000006d2"), 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_751, "%000006d7"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_918, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(1_948, "%0000079c"), + 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","0x7C0")]), Phis([]), Defs([Def(Tid(498, "%000001f2"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(503, "%000001f7"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(509, "%000001fd"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(516, "%00000204"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(522, "%0000020a"), Attrs([Attr("address","0x7D4"), +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","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(533, "%00000215"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(540, "%0000021c"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(545, "%00000221"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(550, "%00000226"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(555, "%0000022b"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(558, "%0000022e"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(1_915, "@__libc_start_main")),Direct(Tid(560, "%00000230"))))])), +Blk(Tid(560, "%00000230"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(563, "%00000233"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(566, "%00000236"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(1_921, "@abort")),Direct(Tid(1_919, "%0000077f"))))])), +Blk(Tid(1_919, "%0000077f"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(1_920, "%00000780"), Attrs([]), Int(1,1), +(Direct(Tid(1_922, "@call_weak_fn")),))]))])), Sub(Tid(1_921, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(564, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_605, "%00000645"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_612, "%0000064c"), 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_618, "%00000652"), 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_623, "%00000657"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_922, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(1_949, "%0000079d"), + 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","0x7F4")]), Phis([]), Defs([Def(Tid(571, "%0000023b"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(578, "%00000242"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(584, "%00000248"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(582, "%00000246"))), Goto(Tid(1_923, "%00000783"), Attrs([]), + Int(1,1), Direct(Tid(1_193, "%000004a9")))])), Blk(Tid(582, "%00000246"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(590, "%0000024e"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_194, "@__gmon_start__")))])), Blk(Tid(1_194, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_583, "%0000062f"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_590, "%00000636"), 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_596, "%0000063c"), 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_601, "%00000641"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(1_924, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(1_950, "%0000079e"), + 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","0x810")]), Phis([]), Defs([Def(Tid(599, "%00000257"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(605, "%0000025d"), + Attrs([Attr("address","0x814"), 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","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(616, "%00000268"), Attrs([Attr("address","0x81C"), +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","0x820"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(627, "%00000273"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(633, "%00000279"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(643, "%00000283"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(647, "%00000287"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(653, "%0000028d"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(651, "%0000028b"))), Goto(Tid(1_925, "%00000785"), Attrs([]), + Int(1,1), Direct(Tid(1_163, "%0000048b")))])), Blk(Tid(1_163, "%0000048b"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_178, "%0000049a"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(651, "%0000028b"))), Goto(Tid(1_926, "%00000786"), Attrs([]), + Int(1,1), Direct(Tid(1_182, "%0000049e")))])), Blk(Tid(651, "%0000028b"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(659, "%00000293"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(1_927, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(1_951, "%0000079f"), + 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","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(812, "%0000032c"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(1_934, "@register_tm_clones")),))]))])), Sub(Tid(1_928, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(1_952, "%000007a0"), + 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","0x7A0")]), + Phis([]), Defs([Def(Tid(1_649, "%00000671"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_656, "%00000678"), 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_662, "%0000067e"), 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_667, "%00000683"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_929, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(1_953, "%000007a1"), + 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_954, "%000007a2"), + 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_955, "%000007a3"), + 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","0x8D4")]), Phis([]), Defs([Def(Tid(818, "%00000332"), + Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(824, "%00000338"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(830, "%0000033e"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(834, "%00000342"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#4",Imm(64))), Def(Tid(842, "%0000034a"), + Attrs([Attr("address","0x8D8"), 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","0x8DC"), +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","0x8DC"), 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","0x8DC"), +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","0x8E0"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(871, "%00000367"), Attrs([Attr("address","0x8E4"), +Attr("insn","mov w0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x8E8"), +Attr("insn","bl #-0x198")]), Var("R30",Imm(64)), Int(2284,64))]), +Jmps([Call(Tid(879, "%0000036f"), Attrs([Attr("address","0x8E8"), +Attr("insn","bl #-0x198")]), Int(1,1), +(Direct(Tid(1_930, "@malloc")),Direct(Tid(881, "%00000371"))))])), +Blk(Tid(881, "%00000371"), Attrs([Attr("address","0x8EC")]), Phis([]), +Defs([Def(Tid(884, "%00000374"), Attrs([Attr("address","0x8EC"), +Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), +Def(Tid(889, "%00000379"), Attrs([Attr("address","0x8F0"), +Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), +Def(Tid(895, "%0000037f"), Attrs([Attr("address","0x8F4"), +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","0x8F8"), Attr("insn","mov x19, x0")]), + Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(909, "%0000038d"), + Attrs([Attr("address","0x8FC"), 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","0x900"), +Attr("insn","mov x0, x20")]), Var("R0",Imm(64)), Var("R20",Imm(64))), +Def(Tid(920, "%00000398"), Attrs([Attr("address","0x904"), +Attr("insn","bl #-0x1e4")]), Var("R30",Imm(64)), Int(2312,64))]), +Jmps([Call(Tid(923, "%0000039b"), Attrs([Attr("address","0x904"), +Attr("insn","bl #-0x1e4")]), Int(1,1), +(Direct(Tid(1_937, "@strlen")),Direct(Tid(925, "%0000039d"))))])), +Blk(Tid(925, "%0000039d"), Attrs([Attr("address","0x908")]), Phis([]), +Defs([Def(Tid(929, "%000003a1"), Attrs([Attr("address","0x908"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x90C"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x910"), +Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x914"), +Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2328,64))]), +Jmps([Call(Tid(949, "%000003b5"), Attrs([Attr("address","0x914"), +Attr("insn","bl #-0x204")]), Int(1,1), +(Direct(Tid(1_931, "@memcpy")),Direct(Tid(951, "%000003b7"))))])), +Blk(Tid(951, "%000003b7"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(955, "%000003bb"), Attrs([Attr("address","0x918"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x91C"), +Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2336,64))]), +Jmps([Call(Tid(963, "%000003c3"), Attrs([Attr("address","0x91C"), +Attr("insn","bl #-0x18c")]), Int(1,1), +(Direct(Tid(1_933, "@puts")),Direct(Tid(965, "%000003c5"))))])), +Blk(Tid(965, "%000003c5"), Attrs([Attr("address","0x920")]), Phis([]), +Defs([Def(Tid(970, "%000003ca"), Attrs([Attr("address","0x920"), +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","0x924"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x208")]), Var("R30",Imm(64)), Int(2348,64))]), +Jmps([Call(Tid(983, "%000003d7"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x208")]), Int(1,1), +(Direct(Tid(1_937, "@strlen")),Direct(Tid(985, "%000003d9"))))])), +Blk(Tid(985, "%000003d9"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x92C"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x930"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x934"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1d8")]), Var("R30",Imm(64)), Int(2364,64))]), +Jmps([Call(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1d8")]), Int(1,1), +(Direct(Tid(1_932, "@memset")),Direct(Tid(1_010, "%000003f2"))))])), +Blk(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x93C"), +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","0x940"), +Attr("insn","bl #-0x1a0")]), Var("R30",Imm(64)), Int(2372,64))]), +Jmps([Call(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x940"), +Attr("insn","bl #-0x1a0")]), Int(1,1), +(Direct(Tid(1_928, "@free")),Direct(Tid(1_025, "%00000401"))))])), +Blk(Tid(1_025, "%00000401"), Attrs([Attr("address","0x944")]), Phis([]), +Defs([Def(Tid(1_028, "%00000404"), Attrs([Attr("address","0x944"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x948"), +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","0x948"), 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","0x948"), +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","0x94C"), +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","0x950"), +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","0x950"), +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","0x950"), +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","0x954"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_930, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(1_956, "%000007a4"), 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(1_957, "%000007a5"), + 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","0x750")]), Phis([]), +Defs([Def(Tid(1_539, "%00000603"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_546, "%0000060a"), 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_552, "%00000610"), 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_557, "%00000615"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_931, "@memcpy"), + Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), +Attr("address","0x710"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(1_958, "%000007a6"), 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_959, "%000007a7"), + 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_960, "%000007a8"), 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_961, "%000007a9"), 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","0x710")]), Phis([]), +Defs([Def(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_458, "%000005b2"), 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_464, "%000005b8"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_469, "%000005bd"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_932, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(1_962, "%000007aa"), 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(1_963, "%000007ab"), + 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(1_964, "%000007ac"), + 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(1_965, "%000007ad"), 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","0x760")]), Phis([]), +Defs([Def(Tid(1_561, "%00000619"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_568, "%00000620"), 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_574, "%00000626"), 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_579, "%0000062b"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_933, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(1_966, "%000007ae"), 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(1_967, "%000007af"), 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","0x790")]), Phis([]), +Defs([Def(Tid(1_627, "%0000065b"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_634, "%00000662"), 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_640, "%00000668"), 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_645, "%0000066d"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(1_934, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(1_968, "%000007b0"), + 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","0x840")]), + Phis([]), Defs([Def(Tid(664, "%00000298"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x844"), +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","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), + Attrs([Attr("address","0x84C"), 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","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(694, "%000002b6"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(713, "%000002c9"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(711, "%000002c7"))), Goto(Tid(1_935, "%0000078f"), Attrs([]), + Int(1,1), Direct(Tid(1_133, "%0000046d")))])), Blk(Tid(1_133, "%0000046d"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_136, "%00000470"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(711, "%000002c7"))), Goto(Tid(1_936, "%00000790"), Attrs([]), + Int(1,1), Direct(Tid(1_152, "%00000480")))])), Blk(Tid(711, "%000002c7"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(719, "%000002cf"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_152, "%00000480"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_161, "%00000489"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(1_937, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(1_969, "%000007b1"), 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(1_970, "%000007b2"), + 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","0x720")]), Phis([]), +Defs([Def(Tid(1_473, "%000005c1"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_480, "%000005c8"), 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_486, "%000005ce"), 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_491, "%000005d3"), + 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/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..7a2981d48 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,348 @@ +00000792: program +00000776: sub __cxa_finalize(__cxa_finalize_result) +00000793: __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 + +00000777: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000794: __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 +00000778: goto %00000432 + +00000432: +00000435: R0 := 0x1F000 +0000043c: R0 := mem[R0 + 0xFC8, el]:u64 +00000442: when R0 = 0 goto %00000440 +00000779: goto %00000459 + +00000459: +0000045c: R0 := 0x20000 +00000463: R0 := mem[R0 + 0x58, el]:u64 +00000468: R30 := 0x8B0 +0000046b: call @__cxa_finalize with return %00000440 + +00000440: +00000448: R30 := 0x8B4 +0000044a: call @deregister_tm_clones with return %0000044c + +0000044c: +0000044f: R0 := 1 +00000457: mem := mem with [R19 + 0x70] <- 7:0[R0] +0000077a: 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 + +0000077b: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000795: __libc_start_main_main :: in u64 = R0 +00000796: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000797: __libc_start_main_arg3 :: in out u64 = R2 +00000798: __libc_start_main_auxv :: in out u64 = R3 +00000799: __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 + +0000077c: sub _fini(_fini_result) +0000079a: _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 + +0000077d: sub _init(_init_result) +0000079b: _init_result :: out u32 = low:32[R0] + +0000069f: +000006a5: #8 := R31 - 0x10 +000006ab: mem := mem with [#8, el]:u64 <- R29 +000006b1: mem := mem with [#8 + 8, el]:u64 <- R30 +000006b5: R31 := #8 +000006bb: R29 := R31 +000006c0: R30 := 0x6E8 +000006c2: call @call_weak_fn with return %000006c4 + +000006c4: +000006c9: R29 := mem[R31, el]:u64 +000006ce: R30 := mem[R31 + 8, el]:u64 +000006d2: R31 := R31 + 0x10 +000006d7: call R30 with noreturn + +0000077e: sub _start(_start_result) +0000079c: _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 := 0x7F0 +0000022e: call @__libc_start_main with return %00000230 + +00000230: +00000233: R30 := 0x7F4 +00000236: call @abort with return %0000077f + +0000077f: +00000780: call @call_weak_fn with noreturn + +00000781: sub abort() + + +00000234: +00000645: R16 := 0x20000 +0000064c: R17 := mem[R16 + 0x38, el]:u64 +00000652: R16 := R16 + 0x38 +00000657: call R17 with noreturn + +00000782: sub call_weak_fn(call_weak_fn_result) +0000079d: 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 +00000783: 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 + +00000784: sub deregister_tm_clones(deregister_tm_clones_result) +0000079e: 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 +00000785: goto %0000048b + +0000048b: +0000048e: R1 := 0x1F000 +00000495: R1 := mem[R1 + 0xFC0, el]:u64 +0000049a: when R1 = 0 goto %0000028b +00000786: goto %0000049e + +0000028b: +00000293: call R30 with noreturn + +0000049e: +000004a2: R16 := R1 +000004a7: call R16 with noreturn + +00000787: sub frame_dummy(frame_dummy_result) +0000079f: frame_dummy_result :: out u32 = low:32[R0] + +0000032a: +0000032c: call @register_tm_clones with noreturn + +00000788: sub free(free_ptr) +000007a0: 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 + +00000789: sub main(main_argc, main_argv, main_result) +000007a1: main_argc :: in u32 = low:32[R0] +000007a2: main_argv :: in out u64 = R1 +000007a3: 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 := 0x8EC +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 := 0x908 +0000039b: call @strlen with return %0000039d + +0000039d: +000003a1: R2 := R0 +000003a7: R0 := R19 +000003ad: R1 := R20 +000003b2: R30 := 0x918 +000003b5: call @memcpy with return %000003b7 + +000003b7: +000003bb: R0 := R19 +000003c0: R30 := 0x920 +000003c3: call @puts with return %000003c5 + +000003c5: +000003ca: R19 := mem[R21 + 0x78, el]:u64 +000003d0: R0 := R19 +000003d5: R30 := 0x92C +000003d7: call @strlen with return %000003d9 + +000003d9: +000003dd: R2 := R0 +000003e3: R0 := R19 +000003e8: R1 := 1 +000003ed: R30 := 0x93C +000003f0: call @memset with return %000003f2 + +000003f2: +000003f7: R0 := mem[R21 + 0x78, el]:u64 +000003fc: R30 := 0x944 +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 + +0000078a: sub malloc(malloc_size, malloc_result) +000007a4: malloc_size :: in u64 = R0 +000007a5: 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 + +0000078b: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000007a6: memcpy_dst :: in out u64 = R0 +000007a7: memcpy_src :: in out u64 = R1 +000007a8: memcpy_n :: in u64 = R2 +000007a9: memcpy_result :: out u64 = R0 + +000003b3: +000005ab: R16 := 0x20000 +000005b2: R17 := mem[R16, el]:u64 +000005b8: R16 := R16 +000005bd: call R17 with noreturn + +0000078c: sub memset(memset_buf, memset_c, memset_n, memset_result) +000007aa: memset_buf :: in out u64 = R0 +000007ab: memset_c :: in u32 = low:32[R1] +000007ac: memset_n :: in u64 = R2 +000007ad: 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 + +0000078d: sub puts(puts_s, puts_result) +000007ae: puts_s :: in u64 = R0 +000007af: 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 + +0000078e: sub register_tm_clones(register_tm_clones_result) +000007b0: 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 +0000078f: goto %0000046d + +0000046d: +00000470: R2 := 0x1F000 +00000477: R2 := mem[R2 + 0xFE0, el]:u64 +0000047c: when R2 = 0 goto %000002c7 +00000790: goto %00000480 + +000002c7: +000002cf: call R30 with noreturn + +00000480: +00000484: R16 := R2 +00000489: call R16 with noreturn + +00000791: sub strlen(strlen_s, strlen_result) +000007b1: strlen_s :: in u64 = R0 +000007b2: 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.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..e70b5eeec --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,144 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 99 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: 0000000000000958 0 SECTION LOCAL DEFAULT 14 .fini + 15: 000000000000096c 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 0000000000000970 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009b0 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 00000000000009c4 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 000000000000096c 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 0000000000000958 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 0000000000000964 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 00000000000009d8 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 + 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 + 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 + 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 + 59: 0000000000000a38 0 NOTYPE LOCAL DEFAULT 17 $d.4 + 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 61: 0000000000000a7c 0 NOTYPE LOCAL DEFAULT 17 $d + 62: 0000000000000a7c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 65: 0000000000000970 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata + 77: 0000000000000958 0 FUNC GLOBAL HIDDEN 14 _fini + 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 86: 000000000000096c 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end + 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf + 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext + 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 95: 00000000000008d4 132 FUNC GLOBAL DEFAULT 13 main + 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init 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/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/Makefile new file mode 100644 index 000000000..aed00c0f5 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/Makefile @@ -0,0 +1,3 @@ +CC=aarch64-linux-gnu-gcc + +include ../../../make/lift.mk diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..9c344b119 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,774 @@ +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 2460 20 2460)\n(code-region 1984 476 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 200)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2460 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2460 20)\n(llvm:code-entry .text 1984 476)\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 2484 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2720)\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 2484 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2720)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2544 176 2544)\n(llvm:section-entry .eh_frame_hdr 2484 60 2484)\n(llvm:section-entry .rodata 2480 4 2480)\n(llvm:section-entry .fini 2460 20 2460)\n(llvm:section-entry .text 1984 476 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 200 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2460 0 2460 2460)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2720 0)\n(mapped 130504 683 64968)\n(named-region 0 2720 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 476 .text)\n(named-region 2460 20 .fini)\n(named-region 2480 4 .rodata)\n(named-region 2484 60 .eh_frame_hdr)\n(named-region 2544 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2460 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 476)\n(section 2460 20)\n(section 2480 4)\n(section 2484 60)\n(section 2544 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2720 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 200 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2460 2460)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), +Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x99C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9B0, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9B4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x0c\xfe\xff\xff\x50\x00\x00\x00\x5c\xfe\xff\xff\x64\x00\x00\x00\x8c\xfe\xff\xff\x78\x00\x00\x00\xcc\xfe\xff\xff\x8c\x00\x00\x00\x1c\xff\xff\xff\xb0\x00\x00\x00\x20\xff\xff\xff\xc4\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\xb4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xf0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x0c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x38\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\x64\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x54\xfe\xff\xff\xc8\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x6e\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x9c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6e\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x86\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xA9F), Attr("segment","02 0 2720")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +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,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x99B), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x99B), Attr("symbol-info","main 0x8D4 200")), +Annotation(Region(0x99C,0x9AF), Attr("section","\".fini\"")), +Annotation(Region(0x9B0,0x9B3), Attr("section","\".rodata\"")), +Annotation(Region(0x9B4,0x9EF), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9F0,0xA9F), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x99B), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x99B), Attr("code-region","()")), +Annotation(Region(0x99C,0x9AF), Attr("code-region","()"))]), +Program(Tid(2_104, "%00000838"), Attrs([]), + Subs([Sub(Tid(2_076, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_105, "%00000839"), + 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_278, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_077, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_106, "%0000083a"), + 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(791, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(795, "%0000031b"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(801, "%00000321"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(807, "%00000327"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(817, "%00000331"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(825, "%00000339"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(830, "%0000033e"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(837, "%00000345"), Attrs([Attr("address","0x890"), +Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(843, "%0000034b"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(841, "%00000349"))), +Goto(Tid(2_078, "%0000081e"), Attrs([]), Int(1,1), +Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_237, "%000004d5"))), Goto(Tid(2_079, "%0000081f"), Attrs([]), + Int(1,1), Direct(Tid(1_262, "%000004ee")))])), Blk(Tid(1_262, "%000004ee"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_280, "%00000500"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_076, "@__cxa_finalize")),Direct(Tid(1_237, "%000004d5"))))])), +Blk(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_247, "%000004df"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_090, "@deregister_tm_clones")),Direct(Tid(1_249, "%000004e1"))))])), +Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_252, "%000004e4"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_260, "%000004ec"), Attrs([Attr("address","0x8B8"), +Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_080, "%00000820"), Attrs([]), Int(1,1), +Direct(Tid(841, "%00000349")))])), Blk(Tid(841, "%00000349"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(851, "%00000353"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(858, "%0000035a"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(863, "%0000035f"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(867, "%00000363"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(872, "%00000368"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_081, "@__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_107, "%0000083b"), + 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_108, "%0000083c"), 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_109, "%0000083d"), 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_110, "%0000083e"), 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_111, "%0000083f"), 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(624, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_082, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x99C")]), + "_fini", Args([Arg(Tid(2_112, "%00000840"), + 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","0x99C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x9A0"), +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","0x9A0"), +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","0x9A0"), +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","0x9A0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9A4"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9A8"), +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","0x9A8"), +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","0x9A8"), +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","0x9AC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_083, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_113, "%00000841"), + 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_844, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_850, "%0000073a"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_856, "%00000740"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_862, "%00000746"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_866, "%0000074a"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#6",Imm(64))), Def(Tid(1_872, "%00000750"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_877, "%00000755"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_879, "%00000757"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_088, "@call_weak_fn")),Direct(Tid(1_881, "%00000759"))))])), +Blk(Tid(1_881, "%00000759"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_886, "%0000075e"), 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_891, "%00000763"), 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_895, "%00000767"), 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_900, "%0000076c"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_084, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_114, "%00000842"), + 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(561, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(566, "%00000236"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(571, "%0000023b"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(577, "%00000241"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(584, "%00000248"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(590, "%0000024e"), Attrs([Attr("address","0x7D4"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(596, "%00000254"), + Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(601, "%00000259"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(608, "%00000260"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(613, "%00000265"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(618, "%0000026a"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(623, "%0000026f"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_081, "@__libc_start_main")),Direct(Tid(628, "%00000274"))))])), +Blk(Tid(628, "%00000274"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_087, "@abort")),Direct(Tid(2_085, "%00000825"))))])), +Blk(Tid(2_085, "%00000825"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_086, "%00000826"), Attrs([]), Int(1,1), +(Direct(Tid(2_088, "@call_weak_fn")),))]))])), Sub(Tid(2_087, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(632, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_761, "%000006e1"), 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_767, "%000006e7"), 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_772, "%000006ec"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_088, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(2_115, "%00000843"), + 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(636, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(639, "%0000027f"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(646, "%00000286"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(652, "%0000028c"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(650, "%0000028a"))), Goto(Tid(2_089, "%00000829"), Attrs([]), + Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(650, "%0000028a"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(658, "%00000292"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_342, "%0000053e"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_345, "%00000541"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_343, "@__gmon_start__")))])), Blk(Tid(1_343, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_090, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(2_116, "%00000844"), + 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(664, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(667, "%0000029b"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(673, "%000002a1"), + Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), +Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(684, "%000002ac"), Attrs([Attr("address","0x81C"), +Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(690, "%000002b2"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(695, "%000002b7"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(715, "%000002cb"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(721, "%000002d1"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(719, "%000002cf"))), Goto(Tid(2_091, "%0000082b"), Attrs([]), + Int(1,1), Direct(Tid(1_312, "%00000520")))])), Blk(Tid(1_312, "%00000520"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_315, "%00000523"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_322, "%0000052a"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(719, "%000002cf"))), Goto(Tid(2_092, "%0000082c"), Attrs([]), + Int(1,1), Direct(Tid(1_331, "%00000533")))])), Blk(Tid(719, "%000002cf"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(727, "%000002d7"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_331, "%00000533"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_093, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_117, "%00000845"), + 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(878, "@frame_dummy"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(880, "%00000370"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_100, "@register_tm_clones")),))]))])), Sub(Tid(2_094, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_118, "%00000846"), + 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_186, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_805, "%0000070d"), 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_811, "%00000713"), 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_816, "%00000718"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_095, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_119, "%00000847"), + 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_120, "%00000848"), + 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_121, "%00000849"), + 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(882, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(886, "%00000376"), + Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(898, "%00000382"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#4",Imm(64))), Def(Tid(908, "%0000038c"), + Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(916, "%00000394"), + Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x8E0"), +Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x8E4"), +Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x8E8"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(940, "%000003ac"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(943, "%000003af"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_096, "@malloc")),Direct(Tid(945, "%000003b1"))))])), +Blk(Tid(945, "%000003b1"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8F0"), +Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8F4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x8F8"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(968, "%000003c8"), + Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x900"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x904"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(986, "%000003da"), + Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(991, "%000003df"), Attrs([Attr("address","0x90C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x910"), +Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_002, "%000003ea"), + Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), + Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_005, "%000003ed"), + Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_007, "%000003ef"))))])), +Blk(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x918"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x91C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x920"), +Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_028, "%00000404"), + Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_033, "%00000409"), + Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), + Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_036, "%0000040c"), + Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_097, "@memcpy")),Direct(Tid(1_038, "%0000040e"))))])), +Blk(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x92C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x930"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_054, "%0000041e"), + Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), +Jmps([Call(Tid(1_062, "%00000426"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1a8")]), Int(1,1), +(Direct(Tid(2_099, "@puts")),Direct(Tid(1_064, "%00000428"))))])), +Blk(Tid(1_064, "%00000428"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x93C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x940"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_080, "%00000438"), + Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x948"), +Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_094, "%00000446"), + Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x950"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_105, "%00000451"), Attrs([Attr("address","0x954"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_112, "%00000458"), + Attrs([Attr("address","0x958"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x95C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x960"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_130, "%0000046a"), + Attrs([Attr("address","0x964"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x248")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(1_137, "%00000471"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x248")]), Int(1,1), +(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_139, "%00000473"))))])), +Blk(Tid(1_139, "%00000473"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x96C"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x970"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_154, "%00000482"), Attrs([Attr("address","0x974"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2428,64))]), +Jmps([Call(Tid(1_162, "%0000048a"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_098, "@memset")),Direct(Tid(1_164, "%0000048c"))))])), +Blk(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x97C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x980"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_180, "%0000049c"), + Attrs([Attr("address","0x984"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_185, "%000004a1"), Attrs([Attr("address","0x988"), +Attr("insn","bl #-0x1e8")]), Var("R30",Imm(64)), Int(2444,64))]), +Jmps([Call(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x988"), +Attr("insn","bl #-0x1e8")]), Int(1,1), +(Direct(Tid(2_094, "@free")),Direct(Tid(1_190, "%000004a6"))))])), +Blk(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x98C")]), Phis([]), +Defs([Def(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x98C"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x990"), +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_207, "%000004b7"), Attrs([Attr("address","0x994"), +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_212, "%000004bc"), Attrs([Attr("address","0x994"), +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_216, "%000004c0"), Attrs([Attr("address","0x994"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_221, "%000004c5"), + Attrs([Attr("address","0x998"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_096, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_122, "%0000084a"), 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_123, "%0000084b"), + 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(941, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_097, "@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_124, "%0000084c"), 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_125, "%0000084d"), + 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_126, "%0000084e"), 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_127, "%0000084f"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_034, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_618, "%00000652"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_098, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_128, "%00000850"), 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_129, "%00000851"), + 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_130, "%00000852"), + 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_131, "%00000853"), 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_160, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_099, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_132, "%00000854"), 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_133, "%00000855"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_060, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_783, "%000006f7"), 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_789, "%000006fd"), 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_794, "%00000702"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_100, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(2_134, "%00000856"), + 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(729, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x844"), +Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(743, "%000002e7"), + Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(749, "%000002ed"), + Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), +Def(Tid(756, "%000002f4"), Attrs([Attr("address","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(775, "%00000307"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(781, "%0000030d"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(779, "%0000030b"))), Goto(Tid(2_101, "%00000835"), Attrs([]), + Int(1,1), Direct(Tid(1_282, "%00000502")))])), Blk(Tid(1_282, "%00000502"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_297, "%00000511"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(779, "%0000030b"))), Goto(Tid(2_102, "%00000836"), Attrs([]), + Int(1,1), Direct(Tid(1_301, "%00000515")))])), Blk(Tid(779, "%0000030b"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(787, "%00000313"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_301, "%00000515"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_305, "%00000519"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_103, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_135, "%00000857"), 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_136, "%00000858"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_003, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), + 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/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..8afe8544a --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,361 @@ +00000838: program +0000081c: sub __cxa_finalize(__cxa_finalize_result) +00000839: __cxa_finalize_result :: out u32 = low:32[R0] + +000004fe: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x18, el]:u64 +0000068f: R16 := R16 + 0x18 +00000694: call R17 with noreturn + +0000081d: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000083a: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000317: +0000031b: #3 := R31 - 0x20 +00000321: mem := mem with [#3, el]:u64 <- R29 +00000327: mem := mem with [#3 + 8, el]:u64 <- R30 +0000032b: R31 := #3 +00000331: R29 := R31 +00000339: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000033e: R19 := 0x20000 +00000345: R0 := pad:64[mem[R19 + 0x78]] +0000034b: when 0:0[R0] goto %00000349 +0000081e: goto %000004c7 + +000004c7: +000004ca: R0 := 0x1F000 +000004d1: R0 := mem[R0 + 0xFC8, el]:u64 +000004d7: when R0 = 0 goto %000004d5 +0000081f: goto %000004ee + +000004ee: +000004f1: R0 := 0x20000 +000004f8: R0 := mem[R0 + 0x58, el]:u64 +000004fd: R30 := 0x8B0 +00000500: call @__cxa_finalize with return %000004d5 + +000004d5: +000004dd: R30 := 0x8B4 +000004df: call @deregister_tm_clones with return %000004e1 + +000004e1: +000004e4: R0 := 1 +000004ec: mem := mem with [R19 + 0x78] <- 7:0[R0] +00000820: goto %00000349 + +00000349: +00000353: R19 := mem[R31 + 0x10, el]:u64 +0000035a: R29 := mem[R31, el]:u64 +0000035f: R30 := mem[R31 + 8, el]:u64 +00000363: R31 := R31 + 0x20 +00000368: call R30 with noreturn + +00000821: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +0000083b: __libc_start_main_main :: in u64 = R0 +0000083c: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000083d: __libc_start_main_arg3 :: in out u64 = R2 +0000083e: __libc_start_main_auxv :: in out u64 = R3 +0000083f: __libc_start_main_result :: out u32 = low:32[R0] + +00000270: +0000066c: R16 := 0x20000 +00000673: R17 := mem[R16 + 0x10, el]:u64 +00000679: R16 := R16 + 0x10 +0000067e: call R17 with noreturn + +00000822: sub _fini(_fini_result) +00000840: _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 + +00000823: sub _init(_init_result) +00000841: _init_result :: out u32 = low:32[R0] + +00000734: +0000073a: #6 := R31 - 0x10 +00000740: mem := mem with [#6, el]:u64 <- R29 +00000746: mem := mem with [#6 + 8, el]:u64 <- R30 +0000074a: R31 := #6 +00000750: R29 := R31 +00000755: R30 := 0x6E8 +00000757: call @call_weak_fn with return %00000759 + +00000759: +0000075e: R29 := mem[R31, el]:u64 +00000763: R30 := mem[R31 + 8, el]:u64 +00000767: R31 := R31 + 0x10 +0000076c: call R30 with noreturn + +00000824: sub _start(_start_result) +00000842: _start_result :: out u32 = low:32[R0] + +00000231: +00000236: R29 := 0 +0000023b: R30 := 0 +00000241: R5 := R0 +00000248: R1 := mem[R31, el]:u64 +0000024e: R2 := R31 + 8 +00000254: R6 := R31 +00000259: R0 := 0x1F000 +00000260: R0 := mem[R0 + 0xFD8, el]:u64 +00000265: R3 := 0 +0000026a: R4 := 0 +0000026f: R30 := 0x7F0 +00000272: call @__libc_start_main with return %00000274 + +00000274: +00000277: R30 := 0x7F4 +0000027a: call @abort with return %00000825 + +00000825: +00000826: call @call_weak_fn with noreturn + +00000827: sub abort() + + +00000278: +000006da: R16 := 0x20000 +000006e1: R17 := mem[R16 + 0x38, el]:u64 +000006e7: R16 := R16 + 0x38 +000006ec: call R17 with noreturn + +00000828: sub call_weak_fn(call_weak_fn_result) +00000843: call_weak_fn_result :: out u32 = low:32[R0] + +0000027c: +0000027f: R0 := 0x1F000 +00000286: R0 := mem[R0 + 0xFD0, el]:u64 +0000028c: when R0 = 0 goto %0000028a +00000829: goto %0000053e + +0000028a: +00000292: call R30 with noreturn + +0000053e: +00000541: goto @__gmon_start__ + +0000053f: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x30, el]:u64 +000006d1: R16 := R16 + 0x30 +000006d6: call R17 with noreturn + +0000082a: sub deregister_tm_clones(deregister_tm_clones_result) +00000844: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000298: +0000029b: R0 := 0x20000 +000002a1: R0 := R0 + 0x78 +000002a6: R1 := 0x20000 +000002ac: R1 := R1 + 0x78 +000002b2: #1 := ~R0 +000002b7: #2 := R1 + ~R0 +000002bd: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002c3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002c7: ZF := #2 + 1 = 0 +000002cb: NF := 63:63[#2 + 1] +000002d1: when ZF goto %000002cf +0000082b: goto %00000520 + +00000520: +00000523: R1 := 0x1F000 +0000052a: R1 := mem[R1 + 0xFC0, el]:u64 +0000052f: when R1 = 0 goto %000002cf +0000082c: goto %00000533 + +000002cf: +000002d7: call R30 with noreturn + +00000533: +00000537: R16 := R1 +0000053c: call R16 with noreturn + +0000082d: sub frame_dummy(frame_dummy_result) +00000845: frame_dummy_result :: out u32 = low:32[R0] + +0000036e: +00000370: call @register_tm_clones with noreturn + +0000082e: sub free(free_ptr) +00000846: free_ptr :: in out u64 = R0 + +000004a2: +00000706: R16 := 0x20000 +0000070d: R17 := mem[R16 + 0x48, el]:u64 +00000713: R16 := R16 + 0x48 +00000718: call R17 with noreturn + +0000082f: sub main(main_argc, main_argv, main_result) +00000847: main_argc :: in u32 = low:32[R0] +00000848: main_argv :: in out u64 = R1 +00000849: main_result :: out u32 = low:32[R0] + +00000372: +00000376: #4 := R31 - 0x30 +0000037c: mem := mem with [#4, el]:u64 <- R29 +00000382: mem := mem with [#4 + 8, el]:u64 <- R30 +00000386: R31 := #4 +0000038c: R29 := R31 +00000394: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000039b: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003a2: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003a7: R0 := 0xB +000003ac: R30 := 0x8F0 +000003af: call @malloc with return %000003b1 + +000003b1: +000003b5: R1 := R0 +000003ba: R0 := 0x20000 +000003c0: R0 := R0 + 0x80 +000003c8: mem := mem with [R0, el]:u64 <- R1 +000003cd: R0 := 0x20000 +000003d3: R0 := R0 + 0x80 +000003da: R19 := mem[R0, el]:u64 +000003df: R0 := 0x20000 +000003e5: R0 := R0 + 0x68 +000003ea: R30 := 0x918 +000003ed: call @strlen with return %000003ef + +000003ef: +000003f3: R2 := R0 +000003f8: R0 := 0x20000 +000003fe: R1 := R0 + 0x68 +00000404: R0 := R19 +00000409: R30 := 0x92C +0000040c: call @memcpy with return %0000040e + +0000040e: +00000411: R0 := 0x20000 +00000417: R0 := R0 + 0x80 +0000041e: R0 := mem[R0, el]:u64 +00000423: R30 := 0x93C +00000426: call @puts with return %00000428 + +00000428: +0000042b: R0 := 0x20000 +00000431: R0 := R0 + 0x80 +00000438: R0 := mem[R0, el]:u64 +0000043e: R0 := R0 + 4 +00000446: mem := mem with [R31 + 0x28, el]:u64 <- R0 +0000044b: R0 := 0x20000 +00000451: R0 := R0 + 0x80 +00000458: R19 := mem[R0, el]:u64 +0000045d: R0 := 0x20000 +00000463: R0 := R0 + 0x80 +0000046a: R0 := mem[R0, el]:u64 +0000046f: R30 := 0x96C +00000471: call @strlen with return %00000473 + +00000473: +00000477: R2 := R0 +0000047c: R1 := 1 +00000482: R0 := R19 +00000487: R30 := 0x97C +0000048a: call @memset with return %0000048c + +0000048c: +0000048f: R0 := 0x20000 +00000495: R0 := R0 + 0x80 +0000049c: R0 := mem[R0, el]:u64 +000004a1: R30 := 0x98C +000004a4: call @free with return %000004a6 + +000004a6: +000004a9: R0 := 0 +000004b0: R19 := mem[R31 + 0x10, el]:u64 +000004b7: R29 := mem[R31, el]:u64 +000004bc: R30 := mem[R31 + 8, el]:u64 +000004c0: R31 := R31 + 0x30 +000004c5: call R30 with noreturn + +00000830: sub malloc(malloc_size, malloc_result) +0000084a: malloc_size :: in u64 = R0 +0000084b: malloc_result :: out u64 = R0 + +000003ad: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x20, el]:u64 +000006a5: R16 := R16 + 0x20 +000006aa: call R17 with noreturn + +00000831: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +0000084c: memcpy_dst :: in out u64 = R0 +0000084d: memcpy_src :: in out u64 = R1 +0000084e: memcpy_n :: in u64 = R2 +0000084f: memcpy_result :: out u64 = R0 + +0000040a: +00000640: R16 := 0x20000 +00000647: R17 := mem[R16, el]:u64 +0000064d: R16 := R16 +00000652: call R17 with noreturn + +00000832: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000850: memset_buf :: in out u64 = R0 +00000851: memset_c :: in u32 = low:32[R1] +00000852: memset_n :: in u64 = R2 +00000853: memset_result :: out u64 = R0 + +00000488: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x28, el]:u64 +000006bb: R16 := R16 + 0x28 +000006c0: call R17 with noreturn + +00000833: sub puts(puts_s, puts_result) +00000854: puts_s :: in u64 = R0 +00000855: puts_result :: out u32 = low:32[R0] + +00000424: +000006f0: R16 := 0x20000 +000006f7: R17 := mem[R16 + 0x40, el]:u64 +000006fd: R16 := R16 + 0x40 +00000702: call R17 with noreturn + +00000834: sub register_tm_clones(register_tm_clones_result) +00000856: register_tm_clones_result :: out u32 = low:32[R0] + +000002d9: +000002dc: R0 := 0x20000 +000002e2: R0 := R0 + 0x78 +000002e7: R1 := 0x20000 +000002ed: R1 := R1 + 0x78 +000002f4: R1 := R1 + ~R0 + 1 +000002fa: R2 := 0.63:63[R1] +00000301: R1 := R2 + (R1 ~>> 3) +00000307: R1 := extend:64[63:1[R1]] +0000030d: when R1 = 0 goto %0000030b +00000835: goto %00000502 + +00000502: +00000505: R2 := 0x1F000 +0000050c: R2 := mem[R2 + 0xFE0, el]:u64 +00000511: when R2 = 0 goto %0000030b +00000836: goto %00000515 + +0000030b: +00000313: call R30 with noreturn + +00000515: +00000519: R16 := R2 +0000051e: call R16 with noreturn + +00000837: sub strlen(strlen_s, strlen_result) +00000857: strlen_s :: in u64 = R0 +00000858: strlen_result :: out u64 = R0 + +000003eb: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16 + 8, el]:u64 +00000663: R16 := R16 + 8 +00000668: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..3ddb9e515 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/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 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 98 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp + 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id + 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag + 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash + 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym + 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr + 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version + 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r + 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn + 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt + 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt + 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text + 14: 000000000000099c 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009b0 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009b4 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009f0 0 SECTION LOCAL DEFAULT 17 .eh_frame + 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array + 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array + 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic + 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got + 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt + 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss + 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d + 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag + 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 0000000000000a04 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 000000000000099c 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009a8 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d + 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d + 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x + 58: 0000000000000a78 0 NOTYPE LOCAL DEFAULT 17 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000a9c 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000a9c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 00000000000009b4 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 000000000000099c 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 85: 00000000000009b0 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf + 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext + 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 94: 00000000000008d4 200 FUNC GLOBAL DEFAULT 13 main + 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile new file mode 100644 index 000000000..6dedd5452 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile @@ -0,0 +1,3 @@ +CFLAGS=-O2 + +include ../../../make/lift.mk 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..02784a818 --- /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_043, "%000007fb"), 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_044, "%000007fc"), + 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_045, "%000007fd"), + 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_017, "%000007e1"), 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_018, "%000007e2"), 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_019, "%000007e3"), 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_046, "%000007fe"), + 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_047, "%000007ff"), 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_048, "%00000800"), 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_049, "%00000801"), 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_050, "%00000802"), 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_051, "%00000803"), + 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_052, "%00000804"), + 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_053, "%00000805"), + 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_024, "%000007e8"))))])), +Blk(Tid(2_024, "%000007e8"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_025, "%000007e9"), 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_054, "%00000806"), + 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_028, "%000007ec"), 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_055, "%00000807"), + 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_030, "%000007ee"), 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_031, "%000007ef"), 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_056, "%00000808"), + 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_057, "%00000809"), + 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_058, "%0000080a"), + 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_059, "%0000080b"), + 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_060, "%0000080c"), + 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_061, "%0000080d"), 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_062, "%0000080e"), + 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_063, "%0000080f"), 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_064, "%00000810"), + 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_065, "%00000811"), 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_066, "%00000812"), 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_067, "%00000813"), 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_068, "%00000814"), + 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_069, "%00000815"), + 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_070, "%00000816"), 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_071, "%00000817"), 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_072, "%00000818"), 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_073, "%00000819"), + 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_040, "%000007f8"), 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_041, "%000007f9"), 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_074, "%0000081a"), 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_075, "%0000081b"), + 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..7838f7004 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,348 @@ +000007fb: program +000007df: sub __cxa_finalize(__cxa_finalize_result) +000007fc: __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) +000007fd: __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 +000007e1: goto %0000048c + +0000048c: +0000048f: R0 := 0x1F000 +00000496: R0 := mem[R0 + 0xFC8, el]:u64 +0000049c: when R0 = 0 goto %0000049a +000007e2: 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] +000007e3: 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) +000007fe: __libc_start_main_main :: in u64 = R0 +000007ff: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000800: __libc_start_main_arg3 :: in out u64 = R2 +00000801: __libc_start_main_auxv :: in out u64 = R3 +00000802: __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) +00000803: _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) +00000804: _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) +00000805: _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 %000007e8 + +000007e8: +000007e9: 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) +00000806: 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 +000007ec: 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) +00000807: 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 +000007ee: goto %000004e5 + +000004e5: +000004e8: R1 := 0x1F000 +000004ef: R1 := mem[R1 + 0xFC0, el]:u64 +000004f4: when R1 = 0 goto %000003e9 +000007ef: goto %000004f8 + +000003e9: +000003f1: call R30 with noreturn + +000004f8: +000004fc: R16 := R1 +00000501: call R16 with noreturn + +000007f0: sub frame_dummy(frame_dummy_result) +00000808: frame_dummy_result :: out u32 = low:32[R0] + +00000488: +0000048a: call @register_tm_clones with noreturn + +000007f1: sub free(free_ptr) +00000809: 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) +0000080a: main_argc :: in u32 = low:32[R0] +0000080b: main_argv :: in out u64 = R1 +0000080c: 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) +0000080d: malloc_size :: in u64 = R0 +0000080e: 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) +0000080f: memcpy_dst :: in out u64 = R0 +00000810: memcpy_src :: in out u64 = R1 +00000811: memcpy_n :: in u64 = R2 +00000812: 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) +00000813: memset_buf :: in out u64 = R0 +00000814: memset_c :: in u32 = low:32[R1] +00000815: memset_n :: in u64 = R2 +00000816: 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) +00000817: puts_s :: in u64 = R0 +00000818: 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) +00000819: 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 +000007f8: goto %000004c7 + +000004c7: +000004ca: R2 := 0x1F000 +000004d1: R2 := mem[R2 + 0xFE0, el]:u64 +000004d6: when R2 = 0 goto %00000425 +000007f9: goto %000004da + +00000425: +0000042d: call R30 with noreturn + +000004da: +000004de: R16 := R2 +000004e3: call R16 with noreturn + +000007fa: sub strlen(strlen_s, strlen_result) +0000081a: strlen_s :: in u64 = R0 +0000081b: 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.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/src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.c b/src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.c new file mode 100644 index 000000000..3def37000 --- /dev/null +++ b/src/test/correct/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/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..c5d06fc4a --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec @@ -0,0 +1,76 @@ +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/malloc_memcpy_strlen_memset_free/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile new file mode 100644 index 000000000..b0247fc10 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile @@ -0,0 +1,2 @@ + +include ../../make/lift-directories.mk diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/Makefile new file mode 100644 index 000000000..3765849b9 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/Makefile @@ -0,0 +1,4 @@ +CC=clang +CFLAGS=-target $(TARGET) + +include ../../../make/lift.mk diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..e8c7e49a2 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,759 @@ +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 2428 20 2428)\n(code-region 1984 444 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 168)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2428 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2428 20)\n(llvm:code-entry .text 1984 444)\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 2452 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 2712)\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 2452 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 2712)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2512 200 2512)\n(llvm:section-entry .eh_frame_hdr 2452 60 2452)\n(llvm:section-entry .rodata 2448 4 2448)\n(llvm:section-entry .fini 2428 20 2428)\n(llvm:section-entry .text 1984 444 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 168 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2428 0 2428 2428)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2712 0)\n(mapped 130504 676 64968)\n(named-region 0 2712 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 444 .text)\n(named-region 2428 20 .fini)\n(named-region 2448 4 .rodata)\n(named-region 2452 60 .eh_frame_hdr)\n(named-region 2512 200 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2428 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 444)\n(section 2428 20)\n(section 2448 4)\n(section 2452 60)\n(section 2512 200)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2712 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 168 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2428 2428)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\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"), +Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x97C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x990, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x994, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x2c\xfe\xff\xff\x50\x00\x00\x00\x7c\xfe\xff\xff\x64\x00\x00\x00\xac\xfe\xff\xff\x78\x00\x00\x00\xec\xfe\xff\xff\x8c\x00\x00\x00\x3c\xff\xff\xff\xb0\x00\x00\x00\x40\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0x9D0, "\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\xd4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x10\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x2c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x58\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\x84\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\x24\x00\x00\x00\x18\x00\x00\x00\x60\xfe\xff\xff\xa8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x90\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x75\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x81\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x8e\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xA97), Attr("segment","02 0 2712")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), +Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), +Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), +Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), +Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), +Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), +Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), +Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), +Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x97B), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x97B), Attr("symbol-info","main 0x8D4 168")), +Annotation(Region(0x97C,0x98F), Attr("section","\".fini\"")), +Annotation(Region(0x990,0x993), Attr("section","\".rodata\"")), +Annotation(Region(0x994,0x9CF), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9D0,0xA97), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x97B), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x97B), Attr("code-region","()")), +Annotation(Region(0x97C,0x98F), Attr("code-region","()"))]), +Program(Tid(2_030, "%000007ee"), Attrs([]), + Subs([Sub(Tid(2_002, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_031, "%000007ef"), + 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_212, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), 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_618, "%00000652"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_003, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_032, "%000007f0"), + 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(759, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(763, "%000002fb"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(775, "%00000307"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(785, "%00000311"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(793, "%00000319"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(798, "%0000031e"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(805, "%00000325"), Attrs([Attr("address","0x890"), +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(811, "%0000032b"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(809, "%00000329"))), +Goto(Tid(2_004, "%000007d4"), Attrs([]), Int(1,1), +Direct(Tid(1_157, "%00000485")))])), Blk(Tid(1_157, "%00000485"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_173, "%00000495"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_171, "%00000493"))), Goto(Tid(2_005, "%000007d5"), Attrs([]), + Int(1,1), Direct(Tid(1_196, "%000004ac")))])), Blk(Tid(1_196, "%000004ac"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_214, "%000004be"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_002, "@__cxa_finalize")),Direct(Tid(1_171, "%00000493"))))])), +Blk(Tid(1_171, "%00000493"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_016, "@deregister_tm_clones")),Direct(Tid(1_183, "%0000049f"))))])), +Blk(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x8B8"), +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_006, "%000007d6"), Attrs([]), Int(1,1), +Direct(Tid(809, "%00000329")))])), Blk(Tid(809, "%00000329"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(819, "%00000333"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(826, "%0000033a"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(831, "%0000033f"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(835, "%00000343"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(840, "%00000348"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_007, "@__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_033, "%000007f1"), + 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_034, "%000007f2"), 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_035, "%000007f3"), 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_036, "%000007f4"), 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_037, "%000007f5"), 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(592, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_578, "%0000062a"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_585, "%00000631"), 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_591, "%00000637"), 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_596, "%0000063c"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_008, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x97C")]), + "_fini", Args([Arg(Tid(2_038, "%000007f6"), + 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","0x97C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x980"), +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","0x980"), +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","0x980"), +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","0x980"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x984"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x988"), +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","0x988"), +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","0x988"), +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","0x98C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_009, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_039, "%000007f7"), + 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_778, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_784, "%000006f8"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_790, "%000006fe"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_796, "%00000704"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_800, "%00000708"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#7",Imm(64))), Def(Tid(1_806, "%0000070e"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_811, "%00000713"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_813, "%00000715"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_014, "@call_weak_fn")),Direct(Tid(1_815, "%00000717"))))])), +Blk(Tid(1_815, "%00000717"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_820, "%0000071c"), 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_825, "%00000721"), 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_829, "%00000725"), 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_834, "%0000072a"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_010, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_040, "%000007f8"), + 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(529, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(534, "%00000216"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(539, "%0000021b"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(545, "%00000221"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(552, "%00000228"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(558, "%0000022e"), Attrs([Attr("address","0x7D4"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(564, "%00000234"), + Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(569, "%00000239"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(576, "%00000240"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(581, "%00000245"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(586, "%0000024a"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(591, "%0000024f"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(594, "%00000252"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_007, "@__libc_start_main")),Direct(Tid(596, "%00000254"))))])), +Blk(Tid(596, "%00000254"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(599, "%00000257"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_013, "@abort")),Direct(Tid(2_011, "%000007db"))))])), +Blk(Tid(2_011, "%000007db"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_012, "%000007dc"), Attrs([]), Int(1,1), +(Direct(Tid(2_014, "@call_weak_fn")),))]))])), Sub(Tid(2_013, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(600, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_014, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(2_041, "%000007f9"), + 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(604, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(607, "%0000025f"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(614, "%00000266"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(620, "%0000026c"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(618, "%0000026a"))), Goto(Tid(2_015, "%000007df"), Attrs([]), + Int(1,1), Direct(Tid(1_276, "%000004fc")))])), Blk(Tid(618, "%0000026a"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_277, "@__gmon_start__")))])), Blk(Tid(1_277, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_016, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(2_042, "%000007fa"), + 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(632, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(635, "%0000027b"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(641, "%00000281"), + Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(646, "%00000286"), Attrs([Attr("address","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(652, "%0000028c"), Attrs([Attr("address","0x81C"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(658, "%00000292"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(663, "%00000297"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(669, "%0000029d"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(675, "%000002a3"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(679, "%000002a7"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(683, "%000002ab"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(689, "%000002b1"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(687, "%000002af"))), Goto(Tid(2_017, "%000007e1"), Attrs([]), + Int(1,1), Direct(Tid(1_246, "%000004de")))])), Blk(Tid(1_246, "%000004de"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(687, "%000002af"))), Goto(Tid(2_018, "%000007e2"), Attrs([]), + Int(1,1), Direct(Tid(1_265, "%000004f1")))])), Blk(Tid(687, "%000002af"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(695, "%000002b7"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_019, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_043, "%000007fb"), + 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(846, "@frame_dummy"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_026, "@register_tm_clones")),))]))])), Sub(Tid(2_020, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_044, "%000007fc"), + 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_121, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_021, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_045, "%000007fd"), + 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_046, "%000007fe"), + 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_047, "%000007ff"), + 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(850, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(854, "%00000356"), + Attrs([Attr("address","0x8D4"), Attr("insn","sub sp, sp, #0x40")]), + Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), +Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x8D8"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(866, "%00000362"), + Attrs([Attr("address","0x8D8"), 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(872, "%00000368"), Attrs([Attr("address","0x8D8"), +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(878, "%0000036e"), Attrs([Attr("address","0x8DC"), +Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(885, "%00000375"), + Attrs([Attr("address","0x8E0"), Attr("insn","stur xzr, [x29, #-0x8]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x8E4"), +Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(897, "%00000381"), Attrs([Attr("address","0x8E8"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(905, "%00000389"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_022, "@malloc")),Direct(Tid(907, "%0000038b"))))])), +Blk(Tid(907, "%0000038b"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8F0"), +Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), +Def(Tid(918, "%00000396"), Attrs([Attr("address","0x8F4"), +Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x8F8"), +Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(933, "%000003a5"), Attrs([Attr("address","0x8FC"), +Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x900"), +Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x904"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(952, "%000003b8"), Attrs([Attr("address","0x908"), +Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(960, "%000003c0"), + Attrs([Attr("address","0x90C"), Attr("insn","str x0, [sp]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x910"), +Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2324,64))]), +Jmps([Call(Tid(968, "%000003c8"), Attrs([Attr("address","0x910"), +Attr("insn","bl #-0x1f0")]), Int(1,1), +(Direct(Tid(2_029, "@strlen")),Direct(Tid(970, "%000003ca"))))])), +Blk(Tid(970, "%000003ca"), Attrs([Attr("address","0x914")]), Phis([]), +Defs([Def(Tid(975, "%000003cf"), Attrs([Attr("address","0x914"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x918"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(988, "%000003dc"), Attrs([Attr("address","0x91C"), +Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x920"), +Attr("insn","bl #-0x210")]), Var("R30",Imm(64)), Int(2340,64))]), +Jmps([Call(Tid(996, "%000003e4"), Attrs([Attr("address","0x920"), +Attr("insn","bl #-0x210")]), Int(1,1), +(Direct(Tid(2_023, "@memcpy")),Direct(Tid(998, "%000003e6"))))])), +Blk(Tid(998, "%000003e6"), Attrs([Attr("address","0x924")]), Phis([]), +Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x924"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x928"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_025, "@puts")),Direct(Tid(1_020, "%000003fc"))))])), +Blk(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x930"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x934"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x938"), +Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_046, "%00000416"), + Attrs([Attr("address","0x93C"), Attr("insn","stur x9, [x29, #-0x8]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x940"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x944"), +Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x948"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x94C"), +Attr("insn","bl #-0x22c")]), Var("R30",Imm(64)), Int(2384,64))]), +Jmps([Call(Tid(1_075, "%00000433"), Attrs([Attr("address","0x94C"), +Attr("insn","bl #-0x22c")]), Int(1,1), +(Direct(Tid(2_029, "@strlen")),Direct(Tid(1_077, "%00000435"))))])), +Blk(Tid(1_077, "%00000435"), Attrs([Attr("address","0x950")]), Phis([]), +Defs([Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x950"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x954"), +Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x958"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x1fc")]), Var("R30",Imm(64)), Int(2400,64))]), +Jmps([Call(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x1fc")]), Int(1,1), +(Direct(Tid(2_024, "@memset")),Direct(Tid(1_103, "%0000044f"))))])), +Blk(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x960")]), Phis([]), +Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x960"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x964"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x1c8")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x1c8")]), Int(1,1), +(Direct(Tid(2_020, "@free")),Direct(Tid(1_125, "%00000465"))))])), +Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x96C"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x970"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_139, "%00000473"), + Attrs([Attr("address","0x970"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), + Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), +Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x970"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x974"), +Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_155, "%00000483"), + Attrs([Attr("address","0x978"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_022, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_048, "%00000800"), 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_049, "%00000801"), + 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(903, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_023, "@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_050, "%00000802"), 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_051, "%00000803"), + 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_052, "%00000804"), 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_053, "%00000805"), 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(994, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_534, "%000005fe"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_541, "%00000605"), 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_547, "%0000060b"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_552, "%00000610"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_024, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_054, "%00000806"), 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_055, "%00000807"), + 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_056, "%00000808"), + 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_057, "%00000809"), 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_099, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_025, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_058, "%0000080a"), 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_059, "%0000080b"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_016, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_026, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(2_060, "%0000080c"), + 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(697, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(706, "%000002c2"), Attrs([Attr("address","0x844"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(711, "%000002c7"), + Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(717, "%000002cd"), + Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(724, "%000002d4"), Attrs([Attr("address","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(730, "%000002da"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(737, "%000002e1"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(749, "%000002ed"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(747, "%000002eb"))), Goto(Tid(2_027, "%000007eb"), Attrs([]), + Int(1,1), Direct(Tid(1_216, "%000004c0")))])), Blk(Tid(1_216, "%000004c0"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(747, "%000002eb"))), Goto(Tid(2_028, "%000007ec"), Attrs([]), + Int(1,1), Direct(Tid(1_235, "%000004d3")))])), Blk(Tid(747, "%000002eb"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(755, "%000002f3"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_029, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_061, "%0000080d"), 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_062, "%0000080e"), + 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(966, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_563, "%0000061b"), 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_569, "%00000621"), 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_574, "%00000626"), + 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/clang/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..b8bf42653 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,352 @@ +000007ee: program +000007d2: sub __cxa_finalize(__cxa_finalize_result) +000007ef: __cxa_finalize_result :: out u32 = low:32[R0] + +000004bc: +00000640: R16 := 0x20000 +00000647: R17 := mem[R16 + 0x18, el]:u64 +0000064d: R16 := R16 + 0x18 +00000652: call R17 with noreturn + +000007d3: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000007f0: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002f7: +000002fb: #3 := R31 - 0x20 +00000301: mem := mem with [#3, el]:u64 <- R29 +00000307: mem := mem with [#3 + 8, el]:u64 <- R30 +0000030b: R31 := #3 +00000311: R29 := R31 +00000319: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000031e: R19 := 0x20000 +00000325: R0 := pad:64[mem[R19 + 0x70]] +0000032b: when 0:0[R0] goto %00000329 +000007d4: goto %00000485 + +00000485: +00000488: R0 := 0x1F000 +0000048f: R0 := mem[R0 + 0xFC8, el]:u64 +00000495: when R0 = 0 goto %00000493 +000007d5: goto %000004ac + +000004ac: +000004af: R0 := 0x20000 +000004b6: R0 := mem[R0 + 0x58, el]:u64 +000004bb: R30 := 0x8B0 +000004be: call @__cxa_finalize with return %00000493 + +00000493: +0000049b: R30 := 0x8B4 +0000049d: call @deregister_tm_clones with return %0000049f + +0000049f: +000004a2: R0 := 1 +000004aa: mem := mem with [R19 + 0x70] <- 7:0[R0] +000007d6: goto %00000329 + +00000329: +00000333: R19 := mem[R31 + 0x10, el]:u64 +0000033a: R29 := mem[R31, el]:u64 +0000033f: R30 := mem[R31 + 8, el]:u64 +00000343: R31 := R31 + 0x20 +00000348: call R30 with noreturn + +000007d7: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000007f1: __libc_start_main_main :: in u64 = R0 +000007f2: __libc_start_main_arg2 :: in u32 = low:32[R1] +000007f3: __libc_start_main_arg3 :: in out u64 = R2 +000007f4: __libc_start_main_auxv :: in out u64 = R3 +000007f5: __libc_start_main_result :: out u32 = low:32[R0] + +00000250: +0000062a: R16 := 0x20000 +00000631: R17 := mem[R16 + 0x10, el]:u64 +00000637: R16 := R16 + 0x10 +0000063c: call R17 with noreturn + +000007d8: sub _fini(_fini_result) +000007f6: _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 + +000007d9: sub _init(_init_result) +000007f7: _init_result :: out u32 = low:32[R0] + +000006f2: +000006f8: #7 := R31 - 0x10 +000006fe: mem := mem with [#7, el]:u64 <- R29 +00000704: mem := mem with [#7 + 8, el]:u64 <- R30 +00000708: R31 := #7 +0000070e: R29 := R31 +00000713: R30 := 0x6E8 +00000715: call @call_weak_fn with return %00000717 + +00000717: +0000071c: R29 := mem[R31, el]:u64 +00000721: R30 := mem[R31 + 8, el]:u64 +00000725: R31 := R31 + 0x10 +0000072a: call R30 with noreturn + +000007da: sub _start(_start_result) +000007f8: _start_result :: out u32 = low:32[R0] + +00000211: +00000216: R29 := 0 +0000021b: R30 := 0 +00000221: R5 := R0 +00000228: R1 := mem[R31, el]:u64 +0000022e: R2 := R31 + 8 +00000234: R6 := R31 +00000239: R0 := 0x1F000 +00000240: R0 := mem[R0 + 0xFD8, el]:u64 +00000245: R3 := 0 +0000024a: R4 := 0 +0000024f: R30 := 0x7F0 +00000252: call @__libc_start_main with return %00000254 + +00000254: +00000257: R30 := 0x7F4 +0000025a: call @abort with return %000007db + +000007db: +000007dc: call @call_weak_fn with noreturn + +000007dd: sub abort() + + +00000258: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x38, el]:u64 +000006a5: R16 := R16 + 0x38 +000006aa: call R17 with noreturn + +000007de: sub call_weak_fn(call_weak_fn_result) +000007f9: call_weak_fn_result :: out u32 = low:32[R0] + +0000025c: +0000025f: R0 := 0x1F000 +00000266: R0 := mem[R0 + 0xFD0, el]:u64 +0000026c: when R0 = 0 goto %0000026a +000007df: goto %000004fc + +0000026a: +00000272: call R30 with noreturn + +000004fc: +000004ff: goto @__gmon_start__ + +000004fd: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x30, el]:u64 +0000068f: R16 := R16 + 0x30 +00000694: call R17 with noreturn + +000007e0: sub deregister_tm_clones(deregister_tm_clones_result) +000007fa: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000278: +0000027b: R0 := 0x20000 +00000281: R0 := R0 + 0x70 +00000286: R1 := 0x20000 +0000028c: R1 := R1 + 0x70 +00000292: #1 := ~R0 +00000297: #2 := R1 + ~R0 +0000029d: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002a3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002a7: ZF := #2 + 1 = 0 +000002ab: NF := 63:63[#2 + 1] +000002b1: when ZF goto %000002af +000007e1: goto %000004de + +000004de: +000004e1: R1 := 0x1F000 +000004e8: R1 := mem[R1 + 0xFC0, el]:u64 +000004ed: when R1 = 0 goto %000002af +000007e2: goto %000004f1 + +000002af: +000002b7: call R30 with noreturn + +000004f1: +000004f5: R16 := R1 +000004fa: call R16 with noreturn + +000007e3: sub frame_dummy(frame_dummy_result) +000007fb: frame_dummy_result :: out u32 = low:32[R0] + +0000034e: +00000350: call @register_tm_clones with noreturn + +000007e4: sub free(free_ptr) +000007fc: free_ptr :: in out u64 = R0 + +00000461: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x48, el]:u64 +000006d1: R16 := R16 + 0x48 +000006d6: call R17 with noreturn + +000007e5: sub main(main_argc, main_argv, main_result) +000007fd: main_argc :: in u32 = low:32[R0] +000007fe: main_argv :: in out u64 = R1 +000007ff: main_result :: out u32 = low:32[R0] + +00000352: +00000356: R31 := R31 - 0x40 +0000035c: #4 := R31 + 0x30 +00000362: mem := mem with [#4, el]:u64 <- R29 +00000368: mem := mem with [#4 + 8, el]:u64 <- R30 +0000036e: R29 := R31 + 0x30 +00000375: mem := mem with [R29 - 8, el]:u64 <- 0 +0000037c: mem := mem with [R29 - 0x10, el]:u64 <- 0 +00000381: R0 := 0xB +00000386: R30 := 0x8F0 +00000389: call @malloc with return %0000038b + +0000038b: +0000038e: R8 := 0x20000 +00000396: mem := mem with [R31 + 0x18, el]:u64 <- R8 +0000039e: mem := mem with [R8 + 0x78, el]:u64 <- R0 +000003a5: R8 := mem[R8 + 0x78, el]:u64 +000003ad: mem := mem with [R31 + 8, el]:u64 <- R8 +000003b2: R0 := 0x20000 +000003b8: R0 := R0 + 0x61 +000003c0: mem := mem with [R31, el]:u64 <- R0 +000003c5: R30 := 0x914 +000003c8: call @strlen with return %000003ca + +000003ca: +000003cf: R1 := mem[R31, el]:u64 +000003d5: R2 := R0 +000003dc: R0 := mem[R31 + 8, el]:u64 +000003e1: R30 := 0x924 +000003e4: call @memcpy with return %000003e6 + +000003e6: +000003eb: R8 := mem[R31 + 0x18, el]:u64 +000003f2: R0 := mem[R8 + 0x78, el]:u64 +000003f7: R30 := 0x930 +000003fa: call @puts with return %000003fc + +000003fc: +00000401: R8 := mem[R31 + 0x18, el]:u64 +00000408: R9 := mem[R8 + 0x78, el]:u64 +0000040e: R9 := R9 + 4 +00000416: mem := mem with [R29 - 8, el]:u64 <- R9 +0000041d: R9 := mem[R8 + 0x78, el]:u64 +00000425: mem := mem with [R31 + 0x10, el]:u64 <- R9 +0000042c: R0 := mem[R8 + 0x78, el]:u64 +00000431: R30 := 0x950 +00000433: call @strlen with return %00000435 + +00000435: +00000439: R2 := R0 +00000440: R0 := mem[R31 + 0x10, el]:u64 +00000445: R1 := 1 +0000044a: R30 := 0x960 +0000044d: call @memset with return %0000044f + +0000044f: +00000454: R8 := mem[R31 + 0x18, el]:u64 +0000045b: R0 := mem[R8 + 0x78, el]:u64 +00000460: R30 := 0x96C +00000463: call @free with return %00000465 + +00000465: +00000468: R0 := 0 +0000046e: #5 := R31 + 0x30 +00000473: R29 := mem[#5, el]:u64 +00000478: R30 := mem[#5 + 8, el]:u64 +0000047e: R31 := R31 + 0x40 +00000483: call R30 with noreturn + +000007e6: sub malloc(malloc_size, malloc_result) +00000800: malloc_size :: in u64 = R0 +00000801: malloc_result :: out u64 = R0 + +00000387: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16 + 0x20, el]:u64 +00000663: R16 := R16 + 0x20 +00000668: call R17 with noreturn + +000007e7: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000802: memcpy_dst :: in out u64 = R0 +00000803: memcpy_src :: in out u64 = R1 +00000804: memcpy_n :: in u64 = R2 +00000805: memcpy_result :: out u64 = R0 + +000003e2: +000005fe: R16 := 0x20000 +00000605: R17 := mem[R16, el]:u64 +0000060b: R16 := R16 +00000610: call R17 with noreturn + +000007e8: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000806: memset_buf :: in out u64 = R0 +00000807: memset_c :: in u32 = low:32[R1] +00000808: memset_n :: in u64 = R2 +00000809: memset_result :: out u64 = R0 + +0000044b: +0000066c: R16 := 0x20000 +00000673: R17 := mem[R16 + 0x28, el]:u64 +00000679: R16 := R16 + 0x28 +0000067e: call R17 with noreturn + +000007e9: sub puts(puts_s, puts_result) +0000080a: puts_s :: in u64 = R0 +0000080b: puts_result :: out u32 = low:32[R0] + +000003f8: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x40, el]:u64 +000006bb: R16 := R16 + 0x40 +000006c0: call R17 with noreturn + +000007ea: sub register_tm_clones(register_tm_clones_result) +0000080c: register_tm_clones_result :: out u32 = low:32[R0] + +000002b9: +000002bc: R0 := 0x20000 +000002c2: R0 := R0 + 0x70 +000002c7: R1 := 0x20000 +000002cd: R1 := R1 + 0x70 +000002d4: R1 := R1 + ~R0 + 1 +000002da: R2 := 0.63:63[R1] +000002e1: R1 := R2 + (R1 ~>> 3) +000002e7: R1 := extend:64[63:1[R1]] +000002ed: when R1 = 0 goto %000002eb +000007eb: goto %000004c0 + +000004c0: +000004c3: R2 := 0x1F000 +000004ca: R2 := mem[R2 + 0xFE0, el]:u64 +000004cf: when R2 = 0 goto %000002eb +000007ec: goto %000004d3 + +000002eb: +000002f3: call R30 with noreturn + +000004d3: +000004d7: R16 := R2 +000004dc: call R16 with noreturn + +000007ed: sub strlen(strlen_s, strlen_result) +0000080d: strlen_s :: in u64 = R0 +0000080e: strlen_result :: out u64 = R0 + +000003c6: +00000614: R16 := 0x20000 +0000061b: R17 := mem[R16 + 8, el]:u64 +00000621: R16 := R16 + 8 +00000626: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..b8d9040b4 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,144 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 99 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: 000000000000097c 0 SECTION LOCAL DEFAULT 14 .fini + 15: 0000000000000990 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 0000000000000994 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009d0 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 00000000000009e4 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 0000000000000990 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 000000000000097c 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 0000000000000988 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 00000000000009f8 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 + 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 + 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 + 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 + 59: 0000000000000a58 0 NOTYPE LOCAL DEFAULT 17 $d.4 + 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 61: 0000000000000a94 0 NOTYPE LOCAL DEFAULT 17 $d + 62: 0000000000000a94 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 65: 0000000000000994 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata + 77: 000000000000097c 0 FUNC GLOBAL HIDDEN 14 _fini + 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 86: 0000000000000990 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end + 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf + 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext + 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 95: 00000000000008d4 168 FUNC GLOBAL DEFAULT 13 main + 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/Makefile new file mode 100644 index 000000000..46de10ac0 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/Makefile @@ -0,0 +1,5 @@ +CC=clang +CFLAGS=-target $(TARGET) -O2 + +include ../../../make/lift.mk + 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..82df9a672 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,740 @@ +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 2392 20 2392)\n(code-region 1984 408 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 132)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2392 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2392 20)\n(llvm:code-entry .text 1984 408)\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 2416 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 2688)\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 2416 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 2688)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2480 208 2480)\n(llvm:section-entry .eh_frame_hdr 2416 60 2416)\n(llvm:section-entry .rodata 2412 4 2412)\n(llvm:section-entry .fini 2392 20 2392)\n(llvm:section-entry .text 1984 408 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 132 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2392 0 2392 2392)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2688 0)\n(mapped 130504 676 64968)\n(named-region 0 2688 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 408 .text)\n(named-region 2392 20 .fini)\n(named-region 2412 4 .rodata)\n(named-region 2416 60 .eh_frame_hdr)\n(named-region 2480 208 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2392 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 408)\n(section 2392 20)\n(section 2412 4)\n(section 2416 60)\n(section 2480 208)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2688 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 132 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2392 2392)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\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\x70\x09\x00\x00\x00\x00\x00\x00\x70\x09\x00\x00\x00\x00\x00\x00\x70\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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e\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"), +Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\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\x70\x09\x00\x00\x00\x00\x00\x00\x70\x09\x00\x00\x00\x00\x00\x00\x70\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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7e\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x8a\xff\xff\x97\xa0\x3e\x40\xf9\x98\xff\xff\x97\xe0\x03\x1f\x2a"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x958, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x96C, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x970, "\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", 0x9B0, "\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", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x58\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7e\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x8a\xff\xff\x97\xa0\x3e\x40\xf9\x98\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,0xA7F), Attr("segment","02 0 2688")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), +Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), +Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), +Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), +Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), +Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), +Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), +Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), +Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x957), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x957), Attr("symbol-info","main 0x8D4 132")), +Annotation(Region(0x958,0x96B), Attr("section","\".fini\"")), +Annotation(Region(0x96C,0x96F), Attr("section","\".rodata\"")), +Annotation(Region(0x970,0x9AB), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9B0,0xA7F), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x957), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x957), Attr("code-region","()")), +Annotation(Region(0x958,0x96B), Attr("code-region","()"))]), +Program(Tid(1_938, "%00000792"), Attrs([]), + Subs([Sub(Tid(1_910, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(1_939, "%00000793"), + 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","0x740")]), Phis([]), +Defs([Def(Tid(1_517, "%000005ed"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_524, "%000005f4"), 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_530, "%000005fa"), 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_535, "%000005ff"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(1_911, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(1_940, "%00000794"), + 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","0x880")]), Phis([]), Defs([Def(Tid(727, "%000002d7"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(733, "%000002dd"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(739, "%000002e3"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(749, "%000002ed"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(757, "%000002f5"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x890"), +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","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(773, "%00000305"))), +Goto(Tid(1_912, "%00000778"), Attrs([]), Int(1,1), +Direct(Tid(1_074, "%00000432")))])), Blk(Tid(1_074, "%00000432"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_090, "%00000442"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_088, "%00000440"))), Goto(Tid(1_913, "%00000779"), Attrs([]), + Int(1,1), Direct(Tid(1_113, "%00000459")))])), Blk(Tid(1_113, "%00000459"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_131, "%0000046b"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(1_910, "@__cxa_finalize")),Direct(Tid(1_088, "%00000440"))))])), +Blk(Tid(1_088, "%00000440"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(1_924, "@deregister_tm_clones")),Direct(Tid(1_100, "%0000044c"))))])), +Blk(Tid(1_100, "%0000044c"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x8B8"), +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(1_914, "%0000077a"), Attrs([]), Int(1,1), +Direct(Tid(773, "%00000305")))])), Blk(Tid(773, "%00000305"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(783, "%0000030f"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(790, "%00000316"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(795, "%0000031b"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(799, "%0000031f"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(804, "%00000324"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_915, "@__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(1_941, "%00000795"), + 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_942, "%00000796"), 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_943, "%00000797"), 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_944, "%00000798"), 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_945, "%00000799"), 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","0x730")]), Phis([]), +Defs([Def(Tid(1_495, "%000005d7"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_502, "%000005de"), 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_508, "%000005e4"), 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_513, "%000005e9"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_916, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x958")]), + "_fini", Args([Arg(Tid(1_946, "%0000079a"), + 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","0x958")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x95C"), +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","0x95C"), +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","0x95C"), +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","0x95C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x960"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x964"), +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","0x964"), +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","0x964"), +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","0x968"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_917, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(1_947, "%0000079b"), + 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_695, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_701, "%000006a5"), 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_707, "%000006ab"), 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_713, "%000006b1"), 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_717, "%000006b5"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#8",Imm(64))), Def(Tid(1_723, "%000006bb"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_728, "%000006c0"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_730, "%000006c2"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(1_922, "@call_weak_fn")),Direct(Tid(1_732, "%000006c4"))))])), +Blk(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_737, "%000006c9"), 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_742, "%000006ce"), 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_746, "%000006d2"), 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_751, "%000006d7"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_918, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(1_948, "%0000079c"), + 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","0x7C0")]), Phis([]), Defs([Def(Tid(498, "%000001f2"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(503, "%000001f7"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(509, "%000001fd"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(516, "%00000204"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(522, "%0000020a"), Attrs([Attr("address","0x7D4"), +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","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(533, "%00000215"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(540, "%0000021c"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(545, "%00000221"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(550, "%00000226"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(555, "%0000022b"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(558, "%0000022e"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(1_915, "@__libc_start_main")),Direct(Tid(560, "%00000230"))))])), +Blk(Tid(560, "%00000230"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(563, "%00000233"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(566, "%00000236"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(1_921, "@abort")),Direct(Tid(1_919, "%0000077f"))))])), +Blk(Tid(1_919, "%0000077f"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(1_920, "%00000780"), Attrs([]), Int(1,1), +(Direct(Tid(1_922, "@call_weak_fn")),))]))])), Sub(Tid(1_921, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(564, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_605, "%00000645"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_612, "%0000064c"), 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_618, "%00000652"), 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_623, "%00000657"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_922, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(1_949, "%0000079d"), + 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","0x7F4")]), Phis([]), Defs([Def(Tid(571, "%0000023b"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(578, "%00000242"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(584, "%00000248"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(582, "%00000246"))), Goto(Tid(1_923, "%00000783"), Attrs([]), + Int(1,1), Direct(Tid(1_193, "%000004a9")))])), Blk(Tid(582, "%00000246"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(590, "%0000024e"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_194, "@__gmon_start__")))])), Blk(Tid(1_194, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_583, "%0000062f"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_590, "%00000636"), 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_596, "%0000063c"), 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_601, "%00000641"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(1_924, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(1_950, "%0000079e"), + 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","0x810")]), Phis([]), Defs([Def(Tid(599, "%00000257"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(605, "%0000025d"), + Attrs([Attr("address","0x814"), 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","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(616, "%00000268"), Attrs([Attr("address","0x81C"), +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","0x820"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(627, "%00000273"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(633, "%00000279"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(643, "%00000283"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(647, "%00000287"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(653, "%0000028d"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(651, "%0000028b"))), Goto(Tid(1_925, "%00000785"), Attrs([]), + Int(1,1), Direct(Tid(1_163, "%0000048b")))])), Blk(Tid(1_163, "%0000048b"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_178, "%0000049a"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(651, "%0000028b"))), Goto(Tid(1_926, "%00000786"), Attrs([]), + Int(1,1), Direct(Tid(1_182, "%0000049e")))])), Blk(Tid(651, "%0000028b"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(659, "%00000293"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(1_927, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(1_951, "%0000079f"), + 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","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(812, "%0000032c"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(1_934, "@register_tm_clones")),))]))])), Sub(Tid(1_928, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(1_952, "%000007a0"), + 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","0x7A0")]), + Phis([]), Defs([Def(Tid(1_649, "%00000671"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_656, "%00000678"), 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_662, "%0000067e"), 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_667, "%00000683"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_929, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(1_953, "%000007a1"), + 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_954, "%000007a2"), + 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_955, "%000007a3"), + 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","0x8D4")]), Phis([]), Defs([Def(Tid(818, "%00000332"), + Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(824, "%00000338"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(830, "%0000033e"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(834, "%00000342"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#4",Imm(64))), Def(Tid(842, "%0000034a"), + Attrs([Attr("address","0x8D8"), 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","0x8DC"), +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","0x8DC"), 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","0x8DC"), +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","0x8E0"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(871, "%00000367"), Attrs([Attr("address","0x8E4"), +Attr("insn","mov w0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x8E8"), +Attr("insn","bl #-0x198")]), Var("R30",Imm(64)), Int(2284,64))]), +Jmps([Call(Tid(879, "%0000036f"), Attrs([Attr("address","0x8E8"), +Attr("insn","bl #-0x198")]), Int(1,1), +(Direct(Tid(1_930, "@malloc")),Direct(Tid(881, "%00000371"))))])), +Blk(Tid(881, "%00000371"), Attrs([Attr("address","0x8EC")]), Phis([]), +Defs([Def(Tid(884, "%00000374"), Attrs([Attr("address","0x8EC"), +Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), +Def(Tid(889, "%00000379"), Attrs([Attr("address","0x8F0"), +Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), +Def(Tid(895, "%0000037f"), Attrs([Attr("address","0x8F4"), +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","0x8F8"), Attr("insn","mov x19, x0")]), + Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(909, "%0000038d"), + Attrs([Attr("address","0x8FC"), 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","0x900"), +Attr("insn","mov x0, x20")]), Var("R0",Imm(64)), Var("R20",Imm(64))), +Def(Tid(920, "%00000398"), Attrs([Attr("address","0x904"), +Attr("insn","bl #-0x1e4")]), Var("R30",Imm(64)), Int(2312,64))]), +Jmps([Call(Tid(923, "%0000039b"), Attrs([Attr("address","0x904"), +Attr("insn","bl #-0x1e4")]), Int(1,1), +(Direct(Tid(1_937, "@strlen")),Direct(Tid(925, "%0000039d"))))])), +Blk(Tid(925, "%0000039d"), Attrs([Attr("address","0x908")]), Phis([]), +Defs([Def(Tid(929, "%000003a1"), Attrs([Attr("address","0x908"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x90C"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x910"), +Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x914"), +Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2328,64))]), +Jmps([Call(Tid(949, "%000003b5"), Attrs([Attr("address","0x914"), +Attr("insn","bl #-0x204")]), Int(1,1), +(Direct(Tid(1_931, "@memcpy")),Direct(Tid(951, "%000003b7"))))])), +Blk(Tid(951, "%000003b7"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(955, "%000003bb"), Attrs([Attr("address","0x918"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x91C"), +Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2336,64))]), +Jmps([Call(Tid(963, "%000003c3"), Attrs([Attr("address","0x91C"), +Attr("insn","bl #-0x18c")]), Int(1,1), +(Direct(Tid(1_933, "@puts")),Direct(Tid(965, "%000003c5"))))])), +Blk(Tid(965, "%000003c5"), Attrs([Attr("address","0x920")]), Phis([]), +Defs([Def(Tid(970, "%000003ca"), Attrs([Attr("address","0x920"), +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","0x924"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x208")]), Var("R30",Imm(64)), Int(2348,64))]), +Jmps([Call(Tid(983, "%000003d7"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x208")]), Int(1,1), +(Direct(Tid(1_937, "@strlen")),Direct(Tid(985, "%000003d9"))))])), +Blk(Tid(985, "%000003d9"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x92C"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x930"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x934"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1d8")]), Var("R30",Imm(64)), Int(2364,64))]), +Jmps([Call(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1d8")]), Int(1,1), +(Direct(Tid(1_932, "@memset")),Direct(Tid(1_010, "%000003f2"))))])), +Blk(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x93C"), +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","0x940"), +Attr("insn","bl #-0x1a0")]), Var("R30",Imm(64)), Int(2372,64))]), +Jmps([Call(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x940"), +Attr("insn","bl #-0x1a0")]), Int(1,1), +(Direct(Tid(1_928, "@free")),Direct(Tid(1_025, "%00000401"))))])), +Blk(Tid(1_025, "%00000401"), Attrs([Attr("address","0x944")]), Phis([]), +Defs([Def(Tid(1_028, "%00000404"), Attrs([Attr("address","0x944"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x948"), +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","0x948"), 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","0x948"), +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","0x94C"), +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","0x950"), +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","0x950"), +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","0x950"), +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","0x954"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_930, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(1_956, "%000007a4"), 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(1_957, "%000007a5"), + 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","0x750")]), Phis([]), +Defs([Def(Tid(1_539, "%00000603"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_546, "%0000060a"), 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_552, "%00000610"), 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_557, "%00000615"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_931, "@memcpy"), + Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), +Attr("address","0x710"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(1_958, "%000007a6"), 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_959, "%000007a7"), + 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_960, "%000007a8"), 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_961, "%000007a9"), 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","0x710")]), Phis([]), +Defs([Def(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_458, "%000005b2"), 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_464, "%000005b8"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_469, "%000005bd"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_932, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(1_962, "%000007aa"), 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(1_963, "%000007ab"), + 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(1_964, "%000007ac"), + 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(1_965, "%000007ad"), 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","0x760")]), Phis([]), +Defs([Def(Tid(1_561, "%00000619"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_568, "%00000620"), 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_574, "%00000626"), 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_579, "%0000062b"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_933, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(1_966, "%000007ae"), 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(1_967, "%000007af"), 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","0x790")]), Phis([]), +Defs([Def(Tid(1_627, "%0000065b"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_634, "%00000662"), 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_640, "%00000668"), 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_645, "%0000066d"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(1_934, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(1_968, "%000007b0"), + 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","0x840")]), + Phis([]), Defs([Def(Tid(664, "%00000298"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x844"), +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","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), + Attrs([Attr("address","0x84C"), 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","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(694, "%000002b6"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(713, "%000002c9"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(711, "%000002c7"))), Goto(Tid(1_935, "%0000078f"), Attrs([]), + Int(1,1), Direct(Tid(1_133, "%0000046d")))])), Blk(Tid(1_133, "%0000046d"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_136, "%00000470"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(711, "%000002c7"))), Goto(Tid(1_936, "%00000790"), Attrs([]), + Int(1,1), Direct(Tid(1_152, "%00000480")))])), Blk(Tid(711, "%000002c7"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(719, "%000002cf"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_152, "%00000480"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_161, "%00000489"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(1_937, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(1_969, "%000007b1"), 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(1_970, "%000007b2"), + 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","0x720")]), Phis([]), +Defs([Def(Tid(1_473, "%000005c1"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_480, "%000005c8"), 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_486, "%000005ce"), 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_491, "%000005d3"), + 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/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..7a2981d48 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,348 @@ +00000792: program +00000776: sub __cxa_finalize(__cxa_finalize_result) +00000793: __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 + +00000777: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000794: __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 +00000778: goto %00000432 + +00000432: +00000435: R0 := 0x1F000 +0000043c: R0 := mem[R0 + 0xFC8, el]:u64 +00000442: when R0 = 0 goto %00000440 +00000779: goto %00000459 + +00000459: +0000045c: R0 := 0x20000 +00000463: R0 := mem[R0 + 0x58, el]:u64 +00000468: R30 := 0x8B0 +0000046b: call @__cxa_finalize with return %00000440 + +00000440: +00000448: R30 := 0x8B4 +0000044a: call @deregister_tm_clones with return %0000044c + +0000044c: +0000044f: R0 := 1 +00000457: mem := mem with [R19 + 0x70] <- 7:0[R0] +0000077a: 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 + +0000077b: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000795: __libc_start_main_main :: in u64 = R0 +00000796: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000797: __libc_start_main_arg3 :: in out u64 = R2 +00000798: __libc_start_main_auxv :: in out u64 = R3 +00000799: __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 + +0000077c: sub _fini(_fini_result) +0000079a: _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 + +0000077d: sub _init(_init_result) +0000079b: _init_result :: out u32 = low:32[R0] + +0000069f: +000006a5: #8 := R31 - 0x10 +000006ab: mem := mem with [#8, el]:u64 <- R29 +000006b1: mem := mem with [#8 + 8, el]:u64 <- R30 +000006b5: R31 := #8 +000006bb: R29 := R31 +000006c0: R30 := 0x6E8 +000006c2: call @call_weak_fn with return %000006c4 + +000006c4: +000006c9: R29 := mem[R31, el]:u64 +000006ce: R30 := mem[R31 + 8, el]:u64 +000006d2: R31 := R31 + 0x10 +000006d7: call R30 with noreturn + +0000077e: sub _start(_start_result) +0000079c: _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 := 0x7F0 +0000022e: call @__libc_start_main with return %00000230 + +00000230: +00000233: R30 := 0x7F4 +00000236: call @abort with return %0000077f + +0000077f: +00000780: call @call_weak_fn with noreturn + +00000781: sub abort() + + +00000234: +00000645: R16 := 0x20000 +0000064c: R17 := mem[R16 + 0x38, el]:u64 +00000652: R16 := R16 + 0x38 +00000657: call R17 with noreturn + +00000782: sub call_weak_fn(call_weak_fn_result) +0000079d: 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 +00000783: 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 + +00000784: sub deregister_tm_clones(deregister_tm_clones_result) +0000079e: 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 +00000785: goto %0000048b + +0000048b: +0000048e: R1 := 0x1F000 +00000495: R1 := mem[R1 + 0xFC0, el]:u64 +0000049a: when R1 = 0 goto %0000028b +00000786: goto %0000049e + +0000028b: +00000293: call R30 with noreturn + +0000049e: +000004a2: R16 := R1 +000004a7: call R16 with noreturn + +00000787: sub frame_dummy(frame_dummy_result) +0000079f: frame_dummy_result :: out u32 = low:32[R0] + +0000032a: +0000032c: call @register_tm_clones with noreturn + +00000788: sub free(free_ptr) +000007a0: 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 + +00000789: sub main(main_argc, main_argv, main_result) +000007a1: main_argc :: in u32 = low:32[R0] +000007a2: main_argv :: in out u64 = R1 +000007a3: 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 := 0x8EC +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 := 0x908 +0000039b: call @strlen with return %0000039d + +0000039d: +000003a1: R2 := R0 +000003a7: R0 := R19 +000003ad: R1 := R20 +000003b2: R30 := 0x918 +000003b5: call @memcpy with return %000003b7 + +000003b7: +000003bb: R0 := R19 +000003c0: R30 := 0x920 +000003c3: call @puts with return %000003c5 + +000003c5: +000003ca: R19 := mem[R21 + 0x78, el]:u64 +000003d0: R0 := R19 +000003d5: R30 := 0x92C +000003d7: call @strlen with return %000003d9 + +000003d9: +000003dd: R2 := R0 +000003e3: R0 := R19 +000003e8: R1 := 1 +000003ed: R30 := 0x93C +000003f0: call @memset with return %000003f2 + +000003f2: +000003f7: R0 := mem[R21 + 0x78, el]:u64 +000003fc: R30 := 0x944 +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 + +0000078a: sub malloc(malloc_size, malloc_result) +000007a4: malloc_size :: in u64 = R0 +000007a5: 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 + +0000078b: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000007a6: memcpy_dst :: in out u64 = R0 +000007a7: memcpy_src :: in out u64 = R1 +000007a8: memcpy_n :: in u64 = R2 +000007a9: memcpy_result :: out u64 = R0 + +000003b3: +000005ab: R16 := 0x20000 +000005b2: R17 := mem[R16, el]:u64 +000005b8: R16 := R16 +000005bd: call R17 with noreturn + +0000078c: sub memset(memset_buf, memset_c, memset_n, memset_result) +000007aa: memset_buf :: in out u64 = R0 +000007ab: memset_c :: in u32 = low:32[R1] +000007ac: memset_n :: in u64 = R2 +000007ad: 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 + +0000078d: sub puts(puts_s, puts_result) +000007ae: puts_s :: in u64 = R0 +000007af: 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 + +0000078e: sub register_tm_clones(register_tm_clones_result) +000007b0: 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 +0000078f: goto %0000046d + +0000046d: +00000470: R2 := 0x1F000 +00000477: R2 := mem[R2 + 0xFE0, el]:u64 +0000047c: when R2 = 0 goto %000002c7 +00000790: goto %00000480 + +000002c7: +000002cf: call R30 with noreturn + +00000480: +00000484: R16 := R2 +00000489: call R16 with noreturn + +00000791: sub strlen(strlen_s, strlen_result) +000007b1: strlen_s :: in u64 = R0 +000007b2: 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/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..e70b5eeec --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,144 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 99 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: 0000000000000958 0 SECTION LOCAL DEFAULT 14 .fini + 15: 000000000000096c 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 0000000000000970 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009b0 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 00000000000009c4 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 000000000000096c 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 0000000000000958 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 0000000000000964 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 00000000000009d8 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 + 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 + 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 + 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 + 59: 0000000000000a38 0 NOTYPE LOCAL DEFAULT 17 $d.4 + 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 61: 0000000000000a7c 0 NOTYPE LOCAL DEFAULT 17 $d + 62: 0000000000000a7c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 65: 0000000000000970 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata + 77: 0000000000000958 0 FUNC GLOBAL HIDDEN 14 _fini + 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 86: 000000000000096c 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end + 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf + 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext + 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 95: 00000000000008d4 132 FUNC GLOBAL DEFAULT 13 main + 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init 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/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/Makefile new file mode 100644 index 000000000..aed00c0f5 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/Makefile @@ -0,0 +1,3 @@ +CC=aarch64-linux-gnu-gcc + +include ../../../make/lift.mk diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..9c344b119 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,774 @@ +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 2460 20 2460)\n(code-region 1984 476 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 200)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2460 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2460 20)\n(llvm:code-entry .text 1984 476)\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 2484 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2720)\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 2484 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2720)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2544 176 2544)\n(llvm:section-entry .eh_frame_hdr 2484 60 2484)\n(llvm:section-entry .rodata 2480 4 2480)\n(llvm:section-entry .fini 2460 20 2460)\n(llvm:section-entry .text 1984 476 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 200 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2460 0 2460 2460)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2720 0)\n(mapped 130504 683 64968)\n(named-region 0 2720 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 476 .text)\n(named-region 2460 20 .fini)\n(named-region 2480 4 .rodata)\n(named-region 2484 60 .eh_frame_hdr)\n(named-region 2544 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2460 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 476)\n(section 2460 20)\n(section 2480 4)\n(section 2484 60)\n(section 2544 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2720 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 200 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2460 2460)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), +Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x99C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9B0, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9B4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x0c\xfe\xff\xff\x50\x00\x00\x00\x5c\xfe\xff\xff\x64\x00\x00\x00\x8c\xfe\xff\xff\x78\x00\x00\x00\xcc\xfe\xff\xff\x8c\x00\x00\x00\x1c\xff\xff\xff\xb0\x00\x00\x00\x20\xff\xff\xff\xc4\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\xb4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xf0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x0c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x38\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\x64\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x54\xfe\xff\xff\xc8\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x6e\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x9c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6e\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x86\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xA9F), Attr("segment","02 0 2720")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +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,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x99B), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x99B), Attr("symbol-info","main 0x8D4 200")), +Annotation(Region(0x99C,0x9AF), Attr("section","\".fini\"")), +Annotation(Region(0x9B0,0x9B3), Attr("section","\".rodata\"")), +Annotation(Region(0x9B4,0x9EF), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9F0,0xA9F), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x99B), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x99B), Attr("code-region","()")), +Annotation(Region(0x99C,0x9AF), Attr("code-region","()"))]), +Program(Tid(2_104, "%00000838"), Attrs([]), + Subs([Sub(Tid(2_076, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_105, "%00000839"), + 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_278, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_077, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_106, "%0000083a"), + 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(791, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(795, "%0000031b"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(801, "%00000321"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(807, "%00000327"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(817, "%00000331"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(825, "%00000339"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(830, "%0000033e"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(837, "%00000345"), Attrs([Attr("address","0x890"), +Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(843, "%0000034b"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(841, "%00000349"))), +Goto(Tid(2_078, "%0000081e"), Attrs([]), Int(1,1), +Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_237, "%000004d5"))), Goto(Tid(2_079, "%0000081f"), Attrs([]), + Int(1,1), Direct(Tid(1_262, "%000004ee")))])), Blk(Tid(1_262, "%000004ee"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_280, "%00000500"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_076, "@__cxa_finalize")),Direct(Tid(1_237, "%000004d5"))))])), +Blk(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_247, "%000004df"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_090, "@deregister_tm_clones")),Direct(Tid(1_249, "%000004e1"))))])), +Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_252, "%000004e4"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_260, "%000004ec"), Attrs([Attr("address","0x8B8"), +Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_080, "%00000820"), Attrs([]), Int(1,1), +Direct(Tid(841, "%00000349")))])), Blk(Tid(841, "%00000349"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(851, "%00000353"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(858, "%0000035a"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(863, "%0000035f"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(867, "%00000363"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(872, "%00000368"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_081, "@__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_107, "%0000083b"), + 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_108, "%0000083c"), 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_109, "%0000083d"), 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_110, "%0000083e"), 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_111, "%0000083f"), 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(624, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_082, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x99C")]), + "_fini", Args([Arg(Tid(2_112, "%00000840"), + 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","0x99C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x9A0"), +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","0x9A0"), +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","0x9A0"), +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","0x9A0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9A4"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9A8"), +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","0x9A8"), +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","0x9A8"), +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","0x9AC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_083, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_113, "%00000841"), + 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_844, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_850, "%0000073a"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_856, "%00000740"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_862, "%00000746"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_866, "%0000074a"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#6",Imm(64))), Def(Tid(1_872, "%00000750"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_877, "%00000755"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_879, "%00000757"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_088, "@call_weak_fn")),Direct(Tid(1_881, "%00000759"))))])), +Blk(Tid(1_881, "%00000759"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_886, "%0000075e"), 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_891, "%00000763"), 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_895, "%00000767"), 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_900, "%0000076c"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_084, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_114, "%00000842"), + 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(561, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(566, "%00000236"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(571, "%0000023b"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(577, "%00000241"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(584, "%00000248"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(590, "%0000024e"), Attrs([Attr("address","0x7D4"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(596, "%00000254"), + Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(601, "%00000259"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(608, "%00000260"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(613, "%00000265"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(618, "%0000026a"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(623, "%0000026f"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_081, "@__libc_start_main")),Direct(Tid(628, "%00000274"))))])), +Blk(Tid(628, "%00000274"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_087, "@abort")),Direct(Tid(2_085, "%00000825"))))])), +Blk(Tid(2_085, "%00000825"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_086, "%00000826"), Attrs([]), Int(1,1), +(Direct(Tid(2_088, "@call_weak_fn")),))]))])), Sub(Tid(2_087, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(632, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_761, "%000006e1"), 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_767, "%000006e7"), 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_772, "%000006ec"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_088, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(2_115, "%00000843"), + 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(636, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(639, "%0000027f"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(646, "%00000286"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(652, "%0000028c"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(650, "%0000028a"))), Goto(Tid(2_089, "%00000829"), Attrs([]), + Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(650, "%0000028a"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(658, "%00000292"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_342, "%0000053e"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_345, "%00000541"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_343, "@__gmon_start__")))])), Blk(Tid(1_343, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_090, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(2_116, "%00000844"), + 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(664, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(667, "%0000029b"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(673, "%000002a1"), + Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), +Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(684, "%000002ac"), Attrs([Attr("address","0x81C"), +Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(690, "%000002b2"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(695, "%000002b7"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(715, "%000002cb"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(721, "%000002d1"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(719, "%000002cf"))), Goto(Tid(2_091, "%0000082b"), Attrs([]), + Int(1,1), Direct(Tid(1_312, "%00000520")))])), Blk(Tid(1_312, "%00000520"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_315, "%00000523"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_322, "%0000052a"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(719, "%000002cf"))), Goto(Tid(2_092, "%0000082c"), Attrs([]), + Int(1,1), Direct(Tid(1_331, "%00000533")))])), Blk(Tid(719, "%000002cf"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(727, "%000002d7"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_331, "%00000533"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_093, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_117, "%00000845"), + 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(878, "@frame_dummy"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(880, "%00000370"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_100, "@register_tm_clones")),))]))])), Sub(Tid(2_094, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_118, "%00000846"), + 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_186, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_805, "%0000070d"), 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_811, "%00000713"), 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_816, "%00000718"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_095, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_119, "%00000847"), + 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_120, "%00000848"), + 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_121, "%00000849"), + 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(882, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(886, "%00000376"), + Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(898, "%00000382"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#4",Imm(64))), Def(Tid(908, "%0000038c"), + Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(916, "%00000394"), + Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x8E0"), +Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x8E4"), +Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x8E8"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(940, "%000003ac"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(943, "%000003af"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_096, "@malloc")),Direct(Tid(945, "%000003b1"))))])), +Blk(Tid(945, "%000003b1"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8F0"), +Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8F4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x8F8"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(968, "%000003c8"), + Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x900"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x904"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(986, "%000003da"), + Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(991, "%000003df"), Attrs([Attr("address","0x90C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x910"), +Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_002, "%000003ea"), + Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), + Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_005, "%000003ed"), + Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_007, "%000003ef"))))])), +Blk(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x918"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x91C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x920"), +Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_028, "%00000404"), + Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_033, "%00000409"), + Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), + Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_036, "%0000040c"), + Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_097, "@memcpy")),Direct(Tid(1_038, "%0000040e"))))])), +Blk(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x92C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x930"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_054, "%0000041e"), + Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), +Jmps([Call(Tid(1_062, "%00000426"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1a8")]), Int(1,1), +(Direct(Tid(2_099, "@puts")),Direct(Tid(1_064, "%00000428"))))])), +Blk(Tid(1_064, "%00000428"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x93C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x940"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_080, "%00000438"), + Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x948"), +Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_094, "%00000446"), + Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x950"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_105, "%00000451"), Attrs([Attr("address","0x954"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_112, "%00000458"), + Attrs([Attr("address","0x958"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x95C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x960"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_130, "%0000046a"), + Attrs([Attr("address","0x964"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x248")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(1_137, "%00000471"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x248")]), Int(1,1), +(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_139, "%00000473"))))])), +Blk(Tid(1_139, "%00000473"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x96C"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x970"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_154, "%00000482"), Attrs([Attr("address","0x974"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2428,64))]), +Jmps([Call(Tid(1_162, "%0000048a"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_098, "@memset")),Direct(Tid(1_164, "%0000048c"))))])), +Blk(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x97C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x980"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_180, "%0000049c"), + Attrs([Attr("address","0x984"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_185, "%000004a1"), Attrs([Attr("address","0x988"), +Attr("insn","bl #-0x1e8")]), Var("R30",Imm(64)), Int(2444,64))]), +Jmps([Call(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x988"), +Attr("insn","bl #-0x1e8")]), Int(1,1), +(Direct(Tid(2_094, "@free")),Direct(Tid(1_190, "%000004a6"))))])), +Blk(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x98C")]), Phis([]), +Defs([Def(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x98C"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x990"), +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_207, "%000004b7"), Attrs([Attr("address","0x994"), +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_212, "%000004bc"), Attrs([Attr("address","0x994"), +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_216, "%000004c0"), Attrs([Attr("address","0x994"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_221, "%000004c5"), + Attrs([Attr("address","0x998"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_096, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_122, "%0000084a"), 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_123, "%0000084b"), + 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(941, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_097, "@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_124, "%0000084c"), 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_125, "%0000084d"), + 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_126, "%0000084e"), 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_127, "%0000084f"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_034, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_618, "%00000652"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_098, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_128, "%00000850"), 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_129, "%00000851"), + 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_130, "%00000852"), + 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_131, "%00000853"), 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_160, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_099, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_132, "%00000854"), 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_133, "%00000855"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_060, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_783, "%000006f7"), 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_789, "%000006fd"), 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_794, "%00000702"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_100, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(2_134, "%00000856"), + 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(729, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x844"), +Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(743, "%000002e7"), + Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(749, "%000002ed"), + Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), +Def(Tid(756, "%000002f4"), Attrs([Attr("address","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(775, "%00000307"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(781, "%0000030d"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(779, "%0000030b"))), Goto(Tid(2_101, "%00000835"), Attrs([]), + Int(1,1), Direct(Tid(1_282, "%00000502")))])), Blk(Tid(1_282, "%00000502"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_297, "%00000511"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(779, "%0000030b"))), Goto(Tid(2_102, "%00000836"), Attrs([]), + Int(1,1), Direct(Tid(1_301, "%00000515")))])), Blk(Tid(779, "%0000030b"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(787, "%00000313"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_301, "%00000515"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_305, "%00000519"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_103, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_135, "%00000857"), 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_136, "%00000858"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_003, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), + 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/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..8afe8544a --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,361 @@ +00000838: program +0000081c: sub __cxa_finalize(__cxa_finalize_result) +00000839: __cxa_finalize_result :: out u32 = low:32[R0] + +000004fe: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x18, el]:u64 +0000068f: R16 := R16 + 0x18 +00000694: call R17 with noreturn + +0000081d: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000083a: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000317: +0000031b: #3 := R31 - 0x20 +00000321: mem := mem with [#3, el]:u64 <- R29 +00000327: mem := mem with [#3 + 8, el]:u64 <- R30 +0000032b: R31 := #3 +00000331: R29 := R31 +00000339: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000033e: R19 := 0x20000 +00000345: R0 := pad:64[mem[R19 + 0x78]] +0000034b: when 0:0[R0] goto %00000349 +0000081e: goto %000004c7 + +000004c7: +000004ca: R0 := 0x1F000 +000004d1: R0 := mem[R0 + 0xFC8, el]:u64 +000004d7: when R0 = 0 goto %000004d5 +0000081f: goto %000004ee + +000004ee: +000004f1: R0 := 0x20000 +000004f8: R0 := mem[R0 + 0x58, el]:u64 +000004fd: R30 := 0x8B0 +00000500: call @__cxa_finalize with return %000004d5 + +000004d5: +000004dd: R30 := 0x8B4 +000004df: call @deregister_tm_clones with return %000004e1 + +000004e1: +000004e4: R0 := 1 +000004ec: mem := mem with [R19 + 0x78] <- 7:0[R0] +00000820: goto %00000349 + +00000349: +00000353: R19 := mem[R31 + 0x10, el]:u64 +0000035a: R29 := mem[R31, el]:u64 +0000035f: R30 := mem[R31 + 8, el]:u64 +00000363: R31 := R31 + 0x20 +00000368: call R30 with noreturn + +00000821: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +0000083b: __libc_start_main_main :: in u64 = R0 +0000083c: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000083d: __libc_start_main_arg3 :: in out u64 = R2 +0000083e: __libc_start_main_auxv :: in out u64 = R3 +0000083f: __libc_start_main_result :: out u32 = low:32[R0] + +00000270: +0000066c: R16 := 0x20000 +00000673: R17 := mem[R16 + 0x10, el]:u64 +00000679: R16 := R16 + 0x10 +0000067e: call R17 with noreturn + +00000822: sub _fini(_fini_result) +00000840: _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 + +00000823: sub _init(_init_result) +00000841: _init_result :: out u32 = low:32[R0] + +00000734: +0000073a: #6 := R31 - 0x10 +00000740: mem := mem with [#6, el]:u64 <- R29 +00000746: mem := mem with [#6 + 8, el]:u64 <- R30 +0000074a: R31 := #6 +00000750: R29 := R31 +00000755: R30 := 0x6E8 +00000757: call @call_weak_fn with return %00000759 + +00000759: +0000075e: R29 := mem[R31, el]:u64 +00000763: R30 := mem[R31 + 8, el]:u64 +00000767: R31 := R31 + 0x10 +0000076c: call R30 with noreturn + +00000824: sub _start(_start_result) +00000842: _start_result :: out u32 = low:32[R0] + +00000231: +00000236: R29 := 0 +0000023b: R30 := 0 +00000241: R5 := R0 +00000248: R1 := mem[R31, el]:u64 +0000024e: R2 := R31 + 8 +00000254: R6 := R31 +00000259: R0 := 0x1F000 +00000260: R0 := mem[R0 + 0xFD8, el]:u64 +00000265: R3 := 0 +0000026a: R4 := 0 +0000026f: R30 := 0x7F0 +00000272: call @__libc_start_main with return %00000274 + +00000274: +00000277: R30 := 0x7F4 +0000027a: call @abort with return %00000825 + +00000825: +00000826: call @call_weak_fn with noreturn + +00000827: sub abort() + + +00000278: +000006da: R16 := 0x20000 +000006e1: R17 := mem[R16 + 0x38, el]:u64 +000006e7: R16 := R16 + 0x38 +000006ec: call R17 with noreturn + +00000828: sub call_weak_fn(call_weak_fn_result) +00000843: call_weak_fn_result :: out u32 = low:32[R0] + +0000027c: +0000027f: R0 := 0x1F000 +00000286: R0 := mem[R0 + 0xFD0, el]:u64 +0000028c: when R0 = 0 goto %0000028a +00000829: goto %0000053e + +0000028a: +00000292: call R30 with noreturn + +0000053e: +00000541: goto @__gmon_start__ + +0000053f: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x30, el]:u64 +000006d1: R16 := R16 + 0x30 +000006d6: call R17 with noreturn + +0000082a: sub deregister_tm_clones(deregister_tm_clones_result) +00000844: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000298: +0000029b: R0 := 0x20000 +000002a1: R0 := R0 + 0x78 +000002a6: R1 := 0x20000 +000002ac: R1 := R1 + 0x78 +000002b2: #1 := ~R0 +000002b7: #2 := R1 + ~R0 +000002bd: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002c3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002c7: ZF := #2 + 1 = 0 +000002cb: NF := 63:63[#2 + 1] +000002d1: when ZF goto %000002cf +0000082b: goto %00000520 + +00000520: +00000523: R1 := 0x1F000 +0000052a: R1 := mem[R1 + 0xFC0, el]:u64 +0000052f: when R1 = 0 goto %000002cf +0000082c: goto %00000533 + +000002cf: +000002d7: call R30 with noreturn + +00000533: +00000537: R16 := R1 +0000053c: call R16 with noreturn + +0000082d: sub frame_dummy(frame_dummy_result) +00000845: frame_dummy_result :: out u32 = low:32[R0] + +0000036e: +00000370: call @register_tm_clones with noreturn + +0000082e: sub free(free_ptr) +00000846: free_ptr :: in out u64 = R0 + +000004a2: +00000706: R16 := 0x20000 +0000070d: R17 := mem[R16 + 0x48, el]:u64 +00000713: R16 := R16 + 0x48 +00000718: call R17 with noreturn + +0000082f: sub main(main_argc, main_argv, main_result) +00000847: main_argc :: in u32 = low:32[R0] +00000848: main_argv :: in out u64 = R1 +00000849: main_result :: out u32 = low:32[R0] + +00000372: +00000376: #4 := R31 - 0x30 +0000037c: mem := mem with [#4, el]:u64 <- R29 +00000382: mem := mem with [#4 + 8, el]:u64 <- R30 +00000386: R31 := #4 +0000038c: R29 := R31 +00000394: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000039b: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003a2: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003a7: R0 := 0xB +000003ac: R30 := 0x8F0 +000003af: call @malloc with return %000003b1 + +000003b1: +000003b5: R1 := R0 +000003ba: R0 := 0x20000 +000003c0: R0 := R0 + 0x80 +000003c8: mem := mem with [R0, el]:u64 <- R1 +000003cd: R0 := 0x20000 +000003d3: R0 := R0 + 0x80 +000003da: R19 := mem[R0, el]:u64 +000003df: R0 := 0x20000 +000003e5: R0 := R0 + 0x68 +000003ea: R30 := 0x918 +000003ed: call @strlen with return %000003ef + +000003ef: +000003f3: R2 := R0 +000003f8: R0 := 0x20000 +000003fe: R1 := R0 + 0x68 +00000404: R0 := R19 +00000409: R30 := 0x92C +0000040c: call @memcpy with return %0000040e + +0000040e: +00000411: R0 := 0x20000 +00000417: R0 := R0 + 0x80 +0000041e: R0 := mem[R0, el]:u64 +00000423: R30 := 0x93C +00000426: call @puts with return %00000428 + +00000428: +0000042b: R0 := 0x20000 +00000431: R0 := R0 + 0x80 +00000438: R0 := mem[R0, el]:u64 +0000043e: R0 := R0 + 4 +00000446: mem := mem with [R31 + 0x28, el]:u64 <- R0 +0000044b: R0 := 0x20000 +00000451: R0 := R0 + 0x80 +00000458: R19 := mem[R0, el]:u64 +0000045d: R0 := 0x20000 +00000463: R0 := R0 + 0x80 +0000046a: R0 := mem[R0, el]:u64 +0000046f: R30 := 0x96C +00000471: call @strlen with return %00000473 + +00000473: +00000477: R2 := R0 +0000047c: R1 := 1 +00000482: R0 := R19 +00000487: R30 := 0x97C +0000048a: call @memset with return %0000048c + +0000048c: +0000048f: R0 := 0x20000 +00000495: R0 := R0 + 0x80 +0000049c: R0 := mem[R0, el]:u64 +000004a1: R30 := 0x98C +000004a4: call @free with return %000004a6 + +000004a6: +000004a9: R0 := 0 +000004b0: R19 := mem[R31 + 0x10, el]:u64 +000004b7: R29 := mem[R31, el]:u64 +000004bc: R30 := mem[R31 + 8, el]:u64 +000004c0: R31 := R31 + 0x30 +000004c5: call R30 with noreturn + +00000830: sub malloc(malloc_size, malloc_result) +0000084a: malloc_size :: in u64 = R0 +0000084b: malloc_result :: out u64 = R0 + +000003ad: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x20, el]:u64 +000006a5: R16 := R16 + 0x20 +000006aa: call R17 with noreturn + +00000831: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +0000084c: memcpy_dst :: in out u64 = R0 +0000084d: memcpy_src :: in out u64 = R1 +0000084e: memcpy_n :: in u64 = R2 +0000084f: memcpy_result :: out u64 = R0 + +0000040a: +00000640: R16 := 0x20000 +00000647: R17 := mem[R16, el]:u64 +0000064d: R16 := R16 +00000652: call R17 with noreturn + +00000832: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000850: memset_buf :: in out u64 = R0 +00000851: memset_c :: in u32 = low:32[R1] +00000852: memset_n :: in u64 = R2 +00000853: memset_result :: out u64 = R0 + +00000488: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x28, el]:u64 +000006bb: R16 := R16 + 0x28 +000006c0: call R17 with noreturn + +00000833: sub puts(puts_s, puts_result) +00000854: puts_s :: in u64 = R0 +00000855: puts_result :: out u32 = low:32[R0] + +00000424: +000006f0: R16 := 0x20000 +000006f7: R17 := mem[R16 + 0x40, el]:u64 +000006fd: R16 := R16 + 0x40 +00000702: call R17 with noreturn + +00000834: sub register_tm_clones(register_tm_clones_result) +00000856: register_tm_clones_result :: out u32 = low:32[R0] + +000002d9: +000002dc: R0 := 0x20000 +000002e2: R0 := R0 + 0x78 +000002e7: R1 := 0x20000 +000002ed: R1 := R1 + 0x78 +000002f4: R1 := R1 + ~R0 + 1 +000002fa: R2 := 0.63:63[R1] +00000301: R1 := R2 + (R1 ~>> 3) +00000307: R1 := extend:64[63:1[R1]] +0000030d: when R1 = 0 goto %0000030b +00000835: goto %00000502 + +00000502: +00000505: R2 := 0x1F000 +0000050c: R2 := mem[R2 + 0xFE0, el]:u64 +00000511: when R2 = 0 goto %0000030b +00000836: goto %00000515 + +0000030b: +00000313: call R30 with noreturn + +00000515: +00000519: R16 := R2 +0000051e: call R16 with noreturn + +00000837: sub strlen(strlen_s, strlen_result) +00000857: strlen_s :: in u64 = R0 +00000858: strlen_result :: out u64 = R0 + +000003eb: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16 + 8, el]:u64 +00000663: R16 := R16 + 8 +00000668: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..3ddb9e515 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/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 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 98 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp + 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id + 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag + 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash + 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym + 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr + 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version + 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r + 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn + 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt + 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt + 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text + 14: 000000000000099c 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009b0 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009b4 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009f0 0 SECTION LOCAL DEFAULT 17 .eh_frame + 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array + 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array + 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic + 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got + 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt + 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss + 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d + 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag + 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 0000000000000a04 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 000000000000099c 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009a8 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d + 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d + 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x + 58: 0000000000000a78 0 NOTYPE LOCAL DEFAULT 17 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000a9c 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000a9c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 00000000000009b4 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 000000000000099c 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 85: 00000000000009b0 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf + 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext + 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 94: 00000000000008d4 200 FUNC GLOBAL DEFAULT 13 main + 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile new file mode 100644 index 000000000..6dedd5452 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile @@ -0,0 +1,3 @@ +CFLAGS=-O2 + +include ../../../make/lift.mk 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..02784a818 --- /dev/null +++ b/src/test/incorrect/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_043, "%000007fb"), 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_044, "%000007fc"), + 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_045, "%000007fd"), + 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_017, "%000007e1"), 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_018, "%000007e2"), 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_019, "%000007e3"), 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_046, "%000007fe"), + 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_047, "%000007ff"), 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_048, "%00000800"), 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_049, "%00000801"), 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_050, "%00000802"), 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_051, "%00000803"), + 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_052, "%00000804"), + 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_053, "%00000805"), + 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_024, "%000007e8"))))])), +Blk(Tid(2_024, "%000007e8"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_025, "%000007e9"), 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_054, "%00000806"), + 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_028, "%000007ec"), 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_055, "%00000807"), + 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_030, "%000007ee"), 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_031, "%000007ef"), 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_056, "%00000808"), + 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_057, "%00000809"), + 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_058, "%0000080a"), + 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_059, "%0000080b"), + 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_060, "%0000080c"), + 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_061, "%0000080d"), 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_062, "%0000080e"), + 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_063, "%0000080f"), 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_064, "%00000810"), + 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_065, "%00000811"), 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_066, "%00000812"), 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_067, "%00000813"), 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_068, "%00000814"), + 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_069, "%00000815"), + 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_070, "%00000816"), 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_071, "%00000817"), 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_072, "%00000818"), 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_073, "%00000819"), + 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_040, "%000007f8"), 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_041, "%000007f9"), 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_074, "%0000081a"), 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_075, "%0000081b"), + 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/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..7838f7004 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,348 @@ +000007fb: program +000007df: sub __cxa_finalize(__cxa_finalize_result) +000007fc: __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) +000007fd: __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 +000007e1: goto %0000048c + +0000048c: +0000048f: R0 := 0x1F000 +00000496: R0 := mem[R0 + 0xFC8, el]:u64 +0000049c: when R0 = 0 goto %0000049a +000007e2: 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] +000007e3: 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) +000007fe: __libc_start_main_main :: in u64 = R0 +000007ff: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000800: __libc_start_main_arg3 :: in out u64 = R2 +00000801: __libc_start_main_auxv :: in out u64 = R3 +00000802: __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) +00000803: _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) +00000804: _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) +00000805: _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 %000007e8 + +000007e8: +000007e9: 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) +00000806: 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 +000007ec: 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) +00000807: 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 +000007ee: goto %000004e5 + +000004e5: +000004e8: R1 := 0x1F000 +000004ef: R1 := mem[R1 + 0xFC0, el]:u64 +000004f4: when R1 = 0 goto %000003e9 +000007ef: goto %000004f8 + +000003e9: +000003f1: call R30 with noreturn + +000004f8: +000004fc: R16 := R1 +00000501: call R16 with noreturn + +000007f0: sub frame_dummy(frame_dummy_result) +00000808: frame_dummy_result :: out u32 = low:32[R0] + +00000488: +0000048a: call @register_tm_clones with noreturn + +000007f1: sub free(free_ptr) +00000809: 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) +0000080a: main_argc :: in u32 = low:32[R0] +0000080b: main_argv :: in out u64 = R1 +0000080c: 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) +0000080d: malloc_size :: in u64 = R0 +0000080e: 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) +0000080f: memcpy_dst :: in out u64 = R0 +00000810: memcpy_src :: in out u64 = R1 +00000811: memcpy_n :: in u64 = R2 +00000812: 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) +00000813: memset_buf :: in out u64 = R0 +00000814: memset_c :: in u32 = low:32[R1] +00000815: memset_n :: in u64 = R2 +00000816: 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) +00000817: puts_s :: in u64 = R0 +00000818: 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) +00000819: 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 +000007f8: goto %000004c7 + +000004c7: +000004ca: R2 := 0x1F000 +000004d1: R2 := mem[R2 + 0xFE0, el]:u64 +000004d6: when R2 = 0 goto %00000425 +000007f9: goto %000004da + +00000425: +0000042d: call R30 with noreturn + +000004da: +000004de: R16 := R2 +000004e3: call R16 with noreturn + +000007fa: sub strlen(strlen_s, strlen_result) +0000081a: strlen_s :: in u64 = R0 +0000081b: 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/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..30bb59fe2 --- /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 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/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..c5d06fc4a --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec @@ -0,0 +1,76 @@ +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)))" + + + From bdab873477b0d183a87bd6d462d48588fecc5901 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Mon, 4 Dec 2023 15:33:06 +1000 Subject: [PATCH 08/36] recursive make lifting setup --- examples/memcpy-variants/beans | 709 --------------- examples/memcpy-variants/example.bpl.orig | 691 -------------- examples/memcpy-variants/example.bpl.rej | 12 - examples/memcpy-variants/iterator.log | 1007 --------------------- examples/memcpy-variants/simplememcpy.c | 0 examples/memcpy-variants/smtout.log | 688 -------------- src/test/make/lift-directories.mk | 30 + src/test/make/lift.mk | 18 + 8 files changed, 48 insertions(+), 3107 deletions(-) delete mode 100644 examples/memcpy-variants/beans delete mode 100644 examples/memcpy-variants/example.bpl.orig delete mode 100644 examples/memcpy-variants/example.bpl.rej delete mode 100644 examples/memcpy-variants/iterator.log delete mode 100644 examples/memcpy-variants/simplememcpy.c delete mode 100644 examples/memcpy-variants/smtout.log create mode 100644 src/test/make/lift-directories.mk create mode 100644 src/test/make/lift.mk diff --git a/examples/memcpy-variants/beans b/examples/memcpy-variants/beans deleted file mode 100644 index c62ff5936..000000000 --- a/examples/memcpy-variants/beans +++ /dev/null @@ -1,709 +0,0 @@ -// Boogie program verifier version 3.0.5.0, Copyright (c) 2003-2014, Microsoft. -// Command Line Options: example.bpl extraspec.bpl /vcsSplitOnEveryAssert /printDesugared /printLambdaLifting /print beans - -var {:extern} Gamma_R0: bool; - -var {:extern} Gamma_R1: bool; - -var {:extern} Gamma_R16: bool; - -var {:extern} Gamma_R17: bool; - -var {:extern} Gamma_R2: bool; - -var {:extern} Gamma_R29: bool; - -var {:extern} Gamma_R30: bool; - -var {:extern} Gamma_R31: 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} R2: bv64; - -var {:extern} R29: bv64; - -var {:extern} R30: bv64; - -var {:extern} R31: bv64; - -var {:extern} mem: [bv64]bv8; - -var {:extern} stack: [bv64]bv8; - -const {:extern} $copiedtext_addr: bv64; - -axiom $copiedtext_addr == 131168bv64; - -const {:extern} $text_addr: bv64; - -axiom $text_addr == 131144bv64; - -function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) : bv64; - -function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) : bv64; - -function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) : bv64; - -function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) : bv64; - -function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) : bool; - -function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) : bool; - -function {:inline} byte_extract64_64(value: bv64, offset: bv64) : bv8 -{ - bvlshr64(value, bvmul64(offset, 8bv64))[8:0] -} - -function {:extern} gamma_load32(gammaMap: [bv64]bool, index: bv64) : bool -uses { -axiom (forall gammaMap: [bv64]bool, index: bv64 :: - {:extern} { gamma_load32(gammaMap, index): bool } - gamma_load32(gammaMap, index): bool - <==> gammaMap[bvadd64(index, 3bv64)] - && - gammaMap[bvadd64(index, 2bv64)] - && - gammaMap[bvadd64(index, 1bv64)] - && gammaMap[index]); -} - -function {:extern} gamma_load64(gammaMap: [bv64]bool, index: bv64) : bool -uses { -axiom (forall gammaMap: [bv64]bool, index: bv64 :: - {:extern} { gamma_load64(gammaMap, index): bool } - gamma_load64(gammaMap, index): 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) : bool -uses { -axiom (forall gammaMap: [bv64]bool, index: bv64 :: - {:extern} { gamma_load8(gammaMap, index): bool } - gamma_load8(gammaMap, index): bool <==> gammaMap[index]); -} - -function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) : [bv64]bool -uses { -axiom (forall gammaMap: [bv64]bool, index: bv64, value: bool :: - {:extern} { gamma_store64(gammaMap, index, value): [bv64]bool } - gamma_store64(gammaMap, index, value): [bv64]bool - == lambda#0(index, 8bv64, value, gammaMap)); -} - -function {:inline} in_bounds64_le(base: bv64, len: bv64, i: bv64) : 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))) -} - -function {:extern} memory_load64_le(memory: [bv64]bv8, index: bv64) : bv64 -uses { -axiom (forall memory: [bv64]bv8, index: bv64 :: - {:extern} { memory_load64_le(memory, index): bv64 } - memory_load64_le(memory, index): 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) : bv8 -uses { -axiom (forall memory: [bv64]bv8, index: bv64 :: - {:extern} { memory_load8_le(memory, index): bv8 } - memory_load8_le(memory, index): bv8 == memory[index]); -} - -function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) : [bv64]bv8 -uses { -axiom (forall memory: [bv64]bv8, index: bv64, value: bv64 :: - {:extern} { memory_store64_le(memory, index, value): [bv64]bv8 } - memory_store64_le(memory, index, value): [bv64]bv8 - == lambda#1(index, 8bv64, value, index, memory)); -} - -procedure {:extern} rely(); - modifies Gamma_mem, mem; - ensures mem == old(mem); - ensures Gamma_mem == old(Gamma_mem); - free ensures memory_load8_le(mem, 2180bv64) == 1bv8; - free ensures memory_load8_le(mem, 2181bv64) == 0bv8; - free ensures memory_load8_le(mem, 2182bv64) == 2bv8; - free ensures memory_load8_le(mem, 2183bv64) == 0bv8; - free ensures memory_load8_le(mem, 130504bv64) == 16bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 192bv8; - free ensures memory_load8_le(mem, 130513bv64) == 7bv8; - 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) == 20bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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, 131136bv64) == 64bv8; - free ensures memory_load8_le(mem, 131137bv64) == 0bv8; - free ensures memory_load8_le(mem, 131138bv64) == 2bv8; - free ensures memory_load8_le(mem, 131139bv64) == 0bv8; - free ensures memory_load8_le(mem, 131140bv64) == 0bv8; - free ensures memory_load8_le(mem, 131141bv64) == 0bv8; - free ensures memory_load8_le(mem, 131142bv64) == 0bv8; - free ensures memory_load8_le(mem, 131143bv64) == 0bv8; - - - -procedure {:extern} rely_transitive(); - modifies Gamma_mem, mem; - ensures mem == old(mem); - ensures Gamma_mem == old(Gamma_mem); - - - -implementation {:extern} rely_transitive() -{ - call rely(); - call rely(); -} - - - -procedure {:extern} rely_reflexive(); - - - -procedure {:extern} guarantee_reflexive(); - modifies Gamma_mem, mem; - - - -procedure main(); - requires malloc_count == 0; - requires R31 == 100bv64; - free requires memory_load8_le(mem, 131128bv64) == 0bv8; - free requires memory_load8_le(mem, 131129bv64) == 0bv8; - free requires memory_load8_le(mem, 131130bv64) == 0bv8; - free requires memory_load8_le(mem, 131131bv64) == 0bv8; - free requires memory_load8_le(mem, 131132bv64) == 0bv8; - free requires memory_load8_le(mem, 131133bv64) == 0bv8; - free requires memory_load8_le(mem, 131134bv64) == 0bv8; - free requires memory_load8_le(mem, 131135bv64) == 0bv8; - free requires memory_load8_le(mem, 131136bv64) == 64bv8; - free requires memory_load8_le(mem, 131137bv64) == 0bv8; - free requires memory_load8_le(mem, 131138bv64) == 2bv8; - free requires memory_load8_le(mem, 131139bv64) == 0bv8; - free requires memory_load8_le(mem, 131140bv64) == 0bv8; - free requires memory_load8_le(mem, 131141bv64) == 0bv8; - free requires memory_load8_le(mem, 131142bv64) == 0bv8; - free requires memory_load8_le(mem, 131143bv64) == 0bv8; - free requires memory_load8_le(mem, 131144bv64) == 66bv8; - free requires memory_load8_le(mem, 131145bv64) == 65bv8; - free requires memory_load8_le(mem, 131146bv64) == 83bv8; - free requires memory_load8_le(mem, 131147bv64) == 73bv8; - free requires memory_load8_le(mem, 131148bv64) == 76bv8; - free requires memory_load8_le(mem, 131149bv64) == 32bv8; - free requires memory_load8_le(mem, 131150bv64) == 86bv8; - free requires memory_load8_le(mem, 131151bv64) == 101bv8; - free requires memory_load8_le(mem, 131152bv64) == 114bv8; - free requires memory_load8_le(mem, 131153bv64) == 105bv8; - free requires memory_load8_le(mem, 131154bv64) == 102bv8; - free requires memory_load8_le(mem, 131155bv64) == 105bv8; - free requires memory_load8_le(mem, 131156bv64) == 101bv8; - free requires memory_load8_le(mem, 131157bv64) == 114bv8; - free requires memory_load8_le(mem, 2180bv64) == 1bv8; - free requires memory_load8_le(mem, 2181bv64) == 0bv8; - free requires memory_load8_le(mem, 2182bv64) == 2bv8; - free requires memory_load8_le(mem, 2183bv64) == 0bv8; - free requires memory_load8_le(mem, 130504bv64) == 16bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 192bv8; - free requires memory_load8_le(mem, 130513bv64) == 7bv8; - 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) == 20bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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, 131136bv64) == 64bv8; - free requires memory_load8_le(mem, 131137bv64) == 0bv8; - free requires memory_load8_le(mem, 131138bv64) == 2bv8; - free requires memory_load8_le(mem, 131139bv64) == 0bv8; - free requires memory_load8_le(mem, 131140bv64) == 0bv8; - free requires memory_load8_le(mem, 131141bv64) == 0bv8; - free requires memory_load8_le(mem, 131142bv64) == 0bv8; - free requires memory_load8_le(mem, 131143bv64) == 0bv8; - modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, mem, stack; - free ensures Gamma_R29 <==> old(Gamma_R29); - free ensures Gamma_R31 <==> old(Gamma_R31); - free ensures R29 == old(R29); - free ensures R31 == old(R31); - free ensures memory_load8_le(mem, 2180bv64) == 1bv8; - free ensures memory_load8_le(mem, 2181bv64) == 0bv8; - free ensures memory_load8_le(mem, 2182bv64) == 2bv8; - free ensures memory_load8_le(mem, 2183bv64) == 0bv8; - free ensures memory_load8_le(mem, 130504bv64) == 16bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 192bv8; - free ensures memory_load8_le(mem, 130513bv64) == 7bv8; - 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) == 20bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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, 131136bv64) == 64bv8; - free ensures memory_load8_le(mem, 131137bv64) == 0bv8; - free ensures memory_load8_le(mem, 131138bv64) == 2bv8; - free ensures memory_load8_le(mem, 131139bv64) == 0bv8; - free ensures memory_load8_le(mem, 131140bv64) == 0bv8; - free ensures memory_load8_le(mem, 131141bv64) == 0bv8; - free ensures memory_load8_le(mem, 131142bv64) == 0bv8; - free ensures memory_load8_le(mem, 131143bv64) == 0bv8; - - - -implementation main() -{ - var #4: bv64; - var Gamma_#4: bool; - - lmain: - assume {:captureState "lmain"} true; - #4, Gamma_#4 := bvadd64(R31, 18446744073709551584bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); - assume {:captureState "%00000310"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); - assume {:captureState "%00000316"} true; - R31, Gamma_R31 := #4, Gamma_#4; - R29, Gamma_R29 := R31, Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), true); - assume {:captureState "%00000327"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), true); - assume {:captureState "%0000032e"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 72bv64), Gamma_R0; - R30, Gamma_R30 := 2096bv64, true; - call strlen(); - assert R0 == 13bv64; - assume {:captureState "l00000343"} true; - R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R1, Gamma_R1 := bvadd64(R0, 72bv64), Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 96bv64), Gamma_R0; - R30, Gamma_R30 := 2124bv64, true; - call memcpy(); - assume {:captureState "l0000036d"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 96bv64), Gamma_R0; - R30, Gamma_R30 := 2136bv64, true; - call puts(); - assume {:captureState "l00000380"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 72bv64), Gamma_R0; - R30, Gamma_R30 := 2148bv64, true; - call puts(); - assume {:captureState "l00000392"} true; - R0, Gamma_R0 := 0bv64, true; - 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, 32bv64), Gamma_R31; - goto l00000343; - - l00000343: - assume {:captureState "l00000343"} true; - R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R1, Gamma_R1 := bvadd64(R0, 72bv64), Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 96bv64), Gamma_R0; - R30, Gamma_R30 := 2124bv64, true; - call memcpy(); - goto l0000036d; - - l0000036d: - assume {:captureState "l0000036d"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 96bv64), Gamma_R0; - R30, Gamma_R30 := 2136bv64, true; - call puts(); - goto l00000380; - - l00000380: - assume {:captureState "l00000380"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 72bv64), Gamma_R0; - R30, Gamma_R30 := 2148bv64, true; - call puts(); - goto l00000392; - - l00000392: - assume {:captureState "l00000392"} true; - R0, Gamma_R0 := 0bv64, true; - 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, 32bv64), Gamma_R31; - return; -} - - - -procedure memcpy(); - requires bvugt64(R0, bvadd64(R1, R2)) || bvugt64(R1, bvadd64(R0, R2)); - requires bvugt64(bvadd64(R0, R2), R0) && bvugt64(bvadd64(R1, R2), R1); - free requires memory_load8_le(mem, 2180bv64) == 1bv8; - free requires memory_load8_le(mem, 2181bv64) == 0bv8; - free requires memory_load8_le(mem, 2182bv64) == 2bv8; - free requires memory_load8_le(mem, 2183bv64) == 0bv8; - free requires memory_load8_le(mem, 130504bv64) == 16bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 192bv8; - free requires memory_load8_le(mem, 130513bv64) == 7bv8; - 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) == 20bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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, 131136bv64) == 64bv8; - free requires memory_load8_le(mem, 131137bv64) == 0bv8; - free requires memory_load8_le(mem, 131138bv64) == 2bv8; - free requires memory_load8_le(mem, 131139bv64) == 0bv8; - free requires memory_load8_le(mem, 131140bv64) == 0bv8; - free requires memory_load8_le(mem, 131141bv64) == 0bv8; - free requires memory_load8_le(mem, 131142bv64) == 0bv8; - free requires memory_load8_le(mem, 131143bv64) == 0bv8; - modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - 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, 2180bv64) == 1bv8; - free ensures memory_load8_le(mem, 2181bv64) == 0bv8; - free ensures memory_load8_le(mem, 2182bv64) == 2bv8; - free ensures memory_load8_le(mem, 2183bv64) == 0bv8; - free ensures memory_load8_le(mem, 130504bv64) == 16bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 192bv8; - free ensures memory_load8_le(mem, 130513bv64) == 7bv8; - 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) == 20bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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, 131136bv64) == 64bv8; - free ensures memory_load8_le(mem, 131137bv64) == 0bv8; - free ensures memory_load8_le(mem, 131138bv64) == 2bv8; - free ensures memory_load8_le(mem, 131139bv64) == 0bv8; - free ensures memory_load8_le(mem, 131140bv64) == 0bv8; - free ensures memory_load8_le(mem, 131141bv64) == 0bv8; - free ensures memory_load8_le(mem, 131142bv64) == 0bv8; - free ensures memory_load8_le(mem, 131143bv64) == 0bv8; - - - -procedure puts(); - free requires memory_load8_le(mem, 2180bv64) == 1bv8; - free requires memory_load8_le(mem, 2181bv64) == 0bv8; - free requires memory_load8_le(mem, 2182bv64) == 2bv8; - free requires memory_load8_le(mem, 2183bv64) == 0bv8; - free requires memory_load8_le(mem, 130504bv64) == 16bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 192bv8; - free requires memory_load8_le(mem, 130513bv64) == 7bv8; - 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) == 20bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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, 131136bv64) == 64bv8; - free requires memory_load8_le(mem, 131137bv64) == 0bv8; - free requires memory_load8_le(mem, 131138bv64) == 2bv8; - free requires memory_load8_le(mem, 131139bv64) == 0bv8; - free requires memory_load8_le(mem, 131140bv64) == 0bv8; - free requires memory_load8_le(mem, 131141bv64) == 0bv8; - free requires memory_load8_le(mem, 131142bv64) == 0bv8; - free requires memory_load8_le(mem, 131143bv64) == 0bv8; - modifies Gamma_R16, Gamma_R17, R16, R17; - free ensures memory_load8_le(mem, 2180bv64) == 1bv8; - free ensures memory_load8_le(mem, 2181bv64) == 0bv8; - free ensures memory_load8_le(mem, 2182bv64) == 2bv8; - free ensures memory_load8_le(mem, 2183bv64) == 0bv8; - free ensures memory_load8_le(mem, 130504bv64) == 16bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 192bv8; - free ensures memory_load8_le(mem, 130513bv64) == 7bv8; - 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) == 20bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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, 131136bv64) == 64bv8; - free ensures memory_load8_le(mem, 131137bv64) == 0bv8; - free ensures memory_load8_le(mem, 131138bv64) == 2bv8; - free ensures memory_load8_le(mem, 131139bv64) == 0bv8; - free ensures memory_load8_le(mem, 131140bv64) == 0bv8; - free ensures memory_load8_le(mem, 131141bv64) == 0bv8; - free ensures memory_load8_le(mem, 131142bv64) == 0bv8; - free ensures memory_load8_le(mem, 131143bv64) == 0bv8; - - - -procedure strlen(); - free requires memory_load8_le(mem, 2180bv64) == 1bv8; - free requires memory_load8_le(mem, 2181bv64) == 0bv8; - free requires memory_load8_le(mem, 2182bv64) == 2bv8; - free requires memory_load8_le(mem, 2183bv64) == 0bv8; - free requires memory_load8_le(mem, 130504bv64) == 16bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 192bv8; - free requires memory_load8_le(mem, 130513bv64) == 7bv8; - 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) == 20bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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, 131136bv64) == 64bv8; - free requires memory_load8_le(mem, 131137bv64) == 0bv8; - free requires memory_load8_le(mem, 131138bv64) == 2bv8; - free requires memory_load8_le(mem, 131139bv64) == 0bv8; - free requires memory_load8_le(mem, 131140bv64) == 0bv8; - free requires memory_load8_le(mem, 131141bv64) == 0bv8; - free requires memory_load8_le(mem, 131142bv64) == 0bv8; - free requires memory_load8_le(mem, 131143bv64) == 0bv8; - modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; - 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, 2180bv64) == 1bv8; - free ensures memory_load8_le(mem, 2181bv64) == 0bv8; - free ensures memory_load8_le(mem, 2182bv64) == 2bv8; - free ensures memory_load8_le(mem, 2183bv64) == 0bv8; - free ensures memory_load8_le(mem, 130504bv64) == 16bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 192bv8; - free ensures memory_load8_le(mem, 130513bv64) == 7bv8; - 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) == 20bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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, 131136bv64) == 64bv8; - free ensures memory_load8_le(mem, 131137bv64) == 0bv8; - free ensures memory_load8_le(mem, 131138bv64) == 2bv8; - free ensures memory_load8_le(mem, 131139bv64) == 0bv8; - free ensures memory_load8_le(mem, 131140bv64) == 0bv8; - free ensures memory_load8_le(mem, 131141bv64) == 0bv8; - free ensures memory_load8_le(mem, 131142bv64) == 0bv8; - free ensures memory_load8_le(mem, 131143bv64) == 0bv8; - - - -function {:bvbuiltin "bvuge"} bvuge64(bv64, bv64) : bool; - -function {:bvbuiltin "bvugt"} bvugt64(bv64, bv64) : 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; - -function {:inline} in_bounds64(base: bv64, len: bv64, i: bv64) : 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))) -} - -// auto-generated lambda function -function lambda#0(l#0: bv64, l#1: bv64, l#2: bool, l#3: [bv64]bool) : [bv64]bool -uses { -axiom (forall l#0: bv64, l#1: bv64, l#2: bool, l#3: [bv64]bool, i: bv64 :: - { lambda#0(l#0, l#1, l#2, l#3)[i] } - lambda#0(l#0, l#1, l#2, l#3)[i] - == (if in_bounds64(l#0, l#1, i) then l#2 else l#3[i])); -} - -// auto-generated lambda function -function lambda#1(l#0: bv64, l#1: bv64, l#2: bv64, l#3: bv64, l#4: [bv64]bv8) : [bv64]bv8 -uses { -axiom (forall l#0: bv64, l#1: bv64, l#2: bv64, l#3: bv64, l#4: [bv64]bv8, i: bv64 :: - { lambda#1(l#0, l#1, l#2, l#3, l#4)[i] } - lambda#1(l#0, l#1, l#2, l#3, l#4)[i] - == (if in_bounds64(l#0, l#1, i) - then byte_extract64_64(l#2, bvsub64(i, l#3)) - else l#4[i])); -} diff --git a/examples/memcpy-variants/example.bpl.orig b/examples/memcpy-variants/example.bpl.orig deleted file mode 100644 index 1fd507a9d..000000000 --- a/examples/memcpy-variants/example.bpl.orig +++ /dev/null @@ -1,691 +0,0 @@ -var {:extern} Gamma_R0: bool; -var {:extern} Gamma_R1: bool; -var {:extern} Gamma_R16: bool; -var {:extern} Gamma_R17: bool; -var {:extern} Gamma_R2: 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} R2: 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 == 131184bv64); -const {:extern} $password_addr: bv64; -axiom ($password_addr == 131152bv64); -const {:extern} $stext_addr: bv64; -axiom ($stext_addr == 131160bv64); -function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { - (if ((index == bvadd64($stext_addr, 9bv64)) || ((index == bvadd64($stext_addr, 8bv64)) || ((index == bvadd64($stext_addr, 7bv64)) || ((index == bvadd64($stext_addr, 6bv64)) || ((index == bvadd64($stext_addr, 5bv64)) || ((index == bvadd64($stext_addr, 4bv64)) || ((index == bvadd64($stext_addr, 3bv64)) || ((index == bvadd64($stext_addr, 2bv64)) || ((index == bvadd64($stext_addr, 1bv64)) || (index == bvadd64($stext_addr, 0bv64))))))))))) then true else (if (index == $password_addr) then false else (if (index == $buf_addr) then true else false))) -} - -function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); -function {:extern} {:bvbuiltin "bvlshr"} bvlshr16(bv16, bv16) returns (bv16); -function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) returns (bv64); -function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); -function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) returns (bv64); -function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) returns (bool); -function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) returns (bool); -function {:inline} byte_extract16_64(value: bv16, offset: bv64) returns (bv8) { - bvlshr16(value, bvmul64(offset, 8bv64)[16:0])[8:0] -} - -function {:inline} byte_extract64_64(value: bv64, offset: bv64) returns (bv8) { - bvlshr64(value, bvmul64(offset, 8bv64))[8:0] -} - -function {:extern} gamma_load16(gammaMap: [bv64]bool, index: bv64) returns (bool) { - (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]) -} - -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_store16(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { - (lambda i: bv64 :: ((if in_bounds64(index, 2bv64, i) then value else gammaMap[i]))) -} - -function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { - (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then value else gammaMap[i]))) -} - -function {:extern} gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { - gammaMap[index := value] -} - -function {:inline} in_bounds64_le(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)))) -} - -function {:extern} memory_load16_le(memory: [bv64]bv8, index: bv64) returns (bv16) { - (memory[bvadd64(index, 1bv64)] ++ memory[index]) -} - -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_store16_le(memory: [bv64]bv8, index: bv64, value: bv16) returns ([bv64]bv8) { - (lambda i: bv64 :: ((if in_bounds64(index, 2bv64, i) then byte_extract16_64(value, bvsub64(i, index)) else memory[i]))) -} - -function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) returns ([bv64]bv8) { - (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then byte_extract64_64(value, bvsub64(i, index)) else memory[i]))) -} - -function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { - memory[index := value] -} - -function {:extern} {:bvbuiltin "zero_extend 48"} zero_extend48_16(bv16) returns (bv64); -procedure {:extern} rely(); - modifies Gamma_mem, mem; - ensures (mem == old(mem)); - ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 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, 2328bv64) == 1bv8); - free requires (memory_load8_le(mem, 2329bv64) == 0bv8); - free requires (memory_load8_le(mem, 2330bv64) == 2bv8); - free requires (memory_load8_le(mem, 2331bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 80bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); - -procedure main() - modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, 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, 131136bv64) == 0bv8); - free requires (memory_load8_le(mem, 131137bv64) == 0bv8); - free requires (memory_load8_le(mem, 131138bv64) == 0bv8); - free requires (memory_load8_le(mem, 131139bv64) == 0bv8); - free requires (memory_load8_le(mem, 131140bv64) == 0bv8); - free requires (memory_load8_le(mem, 131141bv64) == 0bv8); - free requires (memory_load8_le(mem, 131142bv64) == 0bv8); - free requires (memory_load8_le(mem, 131143bv64) == 0bv8); - free requires (memory_load8_le(mem, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 0bv8); - free requires (memory_load8_le(mem, 131152bv64) == 7bv8); - 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) == 108bv8); - free requires (memory_load8_le(mem, 131161bv64) == 107bv8); - free requires (memory_load8_le(mem, 131162bv64) == 97bv8); - free requires (memory_load8_le(mem, 131163bv64) == 106bv8); - free requires (memory_load8_le(mem, 131164bv64) == 100bv8); - free requires (memory_load8_le(mem, 131165bv64) == 108bv8); - free requires (memory_load8_le(mem, 131166bv64) == 107bv8); - free requires (memory_load8_le(mem, 131167bv64) == 97bv8); - free requires (memory_load8_le(mem, 131168bv64) == 106bv8); - free requires (memory_load8_le(mem, 131169bv64) == 100bv8); - free requires (memory_load8_le(mem, 2328bv64) == 1bv8); - free requires (memory_load8_le(mem, 2329bv64) == 0bv8); - free requires (memory_load8_le(mem, 2330bv64) == 2bv8); - free requires (memory_load8_le(mem, 2331bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 80bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 0bv8); - free ensures (Gamma_R29 == old(Gamma_R29)); - free ensures (Gamma_R31 == old(Gamma_R31)); - free ensures (R29 == old(R29)); - free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); -{ - var #4: bv64; - var Gamma_#4: bool; - lmain: - assume {:captureState "lmain"} true; - #4, Gamma_#4 := bvadd64(R31, 18446744073709551584bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); - assume {:captureState "%00000364"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); - assume {:captureState "%0000036a"} true; - R31, Gamma_R31 := #4, Gamma_#4; - R29, Gamma_R29 := R31, Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), true); - assume {:captureState "%0000037b"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), true); - assume {:captureState "%00000382"} true; - R0, Gamma_R0 := 10bv64, true; - R30, Gamma_R30 := 2156bv64, true; - call malloc(); - goto l00000391; - l00000391: - assume {:captureState "l00000391"} true; - R1, Gamma_R1 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - assert (L(mem, R0) ==> Gamma_R1); - mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%000003a8"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - R2, Gamma_R2 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 131072bv64, true; - R1, Gamma_R1 := bvadd64(R0, 88bv64), Gamma_R0; - R0, Gamma_R0 := R2, Gamma_R2; - call rely(); - R2, Gamma_R2 := memory_load64_le(mem, R1), (gamma_load64(Gamma_mem, R1) || L(mem, R1)); - call rely(); - assert (L(mem, R0) ==> Gamma_R2); - mem, Gamma_mem := memory_store64_le(mem, R0, R2), gamma_store64(Gamma_mem, R0, Gamma_R2); - assume {:captureState "%000003da"} true; - call rely(); - R1, Gamma_R1 := zero_extend48_16(memory_load16_le(mem, bvadd64(R1, 8bv64))), (gamma_load16(Gamma_mem, bvadd64(R1, 8bv64)) || L(mem, bvadd64(R1, 8bv64))); - call rely(); - assert (L(mem, bvadd64(R0, 8bv64)) ==> Gamma_R1); - mem, Gamma_mem := memory_store16_le(mem, bvadd64(R0, 8bv64), R1[16:0]), gamma_store16(Gamma_mem, bvadd64(R0, 8bv64), Gamma_R1); - assume {:captureState "%000003e9"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2228bv64, true; - call puts(); - goto l00000405; - l00000405: - assume {:captureState "l00000405"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R0); - assume {:captureState "%00000423"} true; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - assert (L(mem, R0) ==> true); - mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%00000431"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R2, Gamma_R2 := 10bv64, true; - R1, Gamma_R1 := 1bv64, true; - R30, Gamma_R30 := 2280bv64, true; - call memset(); - goto l00000457; - l00000457: - assume {:captureState "l00000457"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2296bv64, true; - call #free(); - goto l00000471; - l00000471: - assume {:captureState "l00000471"} true; - R0, Gamma_R0 := 0bv64, true; - 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, 32bv64), 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, 2328bv64) == 1bv8); - free requires (memory_load8_le(mem, 2329bv64) == 0bv8); - free requires (memory_load8_le(mem, 2330bv64) == 2bv8); - free requires (memory_load8_le(mem, 2331bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 80bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 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 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, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); - -procedure memset(); - modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - requires Gamma_R1; - free requires (memory_load8_le(mem, 2328bv64) == 1bv8); - free requires (memory_load8_le(mem, 2329bv64) == 0bv8); - free requires (memory_load8_le(mem, 2330bv64) == 2bv8); - free requires (memory_load8_le(mem, 2331bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 80bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 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_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, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); - -procedure puts(); - modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2328bv64) == 1bv8); - free requires (memory_load8_le(mem, 2329bv64) == 0bv8); - free requires (memory_load8_le(mem, 2330bv64) == 2bv8); - free requires (memory_load8_le(mem, 2331bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 80bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); diff --git a/examples/memcpy-variants/example.bpl.rej b/examples/memcpy-variants/example.bpl.rej deleted file mode 100644 index 1a0590f5c..000000000 --- a/examples/memcpy-variants/example.bpl.rej +++ /dev/null @@ -1,12 +0,0 @@ ---- example.bpl 2023-11-15 10:21:51.302483904 +1000 -+++ examplesetcommented.bpl 2023-11-15 10:22:53.783375817 +1000 -@@ -395,7 +395,8 @@ - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - assert (L(mem, R0) ==> true); -- mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); -+ // commented out -+ // mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%00000418"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 120bv64), Gamma_R0; diff --git a/examples/memcpy-variants/iterator.log b/examples/memcpy-variants/iterator.log deleted file mode 100644 index fe4c02b08..000000000 --- a/examples/memcpy-variants/iterator.log +++ /dev/null @@ -1,1007 +0,0 @@ -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :produce-models true) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |iteratorspecbpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |iteratorspecbpl.65:57| - :skolemid |10| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |iteratorspecbpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |iteratorspecbpl.49:56| - :skolemid |9| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |iteratorspecbpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |iteratorspecbpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |iteratorspecbpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $copiedtext_addr #x0000000000020050)) -(assert (= $text_addr #x0000000000020038)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |iteratorspecbpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |iteratorspecbpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(set-info :boogie-vc-id rely_transitive_split0) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 1) true) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :produce-models true) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |iteratorspecbpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |iteratorspecbpl.65:57| - :skolemid |10| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |iteratorspecbpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |iteratorspecbpl.49:56| - :skolemid |9| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |iteratorspecbpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |iteratorspecbpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |iteratorspecbpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $copiedtext_addr #x0000000000020050)) -(assert (= $text_addr #x0000000000020038)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |iteratorspecbpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |iteratorspecbpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(set-info :boogie-vc-id rely_transitive_split1) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (= mem@0 mem) (=> (and (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x0000000000000794) #x01)) (and (= (memory_load8_le mem@0 #x0000000000000795) #x00) (= (memory_load8_le mem@0 #x0000000000000796) #x02))) (=> (and (and (and (= (memory_load8_le mem@0 #x0000000000000797) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #x50)) (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x07) (= (memory_load8_le mem@0 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x07) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #x54)) (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x07) (= (memory_load8_le mem@0 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020030) #x30)) (and (= (memory_load8_le mem@0 #x0000000000020031) #x00) (= (memory_load8_le mem@0 #x0000000000020032) #x02))) (and (and (= (memory_load8_le mem@0 #x0000000000020033) #x00) (= (memory_load8_le mem@0 #x0000000000020034) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020035) #x00) (= (memory_load8_le mem@0 #x0000000000020036) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020037) #x00) (= mem@1 mem@0)) (and (= Gamma_mem@1 Gamma_mem@0) (= (memory_load8_le mem@1 #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem@1 #x0000000000000795) #x00) (= (memory_load8_le mem@1 #x0000000000000796) #x02)) (and (= (memory_load8_le mem@1 #x0000000000000797) #x00) (= (memory_load8_le mem@1 #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdc9) #x07) (= (memory_load8_le mem@1 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcb) #x00) (= (memory_load8_le mem@1 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdcd) #x00) (= (memory_load8_le mem@1 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcf) #x00) (= (memory_load8_le mem@1 #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd1) #x07) (= (memory_load8_le mem@1 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd3) #x00) (= (memory_load8_le mem@1 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd5) #x00) (= (memory_load8_le mem@1 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd7) #x00) (= (memory_load8_le mem@1 #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffd9) #x07) (= (memory_load8_le mem@1 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdb) #x00) (= (memory_load8_le mem@1 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffdd) #x00) (= (memory_load8_le mem@1 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdf) #x00) (= (memory_load8_le mem@1 #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020031) #x00) (= (memory_load8_le mem@1 #x0000000000020032) #x02)) (and (= (memory_load8_le mem@1 #x0000000000020033) #x00) (= (memory_load8_le mem@1 #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000020035) #x00) (= (memory_load8_le mem@1 #x0000000000020036) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020037) #x00) (= (ControlFlow 0 2) (- 0 1)))))))) (= mem@1 mem))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :produce-models true) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |iteratorspecbpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |iteratorspecbpl.65:57| - :skolemid |10| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |iteratorspecbpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |iteratorspecbpl.49:56| - :skolemid |9| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |iteratorspecbpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |iteratorspecbpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |iteratorspecbpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $copiedtext_addr #x0000000000020050)) -(assert (= $text_addr #x0000000000020038)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |iteratorspecbpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |iteratorspecbpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(set-info :boogie-vc-id rely_transitive_split2) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (and (= mem@0 mem) (= Gamma_mem@0 Gamma_mem)) (=> (and (and (= (memory_load8_le mem@0 #x0000000000000794) #x01) (= (memory_load8_le mem@0 #x0000000000000795) #x00)) (and (= (memory_load8_le mem@0 #x0000000000000796) #x02) (= (memory_load8_le mem@0 #x0000000000000797) #x00))) (=> (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc8) #x50) (= (memory_load8_le mem@0 #x000000000001fdc9) #x07)) (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x00) (= (memory_load8_le mem@0 #x000000000001fdd1) #x07)) (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd8) #x54) (= (memory_load8_le mem@0 #x000000000001ffd9) #x07)) (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x0000000000020030) #x30) (= (memory_load8_le mem@0 #x0000000000020031) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020032) #x02) (= (memory_load8_le mem@0 #x0000000000020033) #x00))) (and (and (= (memory_load8_le mem@0 #x0000000000020034) #x00) (= (memory_load8_le mem@0 #x0000000000020035) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020036) #x00) (= (memory_load8_le mem@0 #x0000000000020037) #x00)))) (and (and (and (= mem@1 mem@0) (= Gamma_mem@1 Gamma_mem@0)) (and (= (memory_load8_le mem@1 #x0000000000000794) #x01) (= (memory_load8_le mem@1 #x0000000000000795) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000000796) #x02) (= (memory_load8_le mem@1 #x0000000000000797) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdc8) #x50) (= (memory_load8_le mem@1 #x000000000001fdc9) #x07)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdca) #x00) (= (memory_load8_le mem@1 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcc) #x00) (= (memory_load8_le mem@1 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdce) #x00) (= (memory_load8_le mem@1 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd0) #x00) (= (memory_load8_le mem@1 #x000000000001fdd1) #x07)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd2) #x00) (= (memory_load8_le mem@1 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd4) #x00) (= (memory_load8_le mem@1 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd6) #x00) (= (memory_load8_le mem@1 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffd8) #x54) (= (memory_load8_le mem@1 #x000000000001ffd9) #x07))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffda) #x00) (= (memory_load8_le mem@1 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdc) #x00) (= (memory_load8_le mem@1 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffde) #x00) (= (memory_load8_le mem@1 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020030) #x30) (= (memory_load8_le mem@1 #x0000000000020031) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020032) #x02) (= (memory_load8_le mem@1 #x0000000000020033) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020034) #x00) (= (memory_load8_le mem@1 #x0000000000020035) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000020036) #x00) (= (memory_load8_le mem@1 #x0000000000020037) #x00)) (and (= mem@1 mem) (= (ControlFlow 0 2) (- 0 1)))))))) (= Gamma_mem@1 Gamma_mem))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :produce-models true) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |iteratorspecbpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |iteratorspecbpl.65:57| - :skolemid |10| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |iteratorspecbpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |iteratorspecbpl.49:56| - :skolemid |9| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |iteratorspecbpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |iteratorspecbpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |iteratorspecbpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $copiedtext_addr #x0000000000020050)) -(assert (= $text_addr #x0000000000020038)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |iteratorspecbpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |iteratorspecbpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun mem@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@3 () (Array (_ BitVec 64) Bool)) -(set-info :boogie-vc-id rely_transitive_smoke0) -(set-option :timeout 10000) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 5) (let ((anon0_correct (=> (= mem@2 mem) (=> (and (and (= Gamma_mem@2 Gamma_mem) (= (memory_load8_le mem@2 #x0000000000000794) #x01)) (and (= (memory_load8_le mem@2 #x0000000000000795) #x00) (= (memory_load8_le mem@2 #x0000000000000796) #x02))) (=> (and (and (and (= (memory_load8_le mem@2 #x0000000000000797) #x00) (= (memory_load8_le mem@2 #x000000000001fdc8) #x50)) (and (= (memory_load8_le mem@2 #x000000000001fdc9) #x07) (= (memory_load8_le mem@2 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdcb) #x00) (= (memory_load8_le mem@2 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdcd) #x00) (= (memory_load8_le mem@2 #x000000000001fdce) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcf) #x00) (= (memory_load8_le mem@2 #x000000000001fdd0) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd1) #x07) (= (memory_load8_le mem@2 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd3) #x00) (= (memory_load8_le mem@2 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd5) #x00) (= (memory_load8_le mem@2 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd7) #x00) (= (memory_load8_le mem@2 #x000000000001ffd8) #x54)) (and (= (memory_load8_le mem@2 #x000000000001ffd9) #x07) (= (memory_load8_le mem@2 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffdb) #x00) (= (memory_load8_le mem@2 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffdd) #x00) (= (memory_load8_le mem@2 #x000000000001ffde) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdf) #x00) (= (memory_load8_le mem@2 #x0000000000020030) #x30)) (and (= (memory_load8_le mem@2 #x0000000000020031) #x00) (= (memory_load8_le mem@2 #x0000000000020032) #x02))) (and (and (= (memory_load8_le mem@2 #x0000000000020033) #x00) (= (memory_load8_le mem@2 #x0000000000020034) #x00)) (and (= (memory_load8_le mem@2 #x0000000000020035) #x00) (= (memory_load8_le mem@2 #x0000000000020036) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x0000000000020037) #x00) (= mem@3 mem@2)) (and (= Gamma_mem@3 Gamma_mem@2) (= (memory_load8_le mem@3 #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem@3 #x0000000000000795) #x00) (= (memory_load8_le mem@3 #x0000000000000796) #x02)) (and (= (memory_load8_le mem@3 #x0000000000000797) #x00) (= (memory_load8_le mem@3 #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem@3 #x000000000001fdc9) #x07) (= (memory_load8_le mem@3 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdcb) #x00) (= (memory_load8_le mem@3 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdcd) #x00) (= (memory_load8_le mem@3 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdcf) #x00) (= (memory_load8_le mem@3 #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000001fdd1) #x07) (= (memory_load8_le mem@3 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd3) #x00) (= (memory_load8_le mem@3 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdd5) #x00) (= (memory_load8_le mem@3 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd7) #x00) (= (memory_load8_le mem@3 #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem@3 #x000000000001ffd9) #x07) (= (memory_load8_le mem@3 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffdb) #x00) (= (memory_load8_le mem@3 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001ffdd) #x00) (= (memory_load8_le mem@3 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffdf) #x00) (= (memory_load8_le mem@3 #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem@3 #x0000000000020031) #x00) (= (memory_load8_le mem@3 #x0000000000020032) #x02)) (and (= (memory_load8_le mem@3 #x0000000000020033) #x00) (= (memory_load8_le mem@3 #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem@3 #x0000000000020035) #x00) (= (memory_load8_le mem@3 #x0000000000020036) #x00)) (and (= (memory_load8_le mem@3 #x0000000000020037) #x00) (= (ControlFlow 0 2) (- 0 4)))))))) false)))))) -(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 5) 2) anon0_correct))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(get-info :reason-unknown) -(get-model) -(assert (not (= (ControlFlow 0 2) (- 4)))) -(check-sat) -(pop 1) -; Invalid -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :produce-models true) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |iteratorspecbpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |iteratorspecbpl.65:57| - :skolemid |10| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |iteratorspecbpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |iteratorspecbpl.49:56| - :skolemid |9| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |iteratorspecbpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |iteratorspecbpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |iteratorspecbpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $copiedtext_addr #x0000000000020050)) -(assert (= $text_addr #x0000000000020038)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |iteratorspecbpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |iteratorspecbpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Invalid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(set-info :boogie-vc-id main_split0) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 1) true) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :produce-models true) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |iteratorspecbpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |iteratorspecbpl.65:57| - :skolemid |10| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |iteratorspecbpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |iteratorspecbpl.49:56| - :skolemid |9| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |iteratorspecbpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |iteratorspecbpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |iteratorspecbpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $copiedtext_addr #x0000000000020050)) -(assert (= $text_addr #x0000000000020038)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |iteratorspecbpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |iteratorspecbpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun R1@0 () (_ BitVec 64)) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun malloc_count () Int) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(set-info :boogie-vc-id main_split1) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xfffffffffffffff0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (= R1@0 (bvadd #x0000000000020000 #x0000000000000038))) (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000050)) (= (ControlFlow 0 2) (- 0 1)))) (or (bvugt R0@0 (bvadd R1@0 #x000000000000000e)) (bvugt R1@0 (bvadd R0@0 #x000000000000000e)))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020028) #x00)) (and (= (memory_load8_le mem #x0000000000020029) #x00) (= (memory_load8_le mem #x000000000002002a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002002b) #x00) (= (memory_load8_le mem #x000000000002002c) #x00)) (and (= (memory_load8_le mem #x000000000002002d) #x00) (= (memory_load8_le mem #x000000000002002e) #x00))) (and (and (= (memory_load8_le mem #x000000000002002f) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)) (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00)) (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00))) (and (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (memory_load8_le mem #x0000000000020038) #x42)) (and (= (memory_load8_le mem #x0000000000020039) #x41) (= (memory_load8_le mem #x000000000002003a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x49) (= (memory_load8_le mem #x000000000002003c) #x4c)) (and (= (memory_load8_le mem #x000000000002003d) #x20) (= (memory_load8_le mem #x000000000002003e) #x56))) (and (and (= (memory_load8_le mem #x000000000002003f) #x65) (= (memory_load8_le mem #x0000000000020040) #x72)) (and (= (memory_load8_le mem #x0000000000020041) #x69) (= (memory_load8_le mem #x0000000000020042) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x69) (= (memory_load8_le mem #x0000000000020044) #x65)) (and (= (memory_load8_le mem #x0000000000020045) #x72) (= (memory_load8_le mem #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem #x0000000000000795) #x00) (= (memory_load8_le mem #x0000000000000796) #x02)) (and (= (memory_load8_le mem #x0000000000000797) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x07) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x07) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)) (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00)) (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :produce-models true) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |iteratorspecbpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |iteratorspecbpl.65:57| - :skolemid |10| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |iteratorspecbpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |iteratorspecbpl.49:56| - :skolemid |9| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |iteratorspecbpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |iteratorspecbpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |iteratorspecbpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $copiedtext_addr #x0000000000020050)) -(assert (= $text_addr #x0000000000020038)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |iteratorspecbpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |iteratorspecbpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun R1@0 () (_ BitVec 64)) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun malloc_count () Int) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(set-info :boogie-vc-id main_split2) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xfffffffffffffff0)) (=> (and (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (and (and (= R1@0 (bvadd #x0000000000020000 #x0000000000000038)) (= R0@0 (bvadd #x0000000000020000 #x0000000000000050))) (and (or (bvugt R0@0 (bvadd R1@0 #x000000000000000e)) (bvugt R1@0 (bvadd R0@0 #x000000000000000e))) (= (ControlFlow 0 2) (- 0 1))))) (and (bvugt (bvadd R0@0 #x000000000000000e) R0@0) (bvugt (bvadd R1@0 #x000000000000000e) R1@0)))))) -(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020028) #x00)) (and (= (memory_load8_le mem #x0000000000020029) #x00) (= (memory_load8_le mem #x000000000002002a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002002b) #x00) (= (memory_load8_le mem #x000000000002002c) #x00)) (and (= (memory_load8_le mem #x000000000002002d) #x00) (= (memory_load8_le mem #x000000000002002e) #x00))) (and (and (= (memory_load8_le mem #x000000000002002f) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)) (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00)) (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00))) (and (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (memory_load8_le mem #x0000000000020038) #x42)) (and (= (memory_load8_le mem #x0000000000020039) #x41) (= (memory_load8_le mem #x000000000002003a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x49) (= (memory_load8_le mem #x000000000002003c) #x4c)) (and (= (memory_load8_le mem #x000000000002003d) #x20) (= (memory_load8_le mem #x000000000002003e) #x56))) (and (and (= (memory_load8_le mem #x000000000002003f) #x65) (= (memory_load8_le mem #x0000000000020040) #x72)) (and (= (memory_load8_le mem #x0000000000020041) #x69) (= (memory_load8_le mem #x0000000000020042) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x69) (= (memory_load8_le mem #x0000000000020044) #x65)) (and (= (memory_load8_le mem #x0000000000020045) #x72) (= (memory_load8_le mem #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem #x0000000000000795) #x00) (= (memory_load8_le mem #x0000000000000796) #x02)) (and (= (memory_load8_le mem #x0000000000000797) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x07) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x07) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)) (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00)) (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :produce-models true) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |iteratorspecbpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |iteratorspecbpl.65:57| - :skolemid |10| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |iteratorspecbpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |iteratorspecbpl.49:56| - :skolemid |9| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |iteratorspecbpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |iteratorspecbpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |iteratorspecbpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $copiedtext_addr #x0000000000020050)) -(assert (= $text_addr #x0000000000020038)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |iteratorspecbpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |iteratorspecbpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun R1@0 () (_ BitVec 64)) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun malloc_count () Int) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(set-info :boogie-vc-id main_split3) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xfffffffffffffff0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (= R1@0 (bvadd #x0000000000020000 #x0000000000000038))) (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000050)) (or (bvugt R0@0 (bvadd R1@0 #x000000000000000e)) (bvugt R1@0 (bvadd R0@0 #x000000000000000e))))) (and (and (bvugt (bvadd R0@0 #x000000000000000e) R0@0) (bvugt (bvadd R1@0 #x000000000000000e) R1@0)) (= (ControlFlow 0 2) (- 0 1)))) (exists ((i@@1 (_ BitVec 64)) ) (! (and (bvuge i@@1 #x0000000000000000) (bvult i@@1 #x000000000000000e)) - :qid |iteratorspecbpl.269:20| - :skolemid |7| -))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020028) #x00)) (and (= (memory_load8_le mem #x0000000000020029) #x00) (= (memory_load8_le mem #x000000000002002a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002002b) #x00) (= (memory_load8_le mem #x000000000002002c) #x00)) (and (= (memory_load8_le mem #x000000000002002d) #x00) (= (memory_load8_le mem #x000000000002002e) #x00))) (and (and (= (memory_load8_le mem #x000000000002002f) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)) (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00)) (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00))) (and (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (memory_load8_le mem #x0000000000020038) #x42)) (and (= (memory_load8_le mem #x0000000000020039) #x41) (= (memory_load8_le mem #x000000000002003a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x49) (= (memory_load8_le mem #x000000000002003c) #x4c)) (and (= (memory_load8_le mem #x000000000002003d) #x20) (= (memory_load8_le mem #x000000000002003e) #x56))) (and (and (= (memory_load8_le mem #x000000000002003f) #x65) (= (memory_load8_le mem #x0000000000020040) #x72)) (and (= (memory_load8_le mem #x0000000000020041) #x69) (= (memory_load8_le mem #x0000000000020042) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x69) (= (memory_load8_le mem #x0000000000020044) #x65)) (and (= (memory_load8_le mem #x0000000000020045) #x72) (= (memory_load8_le mem #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem #x0000000000000795) #x00) (= (memory_load8_le mem #x0000000000000796) #x02)) (and (= (memory_load8_le mem #x0000000000000797) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x07) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x07) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)) (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00)) (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(get-info :reason-unknown) -(get-model) -(assert (not (= (ControlFlow 0 2) (- 1)))) -(check-sat) -(pop 1) -; Invalid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :produce-models true) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |iteratorspecbpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |iteratorspecbpl.65:57| - :skolemid |10| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |iteratorspecbpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |iteratorspecbpl.49:56| - :skolemid |9| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |iteratorspecbpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |iteratorspecbpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |iteratorspecbpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $copiedtext_addr #x0000000000020050)) -(assert (= $text_addr #x0000000000020038)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |iteratorspecbpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |iteratorspecbpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Invalid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun R1@0 () (_ BitVec 64)) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29@0 () (_ BitVec 64)) -(declare-fun Gamma_R29@0 () Bool) -(declare-fun R30@0 () (_ BitVec 64)) -(declare-fun Gamma_R30@0 () Bool) -(declare-fun R31@0 () (_ BitVec 64)) -(declare-fun malloc_count () Int) -(set-info :boogie-vc-id main_split4) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xfffffffffffffff0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (= R1@0 (bvadd #x0000000000020000 #x0000000000000038))) (=> (and (and (and (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000050)) (or (bvugt R0@0 (bvadd R1@0 #x000000000000000e)) (bvugt R1@0 (bvadd R0@0 #x000000000000000e)))) (and (bvugt (bvadd R0@0 #x000000000000000e) R0@0) (bvugt (bvadd R1@0 #x000000000000000e) R1@0))) (and (and (exists ((i@@1 (_ BitVec 64)) ) (! (and (bvuge i@@1 #x0000000000000000) (bvult i@@1 #x000000000000000e)) - :qid |iteratorspecbpl.269:20| - :skolemid |7| -)) (forall ((i@@2 (_ BitVec 64)) ) (! (=> (and (and (and (bvuge i@@2 #x0000000000000000) (bvult i@@2 #x000000000000000e)) (bvuge (bvadd R0@1 i@@2) R1@0)) (bvuge (bvadd R0@1 i@@2) R0@1)) (and (= R0@1 #x0000000000000005) (= (select mem@0 (bvadd R0@1 i@@2)) (memory_load8_le mem (bvadd R1@0 i@@2))))) - :qid |iteratorspecbpl.306:19| - :skolemid |8| - :pattern ( (select mem@0 i@@2)) -))) (and (= (memory_load8_le mem@0 #x0000000000000794) #x01) (= (memory_load8_le mem@0 #x0000000000000795) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000000796) #x02) (= (memory_load8_le mem@0 #x0000000000000797) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdc8) #x50) (= (memory_load8_le mem@0 #x000000000001fdc9) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00))))) (=> (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x00) (= (memory_load8_le mem@0 #x000000000001fdd1) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffd8) #x54) (= (memory_load8_le mem@0 #x000000000001ffd9) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020030) #x30) (= (memory_load8_le mem@0 #x0000000000020031) #x00))) (and (and (= (memory_load8_le mem@0 #x0000000000020032) #x02) (= (memory_load8_le mem@0 #x0000000000020033) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020034) #x00) (= (memory_load8_le mem@0 #x0000000000020035) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020036) #x00) (= (memory_load8_le mem@0 #x0000000000020037) #x00)) (and (= R29@0 (memory_load64_le stack@1 |#4@0|)) (= Gamma_R29@0 (gamma_load64 Gamma_stack@1 |#4@0|)))) (and (and (= R30@0 (memory_load64_le stack@1 (bvadd |#4@0| #x0000000000000008))) (= Gamma_R30@0 (gamma_load64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000008)))) (and (= R31@0 (bvadd |#4@0| #x0000000000000010)) (= (ControlFlow 0 2) (- 0 1))))))) (and (and (and (and (and (and (and (and (and (and (and (and (= #x42 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000000))) (= #x41 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000001)))) (= #x53 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000002)))) (= #x49 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000003)))) (= #x4c (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000004)))) (= #x20 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000005)))) (= #x56 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000006)))) (= #x65 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000007)))) (= #x72 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000008)))) (= #x69 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000009)))) (= #x66 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000a)))) (= (= #x69 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000b))) (= #x65 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000c))))) (= #x72 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000d))))))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020028) #x00)) (and (= (memory_load8_le mem #x0000000000020029) #x00) (= (memory_load8_le mem #x000000000002002a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002002b) #x00) (= (memory_load8_le mem #x000000000002002c) #x00)) (and (= (memory_load8_le mem #x000000000002002d) #x00) (= (memory_load8_le mem #x000000000002002e) #x00))) (and (and (= (memory_load8_le mem #x000000000002002f) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)) (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00)) (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00))) (and (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (memory_load8_le mem #x0000000000020038) #x42)) (and (= (memory_load8_le mem #x0000000000020039) #x41) (= (memory_load8_le mem #x000000000002003a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x49) (= (memory_load8_le mem #x000000000002003c) #x4c)) (and (= (memory_load8_le mem #x000000000002003d) #x20) (= (memory_load8_le mem #x000000000002003e) #x56))) (and (and (= (memory_load8_le mem #x000000000002003f) #x65) (= (memory_load8_le mem #x0000000000020040) #x72)) (and (= (memory_load8_le mem #x0000000000020041) #x69) (= (memory_load8_le mem #x0000000000020042) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x69) (= (memory_load8_le mem #x0000000000020044) #x65)) (and (= (memory_load8_le mem #x0000000000020045) #x72) (= (memory_load8_le mem #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem #x0000000000000795) #x00) (= (memory_load8_le mem #x0000000000000796) #x02)) (and (= (memory_load8_le mem #x0000000000000797) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x07) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x07) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)) (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00)) (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(get-info :reason-unknown) -(get-model) -(assert (not (= (ControlFlow 0 2) (- 1)))) -(check-sat) -(pop 1) -; Invalid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :produce-models true) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |iteratorspecbpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |iteratorspecbpl.65:57| - :skolemid |10| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |iteratorspecbpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |iteratorspecbpl.49:56| - :skolemid |9| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |iteratorspecbpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |iteratorspecbpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |iteratorspecbpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $copiedtext_addr #x0000000000020050)) -(assert (= $text_addr #x0000000000020038)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |iteratorspecbpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |iteratorspecbpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Invalid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun R1@0 () (_ BitVec 64)) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29@0 () (_ BitVec 64)) -(declare-fun Gamma_R29@0 () Bool) -(declare-fun R30@0 () (_ BitVec 64)) -(declare-fun Gamma_R30@0 () Bool) -(declare-fun R31@0 () (_ BitVec 64)) -(declare-fun malloc_count () Int) -(set-info :boogie-vc-id main_split5) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xfffffffffffffff0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (= R1@0 (bvadd #x0000000000020000 #x0000000000000038))) (=> (and (and (and (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000050)) (or (bvugt R0@0 (bvadd R1@0 #x000000000000000e)) (bvugt R1@0 (bvadd R0@0 #x000000000000000e)))) (and (bvugt (bvadd R0@0 #x000000000000000e) R0@0) (bvugt (bvadd R1@0 #x000000000000000e) R1@0))) (and (and (exists ((i@@1 (_ BitVec 64)) ) (! (and (bvuge i@@1 #x0000000000000000) (bvult i@@1 #x000000000000000e)) - :qid |iteratorspecbpl.269:20| - :skolemid |7| -)) (forall ((i@@2 (_ BitVec 64)) ) (! (=> (and (and (and (bvuge i@@2 #x0000000000000000) (bvult i@@2 #x000000000000000e)) (bvuge (bvadd R0@1 i@@2) R1@0)) (bvuge (bvadd R0@1 i@@2) R0@1)) (and (= R0@1 #x0000000000000005) (= (select mem@0 (bvadd R0@1 i@@2)) (memory_load8_le mem (bvadd R1@0 i@@2))))) - :qid |iteratorspecbpl.306:19| - :skolemid |8| - :pattern ( (select mem@0 i@@2)) -))) (and (= (memory_load8_le mem@0 #x0000000000000794) #x01) (= (memory_load8_le mem@0 #x0000000000000795) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000000796) #x02) (= (memory_load8_le mem@0 #x0000000000000797) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdc8) #x50) (= (memory_load8_le mem@0 #x000000000001fdc9) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00))))) (=> (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x00) (= (memory_load8_le mem@0 #x000000000001fdd1) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffd8) #x54) (= (memory_load8_le mem@0 #x000000000001ffd9) #x07))) (and (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020030) #x30) (= (memory_load8_le mem@0 #x0000000000020031) #x00))) (and (and (= (memory_load8_le mem@0 #x0000000000020032) #x02) (= (memory_load8_le mem@0 #x0000000000020033) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020034) #x00) (= (memory_load8_le mem@0 #x0000000000020035) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020036) #x00) (= (memory_load8_le mem@0 #x0000000000020037) #x00)) (and (= R29@0 (memory_load64_le stack@1 |#4@0|)) (= Gamma_R29@0 (gamma_load64 Gamma_stack@1 |#4@0|)))) (and (and (= R30@0 (memory_load64_le stack@1 (bvadd |#4@0| #x0000000000000008))) (= Gamma_R30@0 (gamma_load64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000008)))) (= R31@0 (bvadd |#4@0| #x0000000000000010)))))) (=> (and (and (and (and (and (and (and (and (and (and (and (and (and (= #x42 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000000))) (= #x41 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000001)))) (= #x53 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000002)))) (= #x49 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000003)))) (= #x4c (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000004)))) (= #x20 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000005)))) (= #x56 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000006)))) (= #x65 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000007)))) (= #x72 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000008)))) (= #x69 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000009)))) (= #x66 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000a)))) (= (= #x69 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000b))) (= #x65 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000c))))) (= #x72 (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000d)))) (= (ControlFlow 0 2) (- 0 1))) (and (and (and (and (and (and (and (and (and (and (and (and (and (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000000)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000000))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000001)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000001)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000002)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000002)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000003)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000003)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000004)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000004)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000005)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000005)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000006)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000006)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000007)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000007)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000008)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000008)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x0000000000000009)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x0000000000000009)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x000000000000000a)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000a)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x000000000000000b)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000b)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x000000000000000c)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000c)))) (= (memory_load8_le mem@0 (bvadd $text_addr #x000000000000000d)) (memory_load8_le mem@0 (bvadd $copiedtext_addr #x000000000000000d)))))))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020028) #x00)) (and (= (memory_load8_le mem #x0000000000020029) #x00) (= (memory_load8_le mem #x000000000002002a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002002b) #x00) (= (memory_load8_le mem #x000000000002002c) #x00)) (and (= (memory_load8_le mem #x000000000002002d) #x00) (= (memory_load8_le mem #x000000000002002e) #x00))) (and (and (= (memory_load8_le mem #x000000000002002f) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)) (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00)) (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00))) (and (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (memory_load8_le mem #x0000000000020038) #x42)) (and (= (memory_load8_le mem #x0000000000020039) #x41) (= (memory_load8_le mem #x000000000002003a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x49) (= (memory_load8_le mem #x000000000002003c) #x4c)) (and (= (memory_load8_le mem #x000000000002003d) #x20) (= (memory_load8_le mem #x000000000002003e) #x56))) (and (and (= (memory_load8_le mem #x000000000002003f) #x65) (= (memory_load8_le mem #x0000000000020040) #x72)) (and (= (memory_load8_le mem #x0000000000020041) #x69) (= (memory_load8_le mem #x0000000000020042) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x69) (= (memory_load8_le mem #x0000000000020044) #x65)) (and (= (memory_load8_le mem #x0000000000020045) #x72) (= (memory_load8_le mem #x0000000000000794) #x01))) (and (and (= (memory_load8_le mem #x0000000000000795) #x00) (= (memory_load8_le mem #x0000000000000796) #x02)) (and (= (memory_load8_le mem #x0000000000000797) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x50)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x07) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x54))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x07) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020030) #x30)))) (and (and (and (= (memory_load8_le mem #x0000000000020031) #x00) (= (memory_load8_le mem #x0000000000020032) #x02)) (and (= (memory_load8_le mem #x0000000000020033) #x00) (= (memory_load8_le mem #x0000000000020034) #x00))) (and (and (= (memory_load8_le mem #x0000000000020035) #x00) (= (memory_load8_le mem #x0000000000020036) #x00)) (and (= (memory_load8_le mem #x0000000000020037) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(get-info :reason-unknown) -(get-model) -(assert (not (= (ControlFlow 0 2) (- 1)))) -(check-sat) -(pop 1) -; Invalid -(get-info :rlimit) diff --git a/examples/memcpy-variants/simplememcpy.c b/examples/memcpy-variants/simplememcpy.c deleted file mode 100644 index e69de29bb..000000000 diff --git a/examples/memcpy-variants/smtout.log b/examples/memcpy-variants/smtout.log deleted file mode 100644 index f21eb66a9..000000000 --- a/examples/memcpy-variants/smtout.log +++ /dev/null @@ -1,688 +0,0 @@ -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.65:57| - :skolemid |11| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |examplebpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.49:56| - :skolemid |10| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |examplebpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |examplebpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |examplebpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $text_addr #x0000000000020048)) -(assert (= $copiedtext_addr #x0000000000020060)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |examplebpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |examplebpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(set-info :boogie-vc-id rely_transitive_split0) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 1) true) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.65:57| - :skolemid |11| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |examplebpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.49:56| - :skolemid |10| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |examplebpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |examplebpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |examplebpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $text_addr #x0000000000020048)) -(assert (= $copiedtext_addr #x0000000000020060)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |examplebpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |examplebpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(set-info :boogie-vc-id rely_transitive_split1) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (= mem@0 mem) (=> (and (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x0000000000000884) #x01)) (and (= (memory_load8_le mem@0 #x0000000000000885) #x00) (= (memory_load8_le mem@0 #x0000000000000886) #x02))) (=> (and (and (and (= (memory_load8_le mem@0 #x0000000000000887) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #x10)) (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #xc0)) (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x07) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #x14)) (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020040) #x40)) (and (= (memory_load8_le mem@0 #x0000000000020041) #x00) (= (memory_load8_le mem@0 #x0000000000020042) #x02))) (and (and (= (memory_load8_le mem@0 #x0000000000020043) #x00) (= (memory_load8_le mem@0 #x0000000000020044) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020045) #x00) (= (memory_load8_le mem@0 #x0000000000020046) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020047) #x00) (= mem@1 mem@0)) (and (= Gamma_mem@1 Gamma_mem@0) (= (memory_load8_le mem@1 #x0000000000000884) #x01))) (and (and (= (memory_load8_le mem@1 #x0000000000000885) #x00) (= (memory_load8_le mem@1 #x0000000000000886) #x02)) (and (= (memory_load8_le mem@1 #x0000000000000887) #x00) (= (memory_load8_le mem@1 #x000000000001fdc8) #x10)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdc9) #x08) (= (memory_load8_le mem@1 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcb) #x00) (= (memory_load8_le mem@1 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdcd) #x00) (= (memory_load8_le mem@1 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcf) #x00) (= (memory_load8_le mem@1 #x000000000001fdd0) #xc0)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd1) #x07) (= (memory_load8_le mem@1 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd3) #x00) (= (memory_load8_le mem@1 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd5) #x00) (= (memory_load8_le mem@1 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd7) #x00) (= (memory_load8_le mem@1 #x000000000001ffd8) #x14))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffd9) #x08) (= (memory_load8_le mem@1 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdb) #x00) (= (memory_load8_le mem@1 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffdd) #x00) (= (memory_load8_le mem@1 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdf) #x00) (= (memory_load8_le mem@1 #x0000000000020040) #x40)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020041) #x00) (= (memory_load8_le mem@1 #x0000000000020042) #x02)) (and (= (memory_load8_le mem@1 #x0000000000020043) #x00) (= (memory_load8_le mem@1 #x0000000000020044) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000020045) #x00) (= (memory_load8_le mem@1 #x0000000000020046) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020047) #x00) (= (ControlFlow 0 2) (- 0 1)))))))) (= mem@1 mem))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.65:57| - :skolemid |11| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |examplebpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.49:56| - :skolemid |10| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |examplebpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |examplebpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |examplebpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $text_addr #x0000000000020048)) -(assert (= $copiedtext_addr #x0000000000020060)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |examplebpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |examplebpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(set-info :boogie-vc-id rely_transitive_split2) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (and (= mem@0 mem) (= Gamma_mem@0 Gamma_mem)) (=> (and (and (= (memory_load8_le mem@0 #x0000000000000884) #x01) (= (memory_load8_le mem@0 #x0000000000000885) #x00)) (and (= (memory_load8_le mem@0 #x0000000000000886) #x02) (= (memory_load8_le mem@0 #x0000000000000887) #x00))) (=> (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc8) #x10) (= (memory_load8_le mem@0 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd0) #xc0) (= (memory_load8_le mem@0 #x000000000001fdd1) #x07)) (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd8) #x14) (= (memory_load8_le mem@0 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x0000000000020040) #x40) (= (memory_load8_le mem@0 #x0000000000020041) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020042) #x02) (= (memory_load8_le mem@0 #x0000000000020043) #x00))) (and (and (= (memory_load8_le mem@0 #x0000000000020044) #x00) (= (memory_load8_le mem@0 #x0000000000020045) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020046) #x00) (= (memory_load8_le mem@0 #x0000000000020047) #x00)))) (and (and (and (= mem@1 mem@0) (= Gamma_mem@1 Gamma_mem@0)) (and (= (memory_load8_le mem@1 #x0000000000000884) #x01) (= (memory_load8_le mem@1 #x0000000000000885) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000000886) #x02) (= (memory_load8_le mem@1 #x0000000000000887) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdc8) #x10) (= (memory_load8_le mem@1 #x000000000001fdc9) #x08)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdca) #x00) (= (memory_load8_le mem@1 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcc) #x00) (= (memory_load8_le mem@1 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdce) #x00) (= (memory_load8_le mem@1 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd0) #xc0) (= (memory_load8_le mem@1 #x000000000001fdd1) #x07)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd2) #x00) (= (memory_load8_le mem@1 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd4) #x00) (= (memory_load8_le mem@1 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd6) #x00) (= (memory_load8_le mem@1 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffd8) #x14) (= (memory_load8_le mem@1 #x000000000001ffd9) #x08))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffda) #x00) (= (memory_load8_le mem@1 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdc) #x00) (= (memory_load8_le mem@1 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffde) #x00) (= (memory_load8_le mem@1 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020040) #x40) (= (memory_load8_le mem@1 #x0000000000020041) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020042) #x02) (= (memory_load8_le mem@1 #x0000000000020043) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020044) #x00) (= (memory_load8_le mem@1 #x0000000000020045) #x00))) (and (and (= (memory_load8_le mem@1 #x0000000000020046) #x00) (= (memory_load8_le mem@1 #x0000000000020047) #x00)) (and (= mem@1 mem) (= (ControlFlow 0 2) (- 0 1)))))))) (= Gamma_mem@1 Gamma_mem))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.65:57| - :skolemid |11| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |examplebpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.49:56| - :skolemid |10| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |examplebpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |examplebpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |examplebpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $text_addr #x0000000000020048)) -(assert (= $copiedtext_addr #x0000000000020060)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |examplebpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |examplebpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(set-info :boogie-vc-id main_split0) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 1) true) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.65:57| - :skolemid |11| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |examplebpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.49:56| - :skolemid |10| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |examplebpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |examplebpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |examplebpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $text_addr #x0000000000020048)) -(assert (= $copiedtext_addr #x0000000000020060)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |examplebpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |examplebpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun Gamma_R0@0 () Bool) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun malloc_count () Int) -(set-info :boogie-vc-id main_split1) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffe0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000018) #x0000000000000000)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000018) true)))) (and (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000010) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000010) true))) (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000048)) (= Gamma_R0@0 true)))) (and (and (and (forall ((i@@1 (_ BitVec 64)) ) (! (=> (and (bvule R0@0 i@@1) (bvult i@@1 (bvadd R0@0 R0@1))) (not (= (select mem i@@1) #x00))) - :qid |examplebpl.483:19| - :skolemid |9| -)) (= (memory_load8_le mem (bvadd R0@0 R0@1)) #x00)) (and (bvult R0@0 (bvadd (bvadd R0@0 R0@1) #x0000000000000001)) (= (memory_load8_le mem #x0000000000000884) #x01))) (and (and (= (memory_load8_le mem #x0000000000000885) #x00) (= (memory_load8_le mem #x0000000000000886) #x02)) (and (= (memory_load8_le mem #x0000000000000887) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x10))))) (=> (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #xc0)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x14))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)))) (and (and (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)) (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00))) (and (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00)) (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (ControlFlow 0 2) (- 0 1))))))) (= R0@1 #x000000000000000d))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020038) #x00)) (and (= (memory_load8_le mem #x0000000000020039) #x00) (= (memory_load8_le mem #x000000000002003a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x00) (= (memory_load8_le mem #x000000000002003c) #x00)) (and (= (memory_load8_le mem #x000000000002003d) #x00) (= (memory_load8_le mem #x000000000002003e) #x00))) (and (and (= (memory_load8_le mem #x000000000002003f) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)) (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00)) (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00))) (and (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (memory_load8_le mem #x0000000000020048) #x42)) (and (= (memory_load8_le mem #x0000000000020049) #x41) (= (memory_load8_le mem #x000000000002004a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002004b) #x49) (= (memory_load8_le mem #x000000000002004c) #x4c)) (and (= (memory_load8_le mem #x000000000002004d) #x20) (= (memory_load8_le mem #x000000000002004e) #x56))) (and (and (= (memory_load8_le mem #x000000000002004f) #x65) (= (memory_load8_le mem #x0000000000020050) #x72)) (and (= (memory_load8_le mem #x0000000000020051) #x69) (= (memory_load8_le mem #x0000000000020052) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020053) #x69) (= (memory_load8_le mem #x0000000000020054) #x65)) (and (= (memory_load8_le mem #x0000000000020055) #x72) (= (memory_load8_le mem #x0000000000000884) #x01))) (and (and (= (memory_load8_le mem #x0000000000000885) #x00) (= (memory_load8_le mem #x0000000000000886) #x02)) (and (= (memory_load8_le mem #x0000000000000887) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x10)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #xc0)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x14))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)))) (and (and (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)) (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00))) (and (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00)) (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(get-info :reason-unknown) -(assert (not (= (ControlFlow 0 2) (- 1)))) -(check-sat) -(pop 1) -; Invalid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.65:57| - :skolemid |11| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |examplebpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.49:56| - :skolemid |10| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |examplebpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |examplebpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |examplebpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $text_addr #x0000000000020048)) -(assert (= $copiedtext_addr #x0000000000020060)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |examplebpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |examplebpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Invalid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun Gamma_R0@0 () Bool) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R0@2 () (_ BitVec 64)) -(declare-fun R1@0 () (_ BitVec 64)) -(declare-fun R0@3 () (_ BitVec 64)) -(declare-fun malloc_count () Int) -(set-info :boogie-vc-id main_split2) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffe0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000018) #x0000000000000000)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000018) true)))) (=> (and (and (and (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000010) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000010) true))) (and (= R0@0 (bvadd #x0000000000020000 #x0000000000000048)) (= Gamma_R0@0 true))) (and (and (forall ((i@@1 (_ BitVec 64)) ) (! (=> (and (bvule R0@0 i@@1) (bvult i@@1 (bvadd R0@0 R0@1))) (not (= (select mem i@@1) #x00))) - :qid |examplebpl.483:19| - :skolemid |9| -)) (= (memory_load8_le mem (bvadd R0@0 R0@1)) #x00)) (and (bvult R0@0 (bvadd (bvadd R0@0 R0@1) #x0000000000000001)) (= (memory_load8_le mem #x0000000000000884) #x01)))) (and (and (and (= (memory_load8_le mem #x0000000000000885) #x00) (= (memory_load8_le mem #x0000000000000886) #x02)) (and (= (memory_load8_le mem #x0000000000000887) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x10))) (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))))) (=> (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #xc0))) (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x14))) (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020040) #x40))) (and (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)) (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00)) (and (= (memory_load8_le mem #x0000000000020047) #x00) (= R0@1 #x000000000000000d))) (and (and (= R0@2 (bvadd R0@1 #x0000000000000001)) (= R1@0 (bvadd #x0000000000020000 #x0000000000000048))) (and (= R0@3 (bvadd #x0000000000020000 #x0000000000000060)) (= (ControlFlow 0 2) (- 0 1))))))) (or (bvugt R0@3 (bvadd R1@0 R0@2)) (bvugt R1@0 (bvadd R0@3 R0@2)))))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020038) #x00)) (and (= (memory_load8_le mem #x0000000000020039) #x00) (= (memory_load8_le mem #x000000000002003a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x00) (= (memory_load8_le mem #x000000000002003c) #x00)) (and (= (memory_load8_le mem #x000000000002003d) #x00) (= (memory_load8_le mem #x000000000002003e) #x00))) (and (and (= (memory_load8_le mem #x000000000002003f) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)) (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00)) (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00))) (and (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (memory_load8_le mem #x0000000000020048) #x42)) (and (= (memory_load8_le mem #x0000000000020049) #x41) (= (memory_load8_le mem #x000000000002004a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002004b) #x49) (= (memory_load8_le mem #x000000000002004c) #x4c)) (and (= (memory_load8_le mem #x000000000002004d) #x20) (= (memory_load8_le mem #x000000000002004e) #x56))) (and (and (= (memory_load8_le mem #x000000000002004f) #x65) (= (memory_load8_le mem #x0000000000020050) #x72)) (and (= (memory_load8_le mem #x0000000000020051) #x69) (= (memory_load8_le mem #x0000000000020052) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020053) #x69) (= (memory_load8_le mem #x0000000000020054) #x65)) (and (= (memory_load8_le mem #x0000000000020055) #x72) (= (memory_load8_le mem #x0000000000000884) #x01))) (and (and (= (memory_load8_le mem #x0000000000000885) #x00) (= (memory_load8_le mem #x0000000000000886) #x02)) (and (= (memory_load8_le mem #x0000000000000887) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x10)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #xc0)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x14))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)))) (and (and (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)) (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00))) (and (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00)) (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $text_addr () (_ BitVec 64)) -(declare-fun $copiedtext_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.49:34| - :skolemid |3| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.65:57| - :skolemid |11| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (memory_load64_le memory index@@0) (concat (select memory (bvadd index@@0 #x0000000000000007)) (concat (select memory (bvadd index@@0 #x0000000000000006)) (concat (select memory (bvadd index@@0 #x0000000000000005)) (concat (select memory (bvadd index@@0 #x0000000000000004)) (concat (select memory (bvadd index@@0 #x0000000000000003)) (concat (select memory (bvadd index@@0 #x0000000000000002)) (concat (select memory (bvadd index@@0 #x0000000000000001)) (select memory index@@0))))))))) - :qid |examplebpl.57:37| - :skolemid |4| - :pattern ( (memory_load64_le memory index@@0)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.49:56| - :skolemid |10| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@1 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@1) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@1 #x0000000000000001)) (select gammaMap@@0 index@@1))))))))) - :qid |examplebpl.41:33| - :skolemid |1| - :pattern ( (gamma_load64 gammaMap@@0 index@@1)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@2) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@1 index@@2))))) - :qid |examplebpl.37:33| - :skolemid |0| - :pattern ( (gamma_load32 gammaMap@@1 index@@2)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@3) (select gammaMap@@2 index@@3)) - :qid |examplebpl.45:32| - :skolemid |2| - :pattern ( (gamma_load8 gammaMap@@2 index@@3)) -))) -(assert (= $text_addr #x0000000000020048)) -(assert (= $copiedtext_addr #x0000000000020060)) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@4 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@0 index@@4) (select memory@@0 index@@4)) - :qid |examplebpl.61:36| - :skolemid |5| - :pattern ( (memory_load8_le memory@@0 index@@4)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@1 index@@5 value@@0) (|lambda#1| index@@5 #x0000000000000008 value@@0 index@@5 memory@@1)) - :qid |examplebpl.65:38| - :skolemid |6| - :pattern ( (memory_store64_le memory@@1 index@@5 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun Gamma_R0@0 () Bool) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R0@2 () (_ BitVec 64)) -(declare-fun R1@0 () (_ BitVec 64)) -(declare-fun R0@3 () (_ BitVec 64)) -(declare-fun malloc_count () Int) -(set-info :boogie-vc-id main_split3) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffe0)) (=> (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (=> (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000018) #x0000000000000000)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000018) true)))) (=> (and (and (and (and (and (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000010) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000010) true))) (= R0@0 (bvadd #x0000000000020000 #x0000000000000048))) (and (= Gamma_R0@0 true) (forall ((i@@1 (_ BitVec 64)) ) (! (=> (and (bvule R0@0 i@@1) (bvult i@@1 (bvadd R0@0 R0@1))) (not (= (select mem i@@1) #x00))) - :qid |examplebpl.483:19| - :skolemid |9| -)))) (and (and (= (memory_load8_le mem (bvadd R0@0 R0@1)) #x00) (bvult R0@0 (bvadd (bvadd R0@0 R0@1) #x0000000000000001))) (and (= (memory_load8_le mem #x0000000000000884) #x01) (= (memory_load8_le mem #x0000000000000885) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000000886) #x02) (= (memory_load8_le mem #x0000000000000887) #x00)) (and (= (memory_load8_le mem #x000000000001fdc8) #x10) (= (memory_load8_le mem #x000000000001fdc9) #x08))) (and (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem #x000000000001fdd0) #xc0) (= (memory_load8_le mem #x000000000001fdd1) #x07))) (and (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem #x000000000001ffd8) #x14) (= (memory_load8_le mem #x000000000001ffd9) #x08))) (and (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem #x0000000000020040) #x40) (= (memory_load8_le mem #x0000000000020041) #x00))) (and (and (= (memory_load8_le mem #x0000000000020042) #x02) (= (memory_load8_le mem #x0000000000020043) #x00)) (and (= (memory_load8_le mem #x0000000000020044) #x00) (= (memory_load8_le mem #x0000000000020045) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020046) #x00) (= (memory_load8_le mem #x0000000000020047) #x00)) (and (= R0@1 #x000000000000000d) (= R0@2 (bvadd R0@1 #x0000000000000001)))) (and (and (= R1@0 (bvadd #x0000000000020000 #x0000000000000048)) (= R0@3 (bvadd #x0000000000020000 #x0000000000000060))) (and (or (bvugt R0@3 (bvadd R1@0 R0@2)) (bvugt R1@0 (bvadd R0@3 R0@2))) (= (ControlFlow 0 2) (- 0 1)))))))) (and (bvugt (bvadd R0@3 R0@2) R0@3) (bvugt (bvadd R1@0 R0@2) R1@0)))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= malloc_count 0) (=> (and (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020038) #x00)) (and (= (memory_load8_le mem #x0000000000020039) #x00) (= (memory_load8_le mem #x000000000002003a) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000002003b) #x00) (= (memory_load8_le mem #x000000000002003c) #x00)) (and (= (memory_load8_le mem #x000000000002003d) #x00) (= (memory_load8_le mem #x000000000002003e) #x00))) (and (and (= (memory_load8_le mem #x000000000002003f) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)) (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)))) (and (and (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00)) (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00))) (and (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (memory_load8_le mem #x0000000000020048) #x42)) (and (= (memory_load8_le mem #x0000000000020049) #x41) (= (memory_load8_le mem #x000000000002004a) #x53))))) (and (and (and (and (= (memory_load8_le mem #x000000000002004b) #x49) (= (memory_load8_le mem #x000000000002004c) #x4c)) (and (= (memory_load8_le mem #x000000000002004d) #x20) (= (memory_load8_le mem #x000000000002004e) #x56))) (and (and (= (memory_load8_le mem #x000000000002004f) #x65) (= (memory_load8_le mem #x0000000000020050) #x72)) (and (= (memory_load8_le mem #x0000000000020051) #x69) (= (memory_load8_le mem #x0000000000020052) #x66)))) (and (and (and (= (memory_load8_le mem #x0000000000020053) #x69) (= (memory_load8_le mem #x0000000000020054) #x65)) (and (= (memory_load8_le mem #x0000000000020055) #x72) (= (memory_load8_le mem #x0000000000000884) #x01))) (and (and (= (memory_load8_le mem #x0000000000000885) #x00) (= (memory_load8_le mem #x0000000000000886) #x02)) (and (= (memory_load8_le mem #x0000000000000887) #x00) (= (memory_load8_le mem #x000000000001fdc8) #x10)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #xc0)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x07) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #x14))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020040) #x40)))) (and (and (and (= (memory_load8_le mem #x0000000000020041) #x00) (= (memory_load8_le mem #x0000000000020042) #x02)) (and (= (memory_load8_le mem #x0000000000020043) #x00) (= (memory_load8_le mem #x0000000000020044) #x00))) (and (and (= (memory_load8_le mem #x0000000000020045) #x00) (= (memory_load8_le mem #x0000000000020046) #x00)) (and (= (memory_load8_le mem #x0000000000020047) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) diff --git a/src/test/make/lift-directories.mk b/src/test/make/lift-directories.mk new file mode 100644 index 000000000..7609e9bb3 --- /dev/null +++ b/src/test/make/lift-directories.mk @@ -0,0 +1,30 @@ + +.EXPORT_ALL_VARIABLES: +NAME=$(shell basename $(PWD)) + +CC=aarch64-linux-gnu-gcc +#CFLAGS=-fno-pic -fno-plt +TARGET=aarch64-linux-gnu + +BAP=bap-aslp +READELF=aarch64-linux-gnu-readelf +BASIL=$(realpath ../../../../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-use-lambda-stores +BOOGIE_FLAGS=/proverOpt:O:smt.array.extensional=false + +LIFT_ARTEFACTS=$(NAME).adt $(NAME).bir $(NAME).relf + +SUBDIRS := $(wildcard */.) + +TARGETS := all verify +.PHONY : $(TARGETS) $(SUBDIRS) + +$(TARGETS): $(SUBDIRS) + +$(SUBDIRS): + -$(MAKE) -C $@ $(MAKECMDGOALS) + diff --git a/src/test/make/lift.mk b/src/test/make/lift.mk new file mode 100644 index 000000000..76f69a94d --- /dev/null +++ b/src/test/make/lift.mk @@ -0,0 +1,18 @@ + +$(NAME).bpl: $(LIFT_ARTEFACTS) + echo $(BASIL) + java -jar $(BASIL) $(BASIL_FLAGS) --adt $(NAME).adt --relf $(NAME).relf -o $(NAME).bpl --spec $(SPEC) + +$(LIFT_ARTEFACTS): a.out + $(BAP) a.out -d adt:$(NAME).adt -d bir:$(NAME).bir + $(READELF) -s -r -W a.out > $(NAME).relf + +a.out: $(C_SOURCE) + $(CC) $(CFLAGS) $(C_SOURCE) + +.PHONY=verify +verify: $(NAME)_result.txt + +$(NAME)_result.txt: $(NAME).bpl $(EXTRA_SPEC) + boogie $(NAME).bpl $(EXTRA_SPEC) $(BOOGIE_FLAGS) | tee $(NAME)_result.txt + From 8624061f1c6dc9ff1f1ece05f16d09e59a825325 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Mon, 4 Dec 2023 16:01:00 +1000 Subject: [PATCH 09/36] Support extra boogie files in tests --- src/main/scala/Main.scala | 2 +- src/test/scala/SystemTests.scala | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/scala/Main.scala b/src/main/scala/Main.scala index 3fb3f0139..c26c789bb 100644 --- a/src/main/scala/Main.scala +++ b/src/main/scala/Main.scala @@ -42,7 +42,7 @@ object Main { analysisResultsDot: Option[String] ) - def main(args: Array[String]): Unit = { + def main(args: Iterable[String]): Unit = { val parser = ParserForClass[Config] val parsed = parser.constructEither(args.toSeq) diff --git a/src/test/scala/SystemTests.scala b/src/test/scala/SystemTests.scala index 8525be73b..33880c406 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,18 +78,19 @@ 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) 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) From 269b099628bfb6f01d210499eea101c3e46cc604 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Mon, 4 Dec 2023 16:01:26 +1000 Subject: [PATCH 10/36] update expected --- examples/http_parse_basic/Makefile | 19 - examples/http_parse_basic/beans | 1128 ----------- examples/http_parse_basic/example.adt | 780 -------- examples/http_parse_basic/example.bil | 363 ---- examples/http_parse_basic/example.bpl.orig | 691 ------- examples/http_parse_basic/example.bpl.rej | 12 - examples/http_parse_basic/example.c | 37 - examples/http_parse_basic/example.model | 802 -------- examples/http_parse_basic/example.relf | 143 -- examples/http_parse_basic/example.spec | 76 - examples/http_parse_basic/extraspec.bpl | 20 - examples/http_parse_basic/patch.diff | 12 - examples/http_parse_basic/simplememcpy.c | 0 examples/http_parse_basic/smtout.log | 1679 ----------------- .../simplified_http_parse_basic/example.adt | 769 -------- .../simplified_http_parse_basic/example.bir | 356 ---- .../simplified_http_parse_basic/example.bpl | 811 -------- .../simplified_http_parse_basic/example.c | 36 - .../simplified_http_parse_basic/example.relf | 162 -- .../simplified_http_parse_basic/example.spec | 53 - .../simplified_http_parse_basic/malloc.md | 26 - .../string-specs.md | 84 - .../malloc_memcpy_strlen_memset_free.expected | 812 ++++++++ .../malloc_memcpy_strlen_memset_free.expected | 229 +-- .../malloc_memcpy_strlen_memset_free.expected | 812 ++++++++ .../malloc_memcpy_strlen_memset_free.expected | 814 ++++++++ 26 files changed, 2541 insertions(+), 8185 deletions(-) delete mode 100644 examples/http_parse_basic/Makefile delete mode 100644 examples/http_parse_basic/beans delete mode 100644 examples/http_parse_basic/example.adt delete mode 100644 examples/http_parse_basic/example.bil delete mode 100644 examples/http_parse_basic/example.bpl.orig delete mode 100644 examples/http_parse_basic/example.bpl.rej delete mode 100644 examples/http_parse_basic/example.c delete mode 100644 examples/http_parse_basic/example.model delete mode 100644 examples/http_parse_basic/example.relf delete mode 100644 examples/http_parse_basic/example.spec delete mode 100644 examples/http_parse_basic/extraspec.bpl delete mode 100644 examples/http_parse_basic/patch.diff delete mode 100644 examples/http_parse_basic/simplememcpy.c delete mode 100644 examples/http_parse_basic/smtout.log delete mode 100644 examples/simplified_http_parse_basic/example.adt delete mode 100644 examples/simplified_http_parse_basic/example.bir delete mode 100644 examples/simplified_http_parse_basic/example.bpl delete mode 100644 examples/simplified_http_parse_basic/example.c delete mode 100644 examples/simplified_http_parse_basic/example.relf delete mode 100644 examples/simplified_http_parse_basic/example.spec delete mode 100644 examples/simplified_http_parse_basic/malloc.md delete mode 100644 examples/simplified_http_parse_basic/string-specs.md create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected rename examples/http_parse_basic/example.bpl => src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected (86%) create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.expected create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected diff --git a/examples/http_parse_basic/Makefile b/examples/http_parse_basic/Makefile deleted file mode 100644 index 417f11423..000000000 --- a/examples/http_parse_basic/Makefile +++ /dev/null @@ -1,19 +0,0 @@ - -result: example.bpl extraspec.bpl - boogie example.bpl extraspec.bpl /mv example.model /proverLog lambdas.smt2 /smoke | tee resultlambdas - boogie example-nolambda.bpl extraspec.bpl /useArrayAxioms /mv example.model /smoke | tee resultaxioms - boogie example-nolambda.bpl extraspec.bpl /mv example.model | tee result - -a.out: example.c - aarch64-linux-gnu-gcc example.c - -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 - java -jar ../../target/scala-3.3.1/wptool-boogie-assembly-0.0.1.jar --adt example.adt --relf example.relf -o example-nolambda.bpl --spec example.spec - - diff --git a/examples/http_parse_basic/beans b/examples/http_parse_basic/beans deleted file mode 100644 index faa922834..000000000 --- a/examples/http_parse_basic/beans +++ /dev/null @@ -1,1128 +0,0 @@ -// Boogie program verifier version 3.0.5.0, Copyright (c) 2003-2014, Microsoft. -// Command Line Options: /proverLog:smtout.log example.bpl extraspec.bpl /vcsSplitOnEveryAssert /printDesugared /printLambdaLifting /print beans - -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_R29: bool; - -var {:extern} Gamma_R30: bool; - -var {:extern} Gamma_R31: 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} R29: bv64; - -var {:extern} R30: bv64; - -var {:extern} R31: bv64; - -var {:extern} mem: [bv64]bv8; - -var {:extern} stack: [bv64]bv8; - -const {:extern} $buf_addr: bv64; - -axiom $buf_addr == 131200bv64; - -const {:extern} $password_addr: bv64; - -axiom $password_addr == 131168bv64; - -const {:extern} $stext_addr: bv64; - -axiom $stext_addr == 131176bv64; - -function {:extern} L(memory: [bv64]bv8, index: bv64) : bool -uses { -axiom (forall memory: [bv64]bv8, index: bv64 :: - {:extern} { L(memory, index): bool } - L(memory, index): bool <==> false); -} - -function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) : bv64; - -function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) : bv64; - -function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) : bv64; - -function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) : bv64; - -function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) : bool; - -function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) : bool; - -function {:inline} byte_extract64_64(value: bv64, offset: bv64) : bv8 -{ - bvlshr64(value, bvmul64(offset, 8bv64))[8:0] -} - -function {:extern} gamma_load32(gammaMap: [bv64]bool, index: bv64) : bool -uses { -axiom (forall gammaMap: [bv64]bool, index: bv64 :: - {:extern} { gamma_load32(gammaMap, index): bool } - gamma_load32(gammaMap, index): bool - <==> gammaMap[bvadd64(index, 3bv64)] - && - gammaMap[bvadd64(index, 2bv64)] - && - gammaMap[bvadd64(index, 1bv64)] - && gammaMap[index]); -} - -function {:extern} gamma_load64(gammaMap: [bv64]bool, index: bv64) : bool -uses { -axiom (forall gammaMap: [bv64]bool, index: bv64 :: - {:extern} { gamma_load64(gammaMap, index): bool } - gamma_load64(gammaMap, index): 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) : bool -uses { -axiom (forall gammaMap: [bv64]bool, index: bv64 :: - {:extern} { gamma_load8(gammaMap, index): bool } - gamma_load8(gammaMap, index): bool <==> gammaMap[index]); -} - -function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) : [bv64]bool -uses { -axiom (forall gammaMap: [bv64]bool, index: bv64, value: bool :: - {:extern} { gamma_store64(gammaMap, index, value): [bv64]bool } - gamma_store64(gammaMap, index, value): [bv64]bool - == lambda#0(index, 8bv64, value, gammaMap)); -} - -function {:extern} gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) : [bv64]bool -uses { -axiom (forall gammaMap: [bv64]bool, index: bv64, value: bool :: - {:extern} { gamma_store8(gammaMap, index, value): [bv64]bool } - gamma_store8(gammaMap, index, value): [bv64]bool == gammaMap[index := value]); -} - -function {:inline} in_bounds64_le(base: bv64, len: bv64, i: bv64) : 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))) -} - -function {:extern} memory_load64_le(memory: [bv64]bv8, index: bv64) : bv64 -uses { -axiom (forall memory: [bv64]bv8, index: bv64 :: - {:extern} { memory_load64_le(memory, index): bv64 } - memory_load64_le(memory, index): 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) : bv8 -uses { -axiom (forall memory: [bv64]bv8, index: bv64 :: - {:extern} { memory_load8_le(memory, index): bv8 } - memory_load8_le(memory, index): bv8 == memory[index]); -} - -function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) : [bv64]bv8 -uses { -axiom (forall memory: [bv64]bv8, index: bv64, value: bv64 :: - {:extern} { memory_store64_le(memory, index, value): [bv64]bv8 } - memory_store64_le(memory, index, value): [bv64]bv8 - == lambda#1(index, 8bv64, value, index, memory)); -} - -function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) : [bv64]bv8 -uses { -axiom (forall memory: [bv64]bv8, index: bv64, value: bv8 :: - {:extern} { memory_store8_le(memory, index, value): [bv64]bv8 } - memory_store8_le(memory, index, value): [bv64]bv8 == memory[index := value]); -} - -procedure {:extern} rely(); - modifies Gamma_mem, 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, 130504bv64) == 208bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free ensures memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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); - - - -implementation {:extern} rely_transitive() -{ - call rely(); - call rely(); -} - - - -procedure {:extern} rely_reflexive(); - - - -procedure {:extern} guarantee_reflexive(); - modifies Gamma_mem, mem; - - - -procedure #free(); - 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, 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, 130504bv64) == 208bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free requires memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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; - modifies Gamma_R16, Gamma_R17, R16, R17; - 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, 130504bv64) == 208bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free ensures memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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(); - 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) == 0bv8; - free requires memory_load8_le(mem, 131170bv64) == 0bv8; - free requires memory_load8_le(mem, 131171bv64) == 0bv8; - 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) == 104bv8; - free requires memory_load8_le(mem, 131177bv64) == 101bv8; - free requires memory_load8_le(mem, 131178bv64) == 108bv8; - free requires memory_load8_le(mem, 131179bv64) == 108bv8; - free requires memory_load8_le(mem, 131180bv64) == 111bv8; - free requires memory_load8_le(mem, 131181bv64) == 111bv8; - free requires memory_load8_le(mem, 131182bv64) == 0bv8; - free requires memory_load8_le(mem, 131183bv64) == 0bv8; - free requires memory_load8_le(mem, 131184bv64) == 0bv8; - free requires memory_load8_le(mem, 131185bv64) == 0bv8; - free requires memory_load8_le(mem, 131186bv64) == 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, 130504bv64) == 208bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free requires memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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; - modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, 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, R29, R30, R31, malloc_base, malloc_count, malloc_end, mem, stack; - free ensures Gamma_R19 <==> old(Gamma_R19); - free ensures Gamma_R29 <==> old(Gamma_R29); - free ensures Gamma_R31 <==> old(Gamma_R31); - free ensures R19 == old(R19); - 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, 130504bv64) == 208bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free ensures memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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; - - - -implementation main() -{ - var #4: bv64; - var Gamma_#4: 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 "%00000384"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); - assume {:captureState "%0000038a"} true; - R31, Gamma_R31 := #4, Gamma_#4; - R29, Gamma_R29 := R31, Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); - assume {:captureState "%0000039c"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); - assume {:captureState "%000003a3"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); - assume {:captureState "%000003aa"} true; - R0, Gamma_R0 := 11bv64, true; - R30, Gamma_R30 := 2288bv64, true; - call malloc(); - assume {:captureState "l000003b9"} true; - R1, Gamma_R1 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - assert L(mem, R0) ==> Gamma_R1; - mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%000003d0"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; - R30, Gamma_R30 := 2328bv64, true; - call strlen(); - assume {:captureState "l000003f7"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2348bv64, true; - call memcpy(); - assume {:captureState "l00000416"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R30, Gamma_R30 := 2364bv64, true; - call puts(); - assume {:captureState "l00000430"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R0, Gamma_R0 := bvadd64(R0, 2bv64), Gamma_R0; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); - assume {:captureState "%0000044e"} true; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); - call rely(); - assert L(mem, R0) ==> true; - mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%0000045c"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R30, Gamma_R30 := 2420bv64, true; - call strlen(); - assume {:captureState "l00000489"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R1, Gamma_R1 := 1bv64, true; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2436bv64, true; - call memset(); - assume {:captureState "l000004a2"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R30, Gamma_R30 := 2452bv64, true; - call #free(); - assume {:captureState "l000004bc"} true; - R0, Gamma_R0 := 0bv64, true; - R19, Gamma_R19 := 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; - goto l000003b9; - - l000003b9: - assume {:captureState "l000003b9"} true; - R1, Gamma_R1 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - assert L(mem, R0) ==> Gamma_R1; - mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%000003d0"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; - R30, Gamma_R30 := 2328bv64, true; - call strlen(); - goto l000003f7; - - l000003f7: - assume {:captureState "l000003f7"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2348bv64, true; - call memcpy(); - goto l00000416; - - l00000416: - assume {:captureState "l00000416"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R30, Gamma_R30 := 2364bv64, true; - call puts(); - goto l00000430; - - l00000430: - assume {:captureState "l00000430"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R0, Gamma_R0 := bvadd64(R0, 2bv64), Gamma_R0; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); - assume {:captureState "%0000044e"} true; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); - call rely(); - assert L(mem, R0) ==> true; - mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%0000045c"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R30, Gamma_R30 := 2420bv64, true; - call strlen(); - goto l00000489; - - l00000489: - assume {:captureState "l00000489"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R1, Gamma_R1 := 1bv64, true; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2436bv64, true; - call memset(); - goto l000004a2; - - l000004a2: - assume {:captureState "l000004a2"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), gamma_load64(Gamma_mem, R0) || L(mem, R0); - R30, Gamma_R30 := 2452bv64, true; - call #free(); - goto l000004bc; - - l000004bc: - assume {:captureState "l000004bc"} true; - R0, Gamma_R0 := 0bv64, true; - R19, Gamma_R19 := 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(); - requires bvugt64(R0, 0bv64); - requires Gamma_R0 <==> 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, 130504bv64) == 208bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free requires memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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; - 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; - 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, 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, 130504bv64) == 208bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free ensures memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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(); - requires bvugt64(R0, bvadd64(R1, R2)) || bvugt64(R1, bvadd64(R0, R2)); - requires bvugt64(bvadd64(R0, R2), R0) && bvugt64(bvadd64(R1, R2), R1); - 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, 130504bv64) == 208bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free requires memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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; - modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - 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, 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, 130504bv64) == 208bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free ensures memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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(); - requires Gamma_R1; - 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, 130504bv64) == 208bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free requires memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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; - modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - 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, 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, 130504bv64) == 208bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free ensures memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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(); - 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, 130504bv64) == 208bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free requires memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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; - modifies Gamma_R16, Gamma_R17, R16, R17; - 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, 130504bv64) == 208bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free ensures memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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(); - 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, 130504bv64) == 208bv8; - free requires memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free requires memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free requires memory_load8_le(mem, 131033bv64) == 8bv8; - 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; - modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; - 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, 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, 130504bv64) == 208bv8; - free ensures memory_load8_le(mem, 130505bv64) == 8bv8; - 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) == 128bv8; - free ensures memory_load8_le(mem, 130513bv64) == 8bv8; - 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) == 212bv8; - free ensures memory_load8_le(mem, 131033bv64) == 8bv8; - 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; - - - -function {:bvbuiltin "bvuge"} bvuge64(bv64, bv64) : bool; - -function {:bvbuiltin "bvugt"} bvugt64(bv64, bv64) : 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; - -function {:inline} in_bounds64(base: bv64, len: bv64, i: bv64) : 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))) -} - -// auto-generated lambda function -function lambda#0(l#0: bv64, l#1: bv64, l#2: bool, l#3: [bv64]bool) : [bv64]bool -uses { -axiom (forall l#0: bv64, l#1: bv64, l#2: bool, l#3: [bv64]bool, i: bv64 :: - { lambda#0(l#0, l#1, l#2, l#3)[i] } - lambda#0(l#0, l#1, l#2, l#3)[i] - == (if in_bounds64(l#0, l#1, i) then l#2 else l#3[i])); -} - -// auto-generated lambda function -function lambda#1(l#0: bv64, l#1: bv64, l#2: bv64, l#3: bv64, l#4: [bv64]bv8) : [bv64]bv8 -uses { -axiom (forall l#0: bv64, l#1: bv64, l#2: bv64, l#3: bv64, l#4: [bv64]bv8, i: bv64 :: - { lambda#1(l#0, l#1, l#2, l#3, l#4)[i] } - lambda#1(l#0, l#1, l#2, l#3, l#4)[i] - == (if in_bounds64(l#0, l#1, i) - then byte_extract64_64(l#2, bvsub64(i, l#3)) - else l#4[i])); -} diff --git a/examples/http_parse_basic/example.adt b/examples/http_parse_basic/example.adt deleted file mode 100644 index 8905411b4..000000000 --- a/examples/http_parse_basic/example.adt +++ /dev/null @@ -1,780 +0,0 @@ -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 2468 20 2468)\n(code-region 1984 484 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 208)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 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 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2468 20)\n(llvm:code-entry .text 1984 484)\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 2492 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2728)\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 2492 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2728)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68706)\n(llvm:section-entry .strtab 0 666 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2552 176 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 1984 484 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 208 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 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 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2728 0)\n(mapped 130504 683 64968)\n(named-region 0 2728 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 484 .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 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 666 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 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 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 484)\n(section 2468 20)\n(section 2488 4)\n(section 2492 60)\n(section 2552 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 666)\n(section 0 259)\n(segment 0 2728 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 208 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2468 2468)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), -Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xc0\x80\x71\xa1\x26\xe7\x92\x04\xef\xf5\x2b\x63\xc0\x63\x3d\xd3\xcb\x73\x79\x23\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00"), -Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xc0\x80\x71\xa1\x26\xe7\x92\x04\xef\xf5\x2b\x63\xc0\x63\x3d\xd3\xcb\x73\x79\x23\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), -Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), -Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xc0\x80\x71\xa1\x26\xe7\x92\x04\xef\xf5\x2b\x63\xc0\x63\x3d\xd3\xcb\x73\x79\x23"), -Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 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\x04\xfe\xff\xff\x50\x00\x00\x00\x54\xfe\xff\xff\x64\x00\x00\x00\x84\xfe\xff\xff\x78\x00\x00\x00\xc4\xfe\xff\xff\x8c\x00\x00\x00\x14\xff\xff\xff\xb0\x00\x00\x00\x18\xff\xff\xff\xc4\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\xac\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xe8\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x04\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x30\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\x5c\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x4c\xfe\xff\xff\xd0\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x70\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xa4\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), -Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x68\x65\x6c\x6c\x6f\x6f\x00\x00\x00\x00\x00"), -Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x08\x00\x91\xe0\x17\x00\xf9\xe0\x17\x40\xf9\x1f\x00\x00\x39\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6c\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x78\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x84\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xAA7), Attr("segment","02 0 2728")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), -Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), -Annotation(Region(0x0,0x299), Attr("section","\".strtab\"")), -Annotation(Region(0x0,0x92F), Attr("section","\".symtab\"")), -Annotation(Region(0x0,0x1D), Attr("section","\".comment\"")), -Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), -Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), -Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), -Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), -Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), -Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), -Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), -Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), -Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), -Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), -Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x9A3), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x9A3), Attr("symbol-info","main 0x8D4 208")), -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,0xAA7), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), -Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), -Annotation(Region(0x7C0,0x9A3), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x9A3), Attr("code-region","()")), -Annotation(Region(0x9A4,0x9B7), Attr("code-region","()"))]), -Program(Tid(2_171, "%0000087b"), Attrs([]), - Subs([Sub(Tid(2_100, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_172, "%0000087c"), - 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_300, "@__cxa_finalize"), - Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x740"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_101, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_173, "%0000087d"), - 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(799, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(803, "%00000323"), - Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(809, "%00000329"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(819, "%00000333"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(825, "%00000339"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(833, "%00000341"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(838, "%00000346"), Attrs([Attr("address","0x88C"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x890"), -Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), -Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(849, "%00000351"))), -Goto(Tid(2_161, "%00000871"), Attrs([]), Int(1,1), -Direct(Tid(1_245, "%000004dd")))])), Blk(Tid(1_245, "%000004dd"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x898"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x89C"), -Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_259, "%000004eb"))), Goto(Tid(2_162, "%00000872"), Attrs([]), - Int(1,1), Direct(Tid(1_284, "%00000504")))])), Blk(Tid(1_284, "%00000504"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_287, "%00000507"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x8A8"), -Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_299, "%00000513"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_302, "%00000516"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_100, "@__cxa_finalize")),Direct(Tid(1_259, "%000004eb"))))])), -Blk(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_267, "%000004f3"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_114, "@deregister_tm_clones")),Direct(Tid(1_271, "%000004f7"))))])), -Blk(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x8B4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_282, "%00000502"), Attrs([Attr("address","0x8B8"), -Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), -Jmps([Goto(Tid(2_163, "%00000873"), Attrs([]), Int(1,1), -Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(859, "%0000035b"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(866, "%00000362"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(871, "%00000367"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(875, "%0000036b"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(880, "%00000370"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_105, "@__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_174, "%0000087e"), - 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_175, "%0000087f"), 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_176, "%00000880"), 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_177, "%00000881"), 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_178, "%00000882"), 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(632, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x730"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_106, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A4")]), - "_fini", Args([Arg(Tid(2_179, "%00000883"), - 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","0x9A4")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - 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(44, "%0000002c"), 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(50, "%00000032"), 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(54, "%00000036"), Attrs([Attr("address","0x9A8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9AC"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), 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(72, "%00000048"), 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(76, "%0000004c"), 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(81, "%00000051"), - Attrs([Attr("address","0x9B4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_107, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_180, "%00000884"), - 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_866, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_872, "%00000750"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_878, "%00000756"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#6",Imm(64))), Def(Tid(1_894, "%00000766"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_899, "%0000076b"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_901, "%0000076d"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_112, "@call_weak_fn")),Direct(Tid(1_903, "%0000076f"))))])), -Blk(Tid(1_903, "%0000076f"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_908, "%00000774"), 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_913, "%00000779"), 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_917, "%0000077d"), 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_922, "%00000782"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_108, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_181, "%00000885"), - 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(569, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(574, "%0000023e"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(579, "%00000243"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(585, "%00000249"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(598, "%00000256"), Attrs([Attr("address","0x7D4"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(604, "%0000025c"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(609, "%00000261"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(616, "%00000268"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x7E4"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(626, "%00000272"), Attrs([Attr("address","0x7E8"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_105, "@__libc_start_main")),Direct(Tid(636, "%0000027c"))))])), -Blk(Tid(636, "%0000027c"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(642, "%00000282"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_111, "@abort")),Direct(Tid(2_164, "%00000874"))))])), -Blk(Tid(2_164, "%00000874"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_165, "%00000875"), Attrs([]), Int(1,1), -(Direct(Tid(2_112, "@call_weak_fn")),))]))])), Sub(Tid(2_111, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(640, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_783, "%000006f7"), 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_789, "%000006fd"), 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_794, "%00000702"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_112, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_182, "%00000886"), - 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(644, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(647, "%00000287"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(654, "%0000028e"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(660, "%00000294"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(658, "%00000292"))), Goto(Tid(2_166, "%00000876"), Attrs([]), - Int(1,1), Direct(Tid(1_364, "%00000554")))])), Blk(Tid(658, "%00000292"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(666, "%0000029a"), Attrs([Attr("address","0x804"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_364, "%00000554"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_367, "%00000557"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_365, "@__gmon_start__")))])), Blk(Tid(1_365, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_761, "%000006e1"), 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_767, "%000006e7"), 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_772, "%000006ec"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_114, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_183, "%00000887"), - 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(672, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(675, "%000002a3"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(686, "%000002ae"), Attrs([Attr("address","0x818"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(692, "%000002b4"), Attrs([Attr("address","0x81C"), -Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(698, "%000002ba"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(703, "%000002bf"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), -NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), -NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(719, "%000002cf"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(723, "%000002d3"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(729, "%000002d9"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(727, "%000002d7"))), Goto(Tid(2_167, "%00000877"), Attrs([]), - Int(1,1), Direct(Tid(1_334, "%00000536")))])), Blk(Tid(1_334, "%00000536"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_337, "%00000539"), Attrs([Attr("address","0x828"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x82C"), -Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_349, "%00000545"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(727, "%000002d7"))), Goto(Tid(2_168, "%00000878"), Attrs([]), - Int(1,1), Direct(Tid(1_353, "%00000549")))])), Blk(Tid(727, "%000002d7"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(735, "%000002df"), Attrs([Attr("address","0x83C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_357, "%0000054d"), Attrs([Attr("address","0x834"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_362, "%00000552"), Attrs([Attr("address","0x838"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_117, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_184, "%00000888"), - 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(886, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(888, "%00000378"), Attrs([Attr("address","0x8D0"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_124, "@register_tm_clones")),))]))])), Sub(Tid(2_118, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_185, "%00000889"), - 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_208, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_820, "%0000071c"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_827, "%00000723"), 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_833, "%00000729"), 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_838, "%0000072e"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_119, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_186, "%0000088a"), - 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_187, "%0000088b"), - 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_188, "%0000088c"), - 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(890, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(894, "%0000037e"), - Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(900, "%00000384"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#4",Imm(64))), Def(Tid(916, "%00000394"), - Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(924, "%0000039c"), - Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(931, "%000003a3"), Attrs([Attr("address","0x8E0"), -Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(938, "%000003aa"), Attrs([Attr("address","0x8E4"), -Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(943, "%000003af"), Attrs([Attr("address","0x8E8"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(951, "%000003b7"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_120, "@malloc")),Direct(Tid(953, "%000003b9"))))])), -Blk(Tid(953, "%000003b9"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8F0"), -Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x8F4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x8F8"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(976, "%000003d0"), - Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x900"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x904"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(994, "%000003e2"), - Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(999, "%000003e7"), Attrs([Attr("address","0x90C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x910"), -Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_010, "%000003f2"), - Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), - Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_013, "%000003f5"), - Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_015, "%000003f7"))))])), -Blk(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x918"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x91C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x920"), -Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_036, "%0000040c"), - Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_041, "%00000411"), - Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_044, "%00000414"), - Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_121, "@memcpy")),Direct(Tid(1_046, "%00000416"))))])), -Blk(Tid(1_046, "%00000416"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_049, "%00000419"), Attrs([Attr("address","0x92C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x930"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_062, "%00000426"), - Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_070, "%0000042e"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_123, "@puts")),Direct(Tid(1_072, "%00000430"))))])), -Blk(Tid(1_072, "%00000430"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x93C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x940"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_088, "%00000440"), - Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_094, "%00000446"), Attrs([Attr("address","0x948"), -Attr("insn","add x0, x0, #0x2")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(2,64))), Def(Tid(1_102, "%0000044e"), - Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x950"), -Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), -Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x954"), -Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),LittleEndian(),8)), -Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x958"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x95C"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_134, "%0000046e"), - Attrs([Attr("address","0x960"), Attr("insn","ldr x19, [x0]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_139, "%00000473"), Attrs([Attr("address","0x964"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x968"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_152, "%00000480"), - Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x970"), -Attr("insn","bl #-0x250")]), Var("R30",Imm(64)), Int(2420,64))]), -Jmps([Call(Tid(1_159, "%00000487"), Attrs([Attr("address","0x970"), -Attr("insn","bl #-0x250")]), Int(1,1), -(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_161, "%00000489"))))])), -Blk(Tid(1_161, "%00000489"), Attrs([Attr("address","0x974")]), Phis([]), -Defs([Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x974"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x978"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_176, "%00000498"), Attrs([Attr("address","0x97C"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x980"), -Attr("insn","bl #-0x220")]), Var("R30",Imm(64)), Int(2436,64))]), -Jmps([Call(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x980"), -Attr("insn","bl #-0x220")]), Int(1,1), -(Direct(Tid(2_122, "@memset")),Direct(Tid(1_186, "%000004a2"))))])), -Blk(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x984")]), Phis([]), -Defs([Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x984"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x988"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_202, "%000004b2"), - Attrs([Attr("address","0x98C"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_207, "%000004b7"), Attrs([Attr("address","0x990"), -Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2452,64))]), -Jmps([Call(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x990"), -Attr("insn","bl #-0x1f0")]), Int(1,1), -(Direct(Tid(2_118, "@free")),Direct(Tid(1_212, "%000004bc"))))])), -Blk(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x994")]), Phis([]), -Defs([Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x994"), -Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x998"), -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_229, "%000004cd"), 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_234, "%000004d2"), 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_238, "%000004d6"), 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_243, "%000004db"), - Attrs([Attr("address","0x9A0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_120, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_189, "%0000088d"), 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_190, "%0000088e"), - 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(949, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x750"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_121, "@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_191, "%0000088f"), 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_192, "%00000890"), - 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_193, "%00000891"), 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_194, "%00000892"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_042, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x710"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), Attrs([Attr("address","0x718"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_640, "%00000668"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_122, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_195, "%00000893"), 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_196, "%00000894"), - 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_197, "%00000895"), - 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_198, "%00000896"), 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_182, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_123, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_199, "%00000897"), 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_200, "%00000898"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_068, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_805, "%0000070d"), 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_811, "%00000713"), 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_816, "%00000718"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_124, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_201, "%00000899"), - 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(737, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(740, "%000002e4"), Attrs([Attr("address","0x840"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x844"), -Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(751, "%000002ef"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(757, "%000002f5"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(764, "%000002fc"), Attrs([Attr("address","0x850"), -Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(770, "%00000302"), Attrs([Attr("address","0x854"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(777, "%00000309"), Attrs([Attr("address","0x858"), -Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x85C"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(789, "%00000315"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(787, "%00000313"))), Goto(Tid(2_169, "%00000879"), Attrs([]), - Int(1,1), Direct(Tid(1_304, "%00000518")))])), Blk(Tid(1_304, "%00000518"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x864"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_314, "%00000522"), Attrs([Attr("address","0x868"), -Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_319, "%00000527"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(787, "%00000313"))), Goto(Tid(2_170, "%0000087a"), Attrs([]), - Int(1,1), Direct(Tid(1_323, "%0000052b")))])), Blk(Tid(787, "%00000313"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(795, "%0000031b"), Attrs([Attr("address","0x878"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_323, "%0000052b"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x870"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_332, "%00000534"), Attrs([Attr("address","0x874"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_127, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_202, "%0000089a"), 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_203, "%0000089b"), - Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), -Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_011, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x720"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), - Attrs([Attr("address","0x72C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))]))]))) \ No newline at end of file diff --git a/examples/http_parse_basic/example.bil b/examples/http_parse_basic/example.bil deleted file mode 100644 index a0ca2606b..000000000 --- a/examples/http_parse_basic/example.bil +++ /dev/null @@ -1,363 +0,0 @@ -0000087b: program -00000834: sub __cxa_finalize(__cxa_finalize_result) -0000087c: __cxa_finalize_result :: out u32 = low:32[R0] - -00000514: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x18, el]:u64 -000006a5: R16 := R16 + 0x18 -000006aa: call R17 with noreturn - -00000835: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000087d: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -0000031f: -00000323: #3 := R31 - 0x20 -00000329: mem := mem with [#3, el]:u64 <- R29 -0000032f: mem := mem with [#3 + 8, el]:u64 <- R30 -00000333: R31 := #3 -00000339: R29 := R31 -00000341: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000346: R19 := 0x20000 -0000034d: R0 := pad:64[mem[R19 + 0x78]] -00000353: when 0:0[R0] goto %00000351 -00000871: goto %000004dd - -000004dd: -000004e0: R0 := 0x1F000 -000004e7: R0 := mem[R0 + 0xFC8, el]:u64 -000004ed: when R0 = 0 goto %000004eb -00000872: goto %00000504 - -00000504: -00000507: R0 := 0x20000 -0000050e: R0 := mem[R0 + 0x58, el]:u64 -00000513: R30 := 0x8B0 -00000516: call @__cxa_finalize with return %000004eb - -000004eb: -000004f3: R30 := 0x8B4 -000004f5: call @deregister_tm_clones with return %000004f7 - -000004f7: -000004fa: R0 := 1 -00000502: mem := mem with [R19 + 0x78] <- 7:0[R0] -00000873: goto %00000351 - -00000351: -0000035b: R19 := mem[R31 + 0x10, el]:u64 -00000362: R29 := mem[R31, el]:u64 -00000367: R30 := mem[R31 + 8, el]:u64 -0000036b: R31 := R31 + 0x20 -00000370: 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) -0000087e: __libc_start_main_main :: in u64 = R0 -0000087f: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000880: __libc_start_main_arg3 :: in out u64 = R2 -00000881: __libc_start_main_auxv :: in out u64 = R3 -00000882: __libc_start_main_result :: out u32 = low:32[R0] - -00000278: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x10, el]:u64 -0000068f: R16 := R16 + 0x10 -00000694: call R17 with noreturn - -0000083a: sub _fini(_fini_result) -00000883: _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 - -0000083b: sub _init(_init_result) -00000884: _init_result :: out u32 = low:32[R0] - -0000074a: -00000750: #6 := R31 - 0x10 -00000756: mem := mem with [#6, el]:u64 <- R29 -0000075c: mem := mem with [#6 + 8, el]:u64 <- R30 -00000760: R31 := #6 -00000766: R29 := R31 -0000076b: R30 := 0x6E8 -0000076d: call @call_weak_fn with return %0000076f - -0000076f: -00000774: R29 := mem[R31, el]:u64 -00000779: R30 := mem[R31 + 8, el]:u64 -0000077d: R31 := R31 + 0x10 -00000782: call R30 with noreturn - -0000083c: sub _start(_start_result) -00000885: _start_result :: out u32 = low:32[R0] - -00000239: -0000023e: R29 := 0 -00000243: R30 := 0 -00000249: R5 := R0 -00000250: R1 := mem[R31, el]:u64 -00000256: R2 := R31 + 8 -0000025c: R6 := R31 -00000261: R0 := 0x1F000 -00000268: R0 := mem[R0 + 0xFD8, el]:u64 -0000026d: R3 := 0 -00000272: R4 := 0 -00000277: R30 := 0x7F0 -0000027a: call @__libc_start_main with return %0000027c - -0000027c: -0000027f: R30 := 0x7F4 -00000282: call @abort with return %00000874 - -00000874: -00000875: call @call_weak_fn with noreturn - -0000083f: sub abort() - - -00000280: -000006f0: R16 := 0x20000 -000006f7: R17 := mem[R16 + 0x38, el]:u64 -000006fd: R16 := R16 + 0x38 -00000702: call R17 with noreturn - -00000840: sub call_weak_fn(call_weak_fn_result) -00000886: call_weak_fn_result :: out u32 = low:32[R0] - -00000284: -00000287: R0 := 0x1F000 -0000028e: R0 := mem[R0 + 0xFD0, el]:u64 -00000294: when R0 = 0 goto %00000292 -00000876: goto %00000554 - -00000292: -0000029a: call R30 with noreturn - -00000554: -00000557: goto @__gmon_start__ - -00000555: -000006da: R16 := 0x20000 -000006e1: R17 := mem[R16 + 0x30, el]:u64 -000006e7: R16 := R16 + 0x30 -000006ec: call R17 with noreturn - -00000842: sub deregister_tm_clones(deregister_tm_clones_result) -00000887: deregister_tm_clones_result :: out u32 = low:32[R0] - -000002a0: -000002a3: R0 := 0x20000 -000002a9: R0 := R0 + 0x78 -000002ae: R1 := 0x20000 -000002b4: R1 := R1 + 0x78 -000002ba: #1 := ~R0 -000002bf: #2 := R1 + ~R0 -000002c5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002cb: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002cf: ZF := #2 + 1 = 0 -000002d3: NF := 63:63[#2 + 1] -000002d9: when ZF goto %000002d7 -00000877: goto %00000536 - -00000536: -00000539: R1 := 0x1F000 -00000540: R1 := mem[R1 + 0xFC0, el]:u64 -00000545: when R1 = 0 goto %000002d7 -00000878: goto %00000549 - -000002d7: -000002df: call R30 with noreturn - -00000549: -0000054d: R16 := R1 -00000552: call R16 with noreturn - -00000845: sub frame_dummy(frame_dummy_result) -00000888: frame_dummy_result :: out u32 = low:32[R0] - -00000376: -00000378: call @register_tm_clones with noreturn - -00000846: sub free(free_ptr) -00000889: free_ptr :: in out u64 = R0 - -000004b8: -0000071c: R16 := 0x20000 -00000723: R17 := mem[R16 + 0x48, el]:u64 -00000729: R16 := R16 + 0x48 -0000072e: call R17 with noreturn - -00000847: sub main(main_argc, main_argv, main_result) -0000088a: main_argc :: in u32 = low:32[R0] -0000088b: main_argv :: in out u64 = R1 -0000088c: main_result :: out u32 = low:32[R0] - -0000037a: -0000037e: #4 := R31 - 0x30 -00000384: mem := mem with [#4, el]:u64 <- R29 -0000038a: mem := mem with [#4 + 8, el]:u64 <- R30 -0000038e: R31 := #4 -00000394: R29 := R31 -0000039c: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000003a3: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003aa: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003af: R0 := 0xB -000003b4: R30 := 0x8F0 -000003b7: call @malloc with return %000003b9 - -000003b9: -000003bd: R1 := R0 -000003c2: R0 := 0x20000 -000003c8: R0 := R0 + 0x80 -000003d0: mem := mem with [R0, el]:u64 <- R1 -000003d5: R0 := 0x20000 -000003db: R0 := R0 + 0x80 -000003e2: R19 := mem[R0, el]:u64 -000003e7: R0 := 0x20000 -000003ed: R0 := R0 + 0x68 -000003f2: R30 := 0x918 -000003f5: call @strlen with return %000003f7 - -000003f7: -000003fb: R2 := R0 -00000400: R0 := 0x20000 -00000406: R1 := R0 + 0x68 -0000040c: R0 := R19 -00000411: R30 := 0x92C -00000414: call @memcpy with return %00000416 - -00000416: -00000419: R0 := 0x20000 -0000041f: R0 := R0 + 0x80 -00000426: R0 := mem[R0, el]:u64 -0000042b: R30 := 0x93C -0000042e: call @puts with return %00000430 - -00000430: -00000433: R0 := 0x20000 -00000439: R0 := R0 + 0x80 -00000440: R0 := mem[R0, el]:u64 -00000446: R0 := R0 + 2 -0000044e: mem := mem with [R31 + 0x28, el]:u64 <- R0 -00000455: R0 := mem[R31 + 0x28, el]:u64 -0000045c: mem := mem with [R0] <- 0 -00000461: R0 := 0x20000 -00000467: R0 := R0 + 0x80 -0000046e: R19 := mem[R0, el]:u64 -00000473: R0 := 0x20000 -00000479: R0 := R0 + 0x80 -00000480: R0 := mem[R0, el]:u64 -00000485: R30 := 0x974 -00000487: call @strlen with return %00000489 - -00000489: -0000048d: R2 := R0 -00000492: R1 := 1 -00000498: R0 := R19 -0000049d: R30 := 0x984 -000004a0: call @memset with return %000004a2 - -000004a2: -000004a5: R0 := 0x20000 -000004ab: R0 := R0 + 0x80 -000004b2: R0 := mem[R0, el]:u64 -000004b7: R30 := 0x994 -000004ba: call @free with return %000004bc - -000004bc: -000004bf: R0 := 0 -000004c6: R19 := mem[R31 + 0x10, el]:u64 -000004cd: R29 := mem[R31, el]:u64 -000004d2: R30 := mem[R31 + 8, el]:u64 -000004d6: R31 := R31 + 0x30 -000004db: call R30 with noreturn - -00000848: sub malloc(malloc_size, malloc_result) -0000088d: malloc_size :: in u64 = R0 -0000088e: malloc_result :: out u64 = R0 - -000003b5: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x20, el]:u64 -000006bb: R16 := R16 + 0x20 -000006c0: call R17 with noreturn - -00000849: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -0000088f: memcpy_dst :: in out u64 = R0 -00000890: memcpy_src :: in out u64 = R1 -00000891: memcpy_n :: in u64 = R2 -00000892: memcpy_result :: out u64 = R0 - -00000412: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16, el]:u64 -00000663: R16 := R16 -00000668: call R17 with noreturn - -0000084a: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000893: memset_buf :: in out u64 = R0 -00000894: memset_c :: in u32 = low:32[R1] -00000895: memset_n :: in u64 = R2 -00000896: memset_result :: out u64 = R0 - -0000049e: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x28, el]:u64 -000006d1: R16 := R16 + 0x28 -000006d6: call R17 with noreturn - -0000084b: sub puts(puts_s, puts_result) -00000897: puts_s :: in u64 = R0 -00000898: puts_result :: out u32 = low:32[R0] - -0000042c: -00000706: R16 := 0x20000 -0000070d: R17 := mem[R16 + 0x40, el]:u64 -00000713: R16 := R16 + 0x40 -00000718: call R17 with noreturn - -0000084c: sub register_tm_clones(register_tm_clones_result) -00000899: register_tm_clones_result :: out u32 = low:32[R0] - -000002e1: -000002e4: R0 := 0x20000 -000002ea: R0 := R0 + 0x78 -000002ef: R1 := 0x20000 -000002f5: R1 := R1 + 0x78 -000002fc: R1 := R1 + ~R0 + 1 -00000302: R2 := 0.63:63[R1] -00000309: R1 := R2 + (R1 ~>> 3) -0000030f: R1 := extend:64[63:1[R1]] -00000315: when R1 = 0 goto %00000313 -00000879: goto %00000518 - -00000518: -0000051b: R2 := 0x1F000 -00000522: R2 := mem[R2 + 0xFE0, el]:u64 -00000527: when R2 = 0 goto %00000313 -0000087a: goto %0000052b - -00000313: -0000031b: call R30 with noreturn - -0000052b: -0000052f: R16 := R2 -00000534: call R16 with noreturn - -0000084f: sub strlen(strlen_s, strlen_result) -0000089a: strlen_s :: in u64 = R0 -0000089b: strlen_result :: out u64 = R0 - -000003f3: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 8, el]:u64 -00000679: R16 := R16 + 8 -0000067e: call R17 with noreturn diff --git a/examples/http_parse_basic/example.bpl.orig b/examples/http_parse_basic/example.bpl.orig deleted file mode 100644 index 1fd507a9d..000000000 --- a/examples/http_parse_basic/example.bpl.orig +++ /dev/null @@ -1,691 +0,0 @@ -var {:extern} Gamma_R0: bool; -var {:extern} Gamma_R1: bool; -var {:extern} Gamma_R16: bool; -var {:extern} Gamma_R17: bool; -var {:extern} Gamma_R2: 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} R2: 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 == 131184bv64); -const {:extern} $password_addr: bv64; -axiom ($password_addr == 131152bv64); -const {:extern} $stext_addr: bv64; -axiom ($stext_addr == 131160bv64); -function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { - (if ((index == bvadd64($stext_addr, 9bv64)) || ((index == bvadd64($stext_addr, 8bv64)) || ((index == bvadd64($stext_addr, 7bv64)) || ((index == bvadd64($stext_addr, 6bv64)) || ((index == bvadd64($stext_addr, 5bv64)) || ((index == bvadd64($stext_addr, 4bv64)) || ((index == bvadd64($stext_addr, 3bv64)) || ((index == bvadd64($stext_addr, 2bv64)) || ((index == bvadd64($stext_addr, 1bv64)) || (index == bvadd64($stext_addr, 0bv64))))))))))) then true else (if (index == $password_addr) then false else (if (index == $buf_addr) then true else false))) -} - -function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); -function {:extern} {:bvbuiltin "bvlshr"} bvlshr16(bv16, bv16) returns (bv16); -function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) returns (bv64); -function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); -function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) returns (bv64); -function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) returns (bool); -function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) returns (bool); -function {:inline} byte_extract16_64(value: bv16, offset: bv64) returns (bv8) { - bvlshr16(value, bvmul64(offset, 8bv64)[16:0])[8:0] -} - -function {:inline} byte_extract64_64(value: bv64, offset: bv64) returns (bv8) { - bvlshr64(value, bvmul64(offset, 8bv64))[8:0] -} - -function {:extern} gamma_load16(gammaMap: [bv64]bool, index: bv64) returns (bool) { - (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]) -} - -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_store16(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { - (lambda i: bv64 :: ((if in_bounds64(index, 2bv64, i) then value else gammaMap[i]))) -} - -function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { - (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then value else gammaMap[i]))) -} - -function {:extern} gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { - gammaMap[index := value] -} - -function {:inline} in_bounds64_le(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)))) -} - -function {:extern} memory_load16_le(memory: [bv64]bv8, index: bv64) returns (bv16) { - (memory[bvadd64(index, 1bv64)] ++ memory[index]) -} - -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_store16_le(memory: [bv64]bv8, index: bv64, value: bv16) returns ([bv64]bv8) { - (lambda i: bv64 :: ((if in_bounds64(index, 2bv64, i) then byte_extract16_64(value, bvsub64(i, index)) else memory[i]))) -} - -function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) returns ([bv64]bv8) { - (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then byte_extract64_64(value, bvsub64(i, index)) else memory[i]))) -} - -function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { - memory[index := value] -} - -function {:extern} {:bvbuiltin "zero_extend 48"} zero_extend48_16(bv16) returns (bv64); -procedure {:extern} rely(); - modifies Gamma_mem, mem; - ensures (mem == old(mem)); - ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 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, 2328bv64) == 1bv8); - free requires (memory_load8_le(mem, 2329bv64) == 0bv8); - free requires (memory_load8_le(mem, 2330bv64) == 2bv8); - free requires (memory_load8_le(mem, 2331bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 80bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); - -procedure main() - modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, 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, 131136bv64) == 0bv8); - free requires (memory_load8_le(mem, 131137bv64) == 0bv8); - free requires (memory_load8_le(mem, 131138bv64) == 0bv8); - free requires (memory_load8_le(mem, 131139bv64) == 0bv8); - free requires (memory_load8_le(mem, 131140bv64) == 0bv8); - free requires (memory_load8_le(mem, 131141bv64) == 0bv8); - free requires (memory_load8_le(mem, 131142bv64) == 0bv8); - free requires (memory_load8_le(mem, 131143bv64) == 0bv8); - free requires (memory_load8_le(mem, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 0bv8); - free requires (memory_load8_le(mem, 131152bv64) == 7bv8); - 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) == 108bv8); - free requires (memory_load8_le(mem, 131161bv64) == 107bv8); - free requires (memory_load8_le(mem, 131162bv64) == 97bv8); - free requires (memory_load8_le(mem, 131163bv64) == 106bv8); - free requires (memory_load8_le(mem, 131164bv64) == 100bv8); - free requires (memory_load8_le(mem, 131165bv64) == 108bv8); - free requires (memory_load8_le(mem, 131166bv64) == 107bv8); - free requires (memory_load8_le(mem, 131167bv64) == 97bv8); - free requires (memory_load8_le(mem, 131168bv64) == 106bv8); - free requires (memory_load8_le(mem, 131169bv64) == 100bv8); - free requires (memory_load8_le(mem, 2328bv64) == 1bv8); - free requires (memory_load8_le(mem, 2329bv64) == 0bv8); - free requires (memory_load8_le(mem, 2330bv64) == 2bv8); - free requires (memory_load8_le(mem, 2331bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 80bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 0bv8); - free ensures (Gamma_R29 == old(Gamma_R29)); - free ensures (Gamma_R31 == old(Gamma_R31)); - free ensures (R29 == old(R29)); - free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); -{ - var #4: bv64; - var Gamma_#4: bool; - lmain: - assume {:captureState "lmain"} true; - #4, Gamma_#4 := bvadd64(R31, 18446744073709551584bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); - assume {:captureState "%00000364"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); - assume {:captureState "%0000036a"} true; - R31, Gamma_R31 := #4, Gamma_#4; - R29, Gamma_R29 := R31, Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), true); - assume {:captureState "%0000037b"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), true); - assume {:captureState "%00000382"} true; - R0, Gamma_R0 := 10bv64, true; - R30, Gamma_R30 := 2156bv64, true; - call malloc(); - goto l00000391; - l00000391: - assume {:captureState "l00000391"} true; - R1, Gamma_R1 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - assert (L(mem, R0) ==> Gamma_R1); - mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%000003a8"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - R2, Gamma_R2 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 131072bv64, true; - R1, Gamma_R1 := bvadd64(R0, 88bv64), Gamma_R0; - R0, Gamma_R0 := R2, Gamma_R2; - call rely(); - R2, Gamma_R2 := memory_load64_le(mem, R1), (gamma_load64(Gamma_mem, R1) || L(mem, R1)); - call rely(); - assert (L(mem, R0) ==> Gamma_R2); - mem, Gamma_mem := memory_store64_le(mem, R0, R2), gamma_store64(Gamma_mem, R0, Gamma_R2); - assume {:captureState "%000003da"} true; - call rely(); - R1, Gamma_R1 := zero_extend48_16(memory_load16_le(mem, bvadd64(R1, 8bv64))), (gamma_load16(Gamma_mem, bvadd64(R1, 8bv64)) || L(mem, bvadd64(R1, 8bv64))); - call rely(); - assert (L(mem, bvadd64(R0, 8bv64)) ==> Gamma_R1); - mem, Gamma_mem := memory_store16_le(mem, bvadd64(R0, 8bv64), R1[16:0]), gamma_store16(Gamma_mem, bvadd64(R0, 8bv64), Gamma_R1); - assume {:captureState "%000003e9"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2228bv64, true; - call puts(); - goto l00000405; - l00000405: - assume {:captureState "l00000405"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := bvadd64(R0, 1bv64), Gamma_R0; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R0); - assume {:captureState "%00000423"} true; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - assert (L(mem, R0) ==> true); - mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%00000431"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R2, Gamma_R2 := 10bv64, true; - R1, Gamma_R1 := 1bv64, true; - R30, Gamma_R30 := 2280bv64, true; - call memset(); - goto l00000457; - l00000457: - assume {:captureState "l00000457"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 112bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2296bv64, true; - call #free(); - goto l00000471; - l00000471: - assume {:captureState "l00000471"} true; - R0, Gamma_R0 := 0bv64, true; - 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, 32bv64), 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, 2328bv64) == 1bv8); - free requires (memory_load8_le(mem, 2329bv64) == 0bv8); - free requires (memory_load8_le(mem, 2330bv64) == 2bv8); - free requires (memory_load8_le(mem, 2331bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 80bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 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 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, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); - -procedure memset(); - modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - requires Gamma_R1; - free requires (memory_load8_le(mem, 2328bv64) == 1bv8); - free requires (memory_load8_le(mem, 2329bv64) == 0bv8); - free requires (memory_load8_le(mem, 2330bv64) == 2bv8); - free requires (memory_load8_le(mem, 2331bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 80bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 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_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, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); - -procedure puts(); - modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2328bv64) == 1bv8); - free requires (memory_load8_le(mem, 2329bv64) == 0bv8); - free requires (memory_load8_le(mem, 2330bv64) == 2bv8); - free requires (memory_load8_le(mem, 2331bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 80bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free requires (memory_load8_le(mem, 131145bv64) == 0bv8); - free requires (memory_load8_le(mem, 131146bv64) == 2bv8); - free requires (memory_load8_le(mem, 131147bv64) == 0bv8); - free requires (memory_load8_le(mem, 131148bv64) == 0bv8); - free requires (memory_load8_le(mem, 131149bv64) == 0bv8); - free requires (memory_load8_le(mem, 131150bv64) == 0bv8); - free requires (memory_load8_le(mem, 131151bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2331bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 80bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 0bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 84bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 131144bv64) == 72bv8); - free ensures (memory_load8_le(mem, 131145bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131146bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131147bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131148bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131149bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131150bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131151bv64) == 0bv8); diff --git a/examples/http_parse_basic/example.bpl.rej b/examples/http_parse_basic/example.bpl.rej deleted file mode 100644 index 1a0590f5c..000000000 --- a/examples/http_parse_basic/example.bpl.rej +++ /dev/null @@ -1,12 +0,0 @@ ---- example.bpl 2023-11-15 10:21:51.302483904 +1000 -+++ examplesetcommented.bpl 2023-11-15 10:22:53.783375817 +1000 -@@ -395,7 +395,8 @@ - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - assert (L(mem, R0) ==> true); -- mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); -+ // commented out -+ // mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%00000418"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 120bv64), Gamma_R0; diff --git a/examples/http_parse_basic/example.c b/examples/http_parse_basic/example.c deleted file mode 100644 index 025c55729..000000000 --- a/examples/http_parse_basic/example.c +++ /dev/null @@ -1,37 +0,0 @@ -#include -#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] = "helloo"; - - - -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 + 2; - - // including this makes verification fail - *pos = 0; - - memset(buf, 1, strlen(buf)); - free(buf); // requires secret[i] == true -} - diff --git a/examples/http_parse_basic/example.model b/examples/http_parse_basic/example.model deleted file mode 100644 index 3b8377d11..000000000 --- a/examples/http_parse_basic/example.model +++ /dev/null @@ -1,802 +0,0 @@ -*** MODEL -#4 -> -#4@0 -> 52bv64 -$buf_addr -> 131200bv64 -$password_addr -> 131168bv64 -$stext_addr -> 131176bv64 -Gamma_#4 -> -Gamma_malloc_base -> -Gamma_malloc_base@0 -> -Gamma_malloc_count -> -Gamma_malloc_count@0 -> -Gamma_malloc_end -> -Gamma_malloc_end@0 -> -Gamma_malloc_id -> -Gamma_mem -> |T@[bv64]Bool!val!0| -Gamma_mem@0 -> |T@[bv64]Bool!val!0| -Gamma_mem@1 -> |T@[bv64]Bool!val!7| -Gamma_mem@10 -> |T@[bv64]Bool!val!11| -Gamma_mem@11 -> |T@[bv64]Bool!val!11| -Gamma_mem@2 -> |T@[bv64]Bool!val!7| -Gamma_mem@3 -> |T@[bv64]Bool!val!8| -Gamma_mem@4 -> |T@[bv64]Bool!val!8| -Gamma_mem@5 -> |T@[bv64]Bool!val!8| -Gamma_mem@6 -> |T@[bv64]Bool!val!8| -Gamma_mem@7 -> |T@[bv64]Bool!val!10| -Gamma_mem@8 -> |T@[bv64]Bool!val!10| -Gamma_mem@9 -> |T@[bv64]Bool!val!10| -Gamma_R0 -> -Gamma_R0@0 -> true -Gamma_R0@1 -> true -Gamma_R0@2 -> true -Gamma_R0@3 -> true -Gamma_R0@4 -> true -Gamma_R0@5 -> true -Gamma_R0@6 -> true -Gamma_R0@7 -> true -Gamma_R1 -> -Gamma_R16 -> -Gamma_R16@0 -> -Gamma_R16@1 -> -Gamma_R16@2 -> -Gamma_R16@3 -> -Gamma_R16@4 -> -Gamma_R16@5 -> -Gamma_R17 -> -Gamma_R17@0 -> -Gamma_R17@1 -> -Gamma_R17@2 -> -Gamma_R17@3 -> -Gamma_R17@4 -> -Gamma_R17@5 -> -Gamma_R19 -> false -Gamma_R19@0 -> true -Gamma_R19@1 -> true -Gamma_R2 -> -Gamma_R29 -> false -Gamma_R30 -> false -Gamma_R31 -> -Gamma_stack -> |T@[bv64]Bool!val!1| -Gamma_stack@0 -> |T@[bv64]Bool!val!2| -Gamma_stack@1 -> |T@[bv64]Bool!val!3| -Gamma_stack@2 -> |T@[bv64]Bool!val!4| -Gamma_stack@3 -> |T@[bv64]Bool!val!5| -Gamma_stack@4 -> |T@[bv64]Bool!val!6| -Gamma_stack@5 -> |T@[bv64]Bool!val!9| -malloc_base -> -malloc_base@0 -> |T@[Int]bv64!val!0| -malloc_count -> 0 -malloc_count@0 -> 1 -malloc_end -> -malloc_end@0 -> |T@[Int]bv64!val!1| -malloc_id -> -mem -> |T@[bv64]bv8!val!0| -mem@0 -> |T@[bv64]bv8!val!0| -mem@1 -> |T@[bv64]bv8!val!7| -mem@10 -> |T@[bv64]bv8!val!11| -mem@11 -> |T@[bv64]bv8!val!11| -mem@2 -> |T@[bv64]bv8!val!7| -mem@3 -> |T@[bv64]bv8!val!8| -mem@4 -> |T@[bv64]bv8!val!8| -mem@5 -> |T@[bv64]bv8!val!8| -mem@6 -> |T@[bv64]bv8!val!8| -mem@7 -> |T@[bv64]bv8!val!10| -mem@8 -> |T@[bv64]bv8!val!10| -mem@9 -> |T@[bv64]bv8!val!10| -R0 -> -R0@0 -> 72058143793741822bv64 -R0@1 -> 131200bv64 -R0@10 -> 72058143793741824bv64 -R0@11 -> 131200bv64 -R0@12 -> 131200bv64 -R0@13 -> 72058143793741822bv64 -R0@14 -> 2bv64 -R0@15 -> 131200bv64 -R0@16 -> 72058143793741822bv64 -R0@2 -> 131200bv64 -R0@3 -> 131176bv64 -R0@4 -> 8bv64 -R0@5 -> 131200bv64 -R0@6 -> 72058143793741822bv64 -R0@7 -> 131200bv64 -R0@8 -> 72058143793741822bv64 -R0@9 -> 72058143793741824bv64 -R1 -> -R1@0 -> 131176bv64 -R16 -> -R16@0 -> -R16@1 -> -R16@2 -> -R16@3 -> -R16@4 -> -R16@5 -> -R17 -> -R17@0 -> -R17@1 -> -R17@2 -> -R17@3 -> -R17@4 -> -R17@5 -> -R19 -> 0bv64 -R19@0 -> 72058143793741822bv64 -R19@1 -> 72058143793741822bv64 -R2 -> -R29 -> 0bv64 -R30 -> 0bv64 -R31 -> 100bv64 -stack -> |T@[bv64]bv8!val!1| -stack@0 -> |T@[bv64]bv8!val!2| -stack@1 -> |T@[bv64]bv8!val!3| -stack@2 -> |T@[bv64]bv8!val!4| -stack@3 -> |T@[bv64]bv8!val!5| -stack@4 -> |T@[bv64]bv8!val!6| -stack@5 -> |T@[bv64]bv8!val!9| -ControlFlow -> { - 0 2 -> (- 1) - 0 8 -> 2 - else -> 8 -} -gamma_load32 -> { - else -> true -} -gamma_load64 -> { - else -> true -} -gamma_load8 -> { - |T@[bv64]Bool!val!0| 131168bv64 -> false - |T@[bv64]Bool!val!10| 72058143793741828bv64 -> false - |T@[bv64]Bool!val!7| 131182bv64 -> false - |T@[bv64]Bool!val!8| 131182bv64 -> false - else -> true -} -gamma_store64 -> { - |T@[bv64]Bool!val!0| 131200bv64 true -> |T@[bv64]Bool!val!7| - |T@[bv64]Bool!val!2| 60bv64 false -> |T@[bv64]Bool!val!3| - |T@[bv64]Bool!val!3| 68bv64 false -> |T@[bv64]Bool!val!4| - |T@[bv64]Bool!val!4| 92bv64 true -> |T@[bv64]Bool!val!5| - |T@[bv64]Bool!val!5| 84bv64 true -> |T@[bv64]Bool!val!6| - |T@[bv64]Bool!val!6| 92bv64 true -> |T@[bv64]Bool!val!9| - else -> |T@[bv64]Bool!val!2| -} -gamma_store8 -> { - else -> |T@[bv64]Bool!val!10| -} -memory_load64_le -> { - |T@[bv64]bv8!val!0| 131176bv64 -> 122524351096168bv64 - |T@[bv64]bv8!val!9| 92bv64 -> 72058143793741824bv64 - else -> 72058143793741822bv64 -} -memory_load8_le -> { - |T@[bv64]bv8!val!0| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!0| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!0| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!0| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!0| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!0| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!0| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!0| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!0| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!0| 131176bv64 -> 104bv8 - |T@[bv64]bv8!val!0| 131177bv64 -> 101bv8 - |T@[bv64]bv8!val!0| 131178bv64 -> 108bv8 - |T@[bv64]bv8!val!0| 131179bv64 -> 108bv8 - |T@[bv64]bv8!val!0| 131180bv64 -> 111bv8 - |T@[bv64]bv8!val!0| 131181bv64 -> 111bv8 - |T@[bv64]bv8!val!0| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!0| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!10| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!10| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!10| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!10| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!10| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!10| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!10| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!10| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!10| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!10| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!10| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!10| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!10| 131203bv64 -> 255bv8 - |T@[bv64]bv8!val!10| 131204bv64 -> 127bv8 - |T@[bv64]bv8!val!10| 131207bv64 -> 1bv8 - |T@[bv64]bv8!val!10| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!10| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!11| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!11| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!11| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!11| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!11| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!11| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!11| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!11| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!11| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!11| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!11| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!7| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!7| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!7| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!7| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!7| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!7| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!7| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!7| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!7| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!7| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!7| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!7| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!7| 131203bv64 -> 255bv8 - |T@[bv64]bv8!val!7| 131204bv64 -> 127bv8 - |T@[bv64]bv8!val!7| 131207bv64 -> 1bv8 - |T@[bv64]bv8!val!7| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!7| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!7| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!8| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!8| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!8| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!8| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!8| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!8| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!8| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!8| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!8| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!8| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!8| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!8| 2490bv64 -> 2bv8 - else -> 0bv8 -} -memory_store64_le -> { - |T@[bv64]bv8!val!0| 131200bv64 72058143793741822bv64 -> |T@[bv64]bv8!val!7| - |T@[bv64]bv8!val!2| 60bv64 0bv64 -> |T@[bv64]bv8!val!3| - |T@[bv64]bv8!val!3| 68bv64 0bv64 -> |T@[bv64]bv8!val!4| - |T@[bv64]bv8!val!4| 92bv64 0bv64 -> |T@[bv64]bv8!val!5| - |T@[bv64]bv8!val!5| 84bv64 0bv64 -> |T@[bv64]bv8!val!6| - |T@[bv64]bv8!val!6| 92bv64 72058143793741824bv64 -> |T@[bv64]bv8!val!9| - else -> |T@[bv64]bv8!val!2| -} -memory_store8_le -> { - else -> |T@[bv64]bv8!val!10| -} -Select__T@[bv64]Bool_ -> { - |T@[bv64]Bool!val!0| 131168bv64 -> false - |T@[bv64]Bool!val!0| 131182bv64 -> false - |T@[bv64]Bool!val!10| 72058143793741828bv64 -> false - |T@[bv64]Bool!val!11| 72058143793741828bv64 -> false - |T@[bv64]Bool!val!12| 52bv64 -> false - |T@[bv64]Bool!val!13| 53bv64 -> false - |T@[bv64]Bool!val!14| 54bv64 -> false - |T@[bv64]Bool!val!15| 55bv64 -> false - |T@[bv64]Bool!val!16| 56bv64 -> false - |T@[bv64]Bool!val!17| 57bv64 -> false - |T@[bv64]Bool!val!18| 58bv64 -> false - |T@[bv64]Bool!val!19| 60bv64 -> false - |T@[bv64]Bool!val!2| 59bv64 -> false - |T@[bv64]Bool!val!20| 61bv64 -> false - |T@[bv64]Bool!val!21| 62bv64 -> false - |T@[bv64]Bool!val!22| 63bv64 -> false - |T@[bv64]Bool!val!23| 64bv64 -> false - |T@[bv64]Bool!val!24| 65bv64 -> false - |T@[bv64]Bool!val!25| 66bv64 -> false - |T@[bv64]Bool!val!26| 68bv64 -> false - |T@[bv64]Bool!val!27| 69bv64 -> false - |T@[bv64]Bool!val!28| 70bv64 -> false - |T@[bv64]Bool!val!29| 71bv64 -> false - |T@[bv64]Bool!val!3| 67bv64 -> false - |T@[bv64]Bool!val!30| 72bv64 -> false - |T@[bv64]Bool!val!31| 73bv64 -> false - |T@[bv64]Bool!val!32| 74bv64 -> false - |T@[bv64]Bool!val!4| 75bv64 -> false - |T@[bv64]Bool!val!47| 131182bv64 -> false - |T@[bv64]Bool!val!48| 131182bv64 -> false - |T@[bv64]Bool!val!49| 131182bv64 -> false - |T@[bv64]Bool!val!50| 131182bv64 -> false - |T@[bv64]Bool!val!51| 131182bv64 -> false - |T@[bv64]Bool!val!52| 131182bv64 -> false - |T@[bv64]Bool!val!53| 131182bv64 -> false - |T@[bv64]Bool!val!7| 131182bv64 -> false - |T@[bv64]Bool!val!8| 131182bv64 -> false - |T@[bv64]Bool!val!8| 72058143793741828bv64 -> false - else -> true -} -Select__T@[bv64]bv8_ -> { - |T@[bv64]bv8!val!0| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!0| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!0| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!0| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!0| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!0| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!0| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!0| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!0| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!0| 131176bv64 -> 104bv8 - |T@[bv64]bv8!val!0| 131177bv64 -> 101bv8 - |T@[bv64]bv8!val!0| 131178bv64 -> 108bv8 - |T@[bv64]bv8!val!0| 131179bv64 -> 108bv8 - |T@[bv64]bv8!val!0| 131180bv64 -> 111bv8 - |T@[bv64]bv8!val!0| 131181bv64 -> 111bv8 - |T@[bv64]bv8!val!0| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!0| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!0| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!10| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!10| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!10| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!10| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!10| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!10| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!10| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!10| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!10| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!10| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!10| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!10| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!10| 131203bv64 -> 255bv8 - |T@[bv64]bv8!val!10| 131204bv64 -> 127bv8 - |T@[bv64]bv8!val!10| 131207bv64 -> 1bv8 - |T@[bv64]bv8!val!10| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!10| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!11| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!11| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!11| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!11| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!11| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!11| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!11| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!11| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!11| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!11| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!11| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!11| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!11| 131203bv64 -> 255bv8 - |T@[bv64]bv8!val!11| 131204bv64 -> 127bv8 - |T@[bv64]bv8!val!11| 131207bv64 -> 1bv8 - |T@[bv64]bv8!val!11| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!11| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!47| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!47| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!47| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!47| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!47| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!47| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!47| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!47| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!47| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!47| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!47| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!47| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!47| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!48| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!48| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!48| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!48| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!48| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!48| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!48| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!48| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!48| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!48| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!48| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!48| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!48| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!48| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!49| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!49| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!49| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!49| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!49| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!49| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!49| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!49| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!49| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!49| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!49| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!49| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!49| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!49| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!49| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!50| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!50| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!50| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!50| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!50| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!50| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!50| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!50| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!50| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!50| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!50| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!50| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!50| 131203bv64 -> 255bv8 - |T@[bv64]bv8!val!50| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!50| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!50| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!51| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!51| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!51| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!51| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!51| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!51| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!51| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!51| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!51| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!51| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!51| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!51| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!51| 131203bv64 -> 255bv8 - |T@[bv64]bv8!val!51| 131204bv64 -> 127bv8 - |T@[bv64]bv8!val!51| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!51| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!51| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!52| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!52| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!52| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!52| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!52| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!52| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!52| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!52| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!52| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!52| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!52| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!52| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!52| 131203bv64 -> 255bv8 - |T@[bv64]bv8!val!52| 131204bv64 -> 127bv8 - |T@[bv64]bv8!val!52| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!52| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!52| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!53| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!53| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!53| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!53| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!53| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!53| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!53| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!53| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!53| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!53| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!53| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!53| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!53| 131203bv64 -> 255bv8 - |T@[bv64]bv8!val!53| 131204bv64 -> 127bv8 - |T@[bv64]bv8!val!53| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!53| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!53| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!58| 96bv64 -> 128bv8 - |T@[bv64]bv8!val!59| 96bv64 -> 128bv8 - |T@[bv64]bv8!val!60| 96bv64 -> 128bv8 - |T@[bv64]bv8!val!7| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!7| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!7| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!7| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!7| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!7| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!7| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!7| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!7| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!7| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!7| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!7| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!7| 131203bv64 -> 255bv8 - |T@[bv64]bv8!val!7| 131204bv64 -> 127bv8 - |T@[bv64]bv8!val!7| 131207bv64 -> 1bv8 - |T@[bv64]bv8!val!7| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!7| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!7| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!8| 130504bv64 -> 208bv8 - |T@[bv64]bv8!val!8| 130505bv64 -> 8bv8 - |T@[bv64]bv8!val!8| 130512bv64 -> 128bv8 - |T@[bv64]bv8!val!8| 130513bv64 -> 8bv8 - |T@[bv64]bv8!val!8| 131032bv64 -> 212bv8 - |T@[bv64]bv8!val!8| 131033bv64 -> 8bv8 - |T@[bv64]bv8!val!8| 131160bv64 -> 88bv8 - |T@[bv64]bv8!val!8| 131162bv64 -> 2bv8 - |T@[bv64]bv8!val!8| 131168bv64 -> 7bv8 - |T@[bv64]bv8!val!8| 131200bv64 -> 254bv8 - |T@[bv64]bv8!val!8| 131201bv64 -> 255bv8 - |T@[bv64]bv8!val!8| 131202bv64 -> 255bv8 - |T@[bv64]bv8!val!8| 131203bv64 -> 255bv8 - |T@[bv64]bv8!val!8| 131204bv64 -> 127bv8 - |T@[bv64]bv8!val!8| 131207bv64 -> 1bv8 - |T@[bv64]bv8!val!8| 18374685929916072154bv64 -> 64bv8 - |T@[bv64]bv8!val!8| 2488bv64 -> 1bv8 - |T@[bv64]bv8!val!8| 2490bv64 -> 2bv8 - |T@[bv64]bv8!val!9| 96bv64 -> 128bv8 - |T@[bv64]bv8!val!9| 99bv64 -> 1bv8 - else -> 0bv8 -} -Select__T@[Int]bv64_ -> { - |T@[Int]bv64!val!1| 1 -> 72058143793741833bv64 - else -> 72058143793741822bv64 -} -Store__T@[bv64]Bool_ -> { - |T@[bv64]Bool!val!0| 131200bv64 true -> |T@[bv64]Bool!val!47| - |T@[bv64]Bool!val!12| 53bv64 false -> |T@[bv64]Bool!val!13| - |T@[bv64]Bool!val!13| 54bv64 false -> |T@[bv64]Bool!val!14| - |T@[bv64]Bool!val!14| 55bv64 false -> |T@[bv64]Bool!val!15| - |T@[bv64]Bool!val!15| 56bv64 false -> |T@[bv64]Bool!val!16| - |T@[bv64]Bool!val!16| 57bv64 false -> |T@[bv64]Bool!val!17| - |T@[bv64]Bool!val!17| 58bv64 false -> |T@[bv64]Bool!val!18| - |T@[bv64]Bool!val!18| 59bv64 false -> |T@[bv64]Bool!val!2| - |T@[bv64]Bool!val!19| 61bv64 false -> |T@[bv64]Bool!val!20| - |T@[bv64]Bool!val!2| 60bv64 false -> |T@[bv64]Bool!val!19| - |T@[bv64]Bool!val!20| 62bv64 false -> |T@[bv64]Bool!val!21| - |T@[bv64]Bool!val!21| 63bv64 false -> |T@[bv64]Bool!val!22| - |T@[bv64]Bool!val!22| 64bv64 false -> |T@[bv64]Bool!val!23| - |T@[bv64]Bool!val!23| 65bv64 false -> |T@[bv64]Bool!val!24| - |T@[bv64]Bool!val!24| 66bv64 false -> |T@[bv64]Bool!val!25| - |T@[bv64]Bool!val!25| 67bv64 false -> |T@[bv64]Bool!val!3| - |T@[bv64]Bool!val!26| 69bv64 false -> |T@[bv64]Bool!val!27| - |T@[bv64]Bool!val!27| 70bv64 false -> |T@[bv64]Bool!val!28| - |T@[bv64]Bool!val!28| 71bv64 false -> |T@[bv64]Bool!val!29| - |T@[bv64]Bool!val!29| 72bv64 false -> |T@[bv64]Bool!val!30| - |T@[bv64]Bool!val!3| 68bv64 false -> |T@[bv64]Bool!val!26| - |T@[bv64]Bool!val!30| 73bv64 false -> |T@[bv64]Bool!val!31| - |T@[bv64]Bool!val!31| 74bv64 false -> |T@[bv64]Bool!val!32| - |T@[bv64]Bool!val!32| 75bv64 false -> |T@[bv64]Bool!val!4| - |T@[bv64]Bool!val!33| 93bv64 true -> |T@[bv64]Bool!val!34| - |T@[bv64]Bool!val!34| 94bv64 true -> |T@[bv64]Bool!val!35| - |T@[bv64]Bool!val!35| 95bv64 true -> |T@[bv64]Bool!val!36| - |T@[bv64]Bool!val!36| 96bv64 true -> |T@[bv64]Bool!val!37| - |T@[bv64]Bool!val!37| 97bv64 true -> |T@[bv64]Bool!val!38| - |T@[bv64]Bool!val!38| 98bv64 true -> |T@[bv64]Bool!val!39| - |T@[bv64]Bool!val!39| 99bv64 true -> |T@[bv64]Bool!val!5| - |T@[bv64]Bool!val!4| 92bv64 true -> |T@[bv64]Bool!val!33| - |T@[bv64]Bool!val!40| 85bv64 true -> |T@[bv64]Bool!val!41| - |T@[bv64]Bool!val!41| 86bv64 true -> |T@[bv64]Bool!val!42| - |T@[bv64]Bool!val!42| 87bv64 true -> |T@[bv64]Bool!val!43| - |T@[bv64]Bool!val!43| 88bv64 true -> |T@[bv64]Bool!val!44| - |T@[bv64]Bool!val!44| 89bv64 true -> |T@[bv64]Bool!val!45| - |T@[bv64]Bool!val!45| 90bv64 true -> |T@[bv64]Bool!val!46| - |T@[bv64]Bool!val!46| 91bv64 true -> |T@[bv64]Bool!val!6| - |T@[bv64]Bool!val!47| 131201bv64 true -> |T@[bv64]Bool!val!48| - |T@[bv64]Bool!val!48| 131202bv64 true -> |T@[bv64]Bool!val!49| - |T@[bv64]Bool!val!49| 131203bv64 true -> |T@[bv64]Bool!val!50| - |T@[bv64]Bool!val!5| 84bv64 true -> |T@[bv64]Bool!val!40| - |T@[bv64]Bool!val!50| 131204bv64 true -> |T@[bv64]Bool!val!51| - |T@[bv64]Bool!val!51| 131205bv64 true -> |T@[bv64]Bool!val!52| - |T@[bv64]Bool!val!52| 131206bv64 true -> |T@[bv64]Bool!val!53| - |T@[bv64]Bool!val!53| 131207bv64 true -> |T@[bv64]Bool!val!7| - |T@[bv64]Bool!val!54| 93bv64 true -> |T@[bv64]Bool!val!55| - |T@[bv64]Bool!val!55| 94bv64 true -> |T@[bv64]Bool!val!56| - |T@[bv64]Bool!val!56| 95bv64 true -> |T@[bv64]Bool!val!57| - |T@[bv64]Bool!val!57| 96bv64 true -> |T@[bv64]Bool!val!58| - |T@[bv64]Bool!val!58| 97bv64 true -> |T@[bv64]Bool!val!59| - |T@[bv64]Bool!val!59| 98bv64 true -> |T@[bv64]Bool!val!60| - |T@[bv64]Bool!val!6| 92bv64 true -> |T@[bv64]Bool!val!54| - |T@[bv64]Bool!val!60| 99bv64 true -> |T@[bv64]Bool!val!9| - |T@[bv64]Bool!val!8| 72058143793741824bv64 true -> |T@[bv64]Bool!val!10| - else -> |T@[bv64]Bool!val!12| -} -Store__T@[bv64]bv8_ -> { - |T@[bv64]bv8!val!0| 131200bv64 254bv8 -> |T@[bv64]bv8!val!47| - |T@[bv64]bv8!val!12| 53bv64 0bv8 -> |T@[bv64]bv8!val!13| - |T@[bv64]bv8!val!13| 54bv64 0bv8 -> |T@[bv64]bv8!val!14| - |T@[bv64]bv8!val!14| 55bv64 0bv8 -> |T@[bv64]bv8!val!15| - |T@[bv64]bv8!val!15| 56bv64 0bv8 -> |T@[bv64]bv8!val!16| - |T@[bv64]bv8!val!16| 57bv64 0bv8 -> |T@[bv64]bv8!val!17| - |T@[bv64]bv8!val!17| 58bv64 0bv8 -> |T@[bv64]bv8!val!18| - |T@[bv64]bv8!val!18| 59bv64 0bv8 -> |T@[bv64]bv8!val!2| - |T@[bv64]bv8!val!19| 61bv64 0bv8 -> |T@[bv64]bv8!val!20| - |T@[bv64]bv8!val!2| 60bv64 0bv8 -> |T@[bv64]bv8!val!19| - |T@[bv64]bv8!val!20| 62bv64 0bv8 -> |T@[bv64]bv8!val!21| - |T@[bv64]bv8!val!21| 63bv64 0bv8 -> |T@[bv64]bv8!val!22| - |T@[bv64]bv8!val!22| 64bv64 0bv8 -> |T@[bv64]bv8!val!23| - |T@[bv64]bv8!val!23| 65bv64 0bv8 -> |T@[bv64]bv8!val!24| - |T@[bv64]bv8!val!24| 66bv64 0bv8 -> |T@[bv64]bv8!val!25| - |T@[bv64]bv8!val!25| 67bv64 0bv8 -> |T@[bv64]bv8!val!3| - |T@[bv64]bv8!val!26| 69bv64 0bv8 -> |T@[bv64]bv8!val!27| - |T@[bv64]bv8!val!27| 70bv64 0bv8 -> |T@[bv64]bv8!val!28| - |T@[bv64]bv8!val!28| 71bv64 0bv8 -> |T@[bv64]bv8!val!29| - |T@[bv64]bv8!val!29| 72bv64 0bv8 -> |T@[bv64]bv8!val!30| - |T@[bv64]bv8!val!3| 68bv64 0bv8 -> |T@[bv64]bv8!val!26| - |T@[bv64]bv8!val!30| 73bv64 0bv8 -> |T@[bv64]bv8!val!31| - |T@[bv64]bv8!val!31| 74bv64 0bv8 -> |T@[bv64]bv8!val!32| - |T@[bv64]bv8!val!32| 75bv64 0bv8 -> |T@[bv64]bv8!val!4| - |T@[bv64]bv8!val!33| 93bv64 0bv8 -> |T@[bv64]bv8!val!34| - |T@[bv64]bv8!val!34| 94bv64 0bv8 -> |T@[bv64]bv8!val!35| - |T@[bv64]bv8!val!35| 95bv64 0bv8 -> |T@[bv64]bv8!val!36| - |T@[bv64]bv8!val!36| 96bv64 0bv8 -> |T@[bv64]bv8!val!37| - |T@[bv64]bv8!val!37| 97bv64 0bv8 -> |T@[bv64]bv8!val!38| - |T@[bv64]bv8!val!38| 98bv64 0bv8 -> |T@[bv64]bv8!val!39| - |T@[bv64]bv8!val!39| 99bv64 0bv8 -> |T@[bv64]bv8!val!5| - |T@[bv64]bv8!val!4| 92bv64 0bv8 -> |T@[bv64]bv8!val!33| - |T@[bv64]bv8!val!40| 85bv64 0bv8 -> |T@[bv64]bv8!val!41| - |T@[bv64]bv8!val!41| 86bv64 0bv8 -> |T@[bv64]bv8!val!42| - |T@[bv64]bv8!val!42| 87bv64 0bv8 -> |T@[bv64]bv8!val!43| - |T@[bv64]bv8!val!43| 88bv64 0bv8 -> |T@[bv64]bv8!val!44| - |T@[bv64]bv8!val!44| 89bv64 0bv8 -> |T@[bv64]bv8!val!45| - |T@[bv64]bv8!val!45| 90bv64 0bv8 -> |T@[bv64]bv8!val!46| - |T@[bv64]bv8!val!46| 91bv64 0bv8 -> |T@[bv64]bv8!val!6| - |T@[bv64]bv8!val!47| 131201bv64 255bv8 -> |T@[bv64]bv8!val!48| - |T@[bv64]bv8!val!48| 131202bv64 255bv8 -> |T@[bv64]bv8!val!49| - |T@[bv64]bv8!val!49| 131203bv64 255bv8 -> |T@[bv64]bv8!val!50| - |T@[bv64]bv8!val!5| 84bv64 0bv8 -> |T@[bv64]bv8!val!40| - |T@[bv64]bv8!val!50| 131204bv64 127bv8 -> |T@[bv64]bv8!val!51| - |T@[bv64]bv8!val!51| 131205bv64 0bv8 -> |T@[bv64]bv8!val!52| - |T@[bv64]bv8!val!52| 131206bv64 0bv8 -> |T@[bv64]bv8!val!53| - |T@[bv64]bv8!val!53| 131207bv64 1bv8 -> |T@[bv64]bv8!val!7| - |T@[bv64]bv8!val!54| 93bv64 0bv8 -> |T@[bv64]bv8!val!55| - |T@[bv64]bv8!val!55| 94bv64 0bv8 -> |T@[bv64]bv8!val!56| - |T@[bv64]bv8!val!56| 95bv64 0bv8 -> |T@[bv64]bv8!val!57| - |T@[bv64]bv8!val!57| 96bv64 128bv8 -> |T@[bv64]bv8!val!58| - |T@[bv64]bv8!val!58| 97bv64 0bv8 -> |T@[bv64]bv8!val!59| - |T@[bv64]bv8!val!59| 98bv64 0bv8 -> |T@[bv64]bv8!val!60| - |T@[bv64]bv8!val!6| 92bv64 0bv8 -> |T@[bv64]bv8!val!54| - |T@[bv64]bv8!val!60| 99bv64 1bv8 -> |T@[bv64]bv8!val!9| - |T@[bv64]bv8!val!8| 72058143793741824bv64 0bv8 -> |T@[bv64]bv8!val!10| - else -> |T@[bv64]bv8!val!12| -} -tickleBool -> { - else -> true -} -*** STATE - #4 -> - Gamma_#4 -> - Gamma_malloc_base -> - Gamma_malloc_count -> - Gamma_malloc_end -> - Gamma_malloc_id -> - Gamma_mem -> |T@[bv64]Bool!val!0| - Gamma_R0 -> - Gamma_R1 -> - Gamma_R16 -> - Gamma_R17 -> - Gamma_R19 -> false - Gamma_R2 -> - Gamma_R29 -> false - Gamma_R30 -> false - Gamma_R31 -> - Gamma_stack -> |T@[bv64]Bool!val!1| - malloc_base -> - malloc_count -> 0 - malloc_end -> - malloc_id -> - mem -> |T@[bv64]bv8!val!0| - R0 -> - R1 -> - R16 -> - R17 -> - R19 -> 0bv64 - R2 -> - R29 -> 0bv64 - R30 -> 0bv64 - R31 -> 100bv64 - stack -> |T@[bv64]bv8!val!1| -*** END_STATE -*** STATE lmain -*** END_STATE -*** STATE %00000384 - #4 -> 52bv64 - Gamma_#4 -> - Gamma_stack -> |T@[bv64]Bool!val!2| - stack -> |T@[bv64]bv8!val!2| -*** END_STATE -*** STATE %0000038a - Gamma_stack -> |T@[bv64]Bool!val!3| - stack -> |T@[bv64]bv8!val!3| -*** END_STATE -*** STATE %0000039c - Gamma_R29 -> - Gamma_R31 -> - Gamma_stack -> |T@[bv64]Bool!val!4| - R29 -> 52bv64 - R31 -> 52bv64 - stack -> |T@[bv64]bv8!val!4| -*** END_STATE -*** STATE %000003a3 - Gamma_stack -> |T@[bv64]Bool!val!5| - stack -> |T@[bv64]bv8!val!5| -*** END_STATE -*** STATE %000003aa - Gamma_stack -> |T@[bv64]Bool!val!6| - stack -> |T@[bv64]bv8!val!6| -*** END_STATE -*** STATE l000003b9 - Gamma_malloc_base -> - Gamma_malloc_count -> - Gamma_malloc_end -> - Gamma_R0 -> true - Gamma_R16 -> - Gamma_R17 -> - Gamma_R30 -> true - malloc_base -> |T@[Int]bv64!val!0| - malloc_count -> 1 - malloc_end -> |T@[Int]bv64!val!1| - R0 -> 72058143793741822bv64 - R16 -> - R17 -> - R30 -> 2288bv64 -*** END_STATE -*** STATE %000003d0 - Gamma_mem -> |T@[bv64]Bool!val!7| - Gamma_R0 -> true - Gamma_R1 -> true - mem -> |T@[bv64]bv8!val!7| - R0 -> 131200bv64 - R1 -> 72058143793741822bv64 -*** END_STATE -*** STATE l000003f7 - Gamma_mem -> |T@[bv64]Bool!val!7| - Gamma_R0 -> true - Gamma_R16 -> - Gamma_R17 -> - Gamma_R19 -> true - Gamma_R30 -> true - mem -> |T@[bv64]bv8!val!7| - R0 -> 8bv64 - R16 -> - R17 -> - R19 -> 72058143793741822bv64 - R30 -> 2328bv64 -*** END_STATE -*** STATE l00000416 - Gamma_mem -> |T@[bv64]Bool!val!8| - Gamma_R0 -> true - Gamma_R1 -> true - Gamma_R16 -> - Gamma_R17 -> - Gamma_R2 -> true - Gamma_R30 -> true - mem -> |T@[bv64]bv8!val!8| - R0 -> 72058143793741822bv64 - R1 -> 131176bv64 - R16 -> - R17 -> - R2 -> 8bv64 - R30 -> 2348bv64 -*** END_STATE -*** STATE l00000430 - Gamma_mem -> |T@[bv64]Bool!val!8| - Gamma_R0 -> true - Gamma_R16 -> - Gamma_R17 -> - Gamma_R30 -> true - mem -> |T@[bv64]bv8!val!8| - R0 -> 72058143793741822bv64 - R16 -> - R17 -> - R30 -> 2364bv64 -*** END_STATE -*** STATE %0000044e - Gamma_mem -> |T@[bv64]Bool!val!8| - Gamma_R0 -> true - Gamma_stack -> |T@[bv64]Bool!val!9| - mem -> |T@[bv64]bv8!val!8| - R0 -> 72058143793741824bv64 - stack -> |T@[bv64]bv8!val!9| -*** END_STATE -*** STATE %0000045c - Gamma_mem -> |T@[bv64]Bool!val!10| - Gamma_R0 -> true - mem -> |T@[bv64]bv8!val!10| - R0 -> 72058143793741824bv64 -*** END_STATE -*** STATE l00000489 - Gamma_mem -> |T@[bv64]Bool!val!10| - Gamma_R0 -> true - Gamma_R16 -> - Gamma_R17 -> - Gamma_R19 -> true - Gamma_R30 -> true - mem -> |T@[bv64]bv8!val!10| - R0 -> 2bv64 - R16 -> - R17 -> - R19 -> 72058143793741822bv64 - R30 -> 2420bv64 -*** END_STATE -*** STATE l000004a2 - Gamma_mem -> |T@[bv64]Bool!val!11| - Gamma_R0 -> true - Gamma_R1 -> true - Gamma_R16 -> - Gamma_R17 -> - Gamma_R2 -> true - Gamma_R30 -> true - mem -> |T@[bv64]bv8!val!11| - R0 -> 72058143793741822bv64 - R1 -> 1bv64 - R16 -> - R17 -> - R2 -> 2bv64 - R30 -> 2436bv64 -*** END_STATE -*** END_MODEL diff --git a/examples/http_parse_basic/example.relf b/examples/http_parse_basic/example.relf deleted file mode 100644 index 66be10280..000000000 --- a/examples/http_parse_basic/example.relf +++ /dev/null @@ -1,143 +0,0 @@ - -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 -000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 - -Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 -0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 -0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 -0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 -0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 -0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 -0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 -0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 -0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 - -Symbol table '.dynsym' contains 15 entries: - Num: Value Size Type Bind Vis Ndx Name - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init - 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) - 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) - 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) - 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) - 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) - 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) - 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) - 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) - 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) - 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - -Symbol table '.symtab' contains 98 entries: - Num: Value Size Type Bind Vis Ndx Name - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp - 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id - 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag - 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash - 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym - 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr - 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version - 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r - 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn - 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt - 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init - 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt - 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text - 14: 00000000000009a4 0 SECTION LOCAL DEFAULT 14 .fini - 15: 00000000000009b8 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 00000000000009bc 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009f8 0 SECTION LOCAL DEFAULT 17 .eh_frame - 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array - 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array - 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic - 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got - 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt - 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss - 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment - 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o - 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d - 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag - 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 0000000000000a0c 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 00000000000009b8 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 00000000000009a4 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a20 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS example.c - 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d - 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d - 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x - 58: 0000000000000a80 0 NOTYPE LOCAL DEFAULT 17 $d - 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 60: 0000000000000aa4 0 NOTYPE LOCAL DEFAULT 17 $d - 61: 0000000000000aa4 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 64: 00000000000009bc 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata - 76: 00000000000009a4 0 FUNC GLOBAL HIDDEN 14 _fini - 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 85: 00000000000009b8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end - 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf - 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext - 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 94: 00000000000008d4 208 FUNC GLOBAL DEFAULT 13 main - 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/examples/http_parse_basic/example.spec b/examples/http_parse_basic/example.spec deleted file mode 100644 index c5d06fc4a..000000000 --- a/examples/http_parse_basic/example.spec +++ /dev/null @@ -1,76 +0,0 @@ -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/examples/http_parse_basic/extraspec.bpl b/examples/http_parse_basic/extraspec.bpl deleted file mode 100644 index be56c0989..000000000 --- a/examples/http_parse_basic/extraspec.bpl +++ /dev/null @@ -1,20 +0,0 @@ - -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/examples/http_parse_basic/patch.diff b/examples/http_parse_basic/patch.diff deleted file mode 100644 index 1a0590f5c..000000000 --- a/examples/http_parse_basic/patch.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- example.bpl 2023-11-15 10:21:51.302483904 +1000 -+++ examplesetcommented.bpl 2023-11-15 10:22:53.783375817 +1000 -@@ -395,7 +395,8 @@ - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - assert (L(mem, R0) ==> true); -- mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); -+ // commented out -+ // mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%00000418"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 120bv64), Gamma_R0; diff --git a/examples/http_parse_basic/simplememcpy.c b/examples/http_parse_basic/simplememcpy.c deleted file mode 100644 index e69de29bb..000000000 diff --git a/examples/http_parse_basic/smtout.log b/examples/http_parse_basic/smtout.log deleted file mode 100644 index b74b65bda..000000000 --- a/examples/http_parse_basic/smtout.log +++ /dev/null @@ -1,1679 +0,0 @@ -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(set-info :boogie-vc-id rely_transitive_split0) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 1) true) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(set-info :boogie-vc-id rely_transitive_split1) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (= mem@0 mem) (=> (and (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02))) (=> (and (and (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02))) (and (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (= mem@1 mem@0)) (and (= Gamma_mem@1 Gamma_mem@0) (= (memory_load8_le mem@1 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@1 #x00000000000009b9) #x00) (= (memory_load8_le mem@1 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@1 #x00000000000009bb) #x00) (= (memory_load8_le mem@1 #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdc9) #x08) (= (memory_load8_le mem@1 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcb) #x00) (= (memory_load8_le mem@1 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdcd) #x00) (= (memory_load8_le mem@1 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcf) #x00) (= (memory_load8_le mem@1 #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd1) #x08) (= (memory_load8_le mem@1 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd3) #x00) (= (memory_load8_le mem@1 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd5) #x00) (= (memory_load8_le mem@1 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd7) #x00) (= (memory_load8_le mem@1 #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffd9) #x08) (= (memory_load8_le mem@1 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdb) #x00) (= (memory_load8_le mem@1 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffdd) #x00) (= (memory_load8_le mem@1 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdf) #x00) (= (memory_load8_le mem@1 #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020059) #x00) (= (memory_load8_le mem@1 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@1 #x000000000002005b) #x00) (= (memory_load8_le mem@1 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000002005d) #x00) (= (memory_load8_le mem@1 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@1 #x000000000002005f) #x00) (= (ControlFlow 0 2) (- 0 1)))))))) (= mem@1 mem))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(set-info :boogie-vc-id rely_transitive_split2) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((anon0_correct (=> (and (= mem@0 mem) (= Gamma_mem@0 Gamma_mem)) (=> (and (and (= (memory_load8_le mem@0 #x00000000000009b8) #x01) (= (memory_load8_le mem@0 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@0 #x00000000000009ba) #x02) (= (memory_load8_le mem@0 #x00000000000009bb) #x00))) (=> (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@0 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x80) (= (memory_load8_le mem@0 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@0 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x0000000000020058) #x58) (= (memory_load8_le mem@0 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005a) #x02) (= (memory_load8_le mem@0 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005c) #x00) (= (memory_load8_le mem@0 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005e) #x00) (= (memory_load8_le mem@0 #x000000000002005f) #x00)))) (and (and (and (= mem@1 mem@0) (= Gamma_mem@1 Gamma_mem@0)) (and (= (memory_load8_le mem@1 #x00000000000009b8) #x01) (= (memory_load8_le mem@1 #x00000000000009b9) #x00))) (and (and (= (memory_load8_le mem@1 #x00000000000009ba) #x02) (= (memory_load8_le mem@1 #x00000000000009bb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@1 #x000000000001fdc9) #x08)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdca) #x00) (= (memory_load8_le mem@1 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdcc) #x00) (= (memory_load8_le mem@1 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdce) #x00) (= (memory_load8_le mem@1 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd0) #x80) (= (memory_load8_le mem@1 #x000000000001fdd1) #x08)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd2) #x00) (= (memory_load8_le mem@1 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd4) #x00) (= (memory_load8_le mem@1 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd6) #x00) (= (memory_load8_le mem@1 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@1 #x000000000001ffd9) #x08))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffda) #x00) (= (memory_load8_le mem@1 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffdc) #x00) (= (memory_load8_le mem@1 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffde) #x00) (= (memory_load8_le mem@1 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@1 #x0000000000020058) #x58) (= (memory_load8_le mem@1 #x0000000000020059) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x000000000002005a) #x02) (= (memory_load8_le mem@1 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@1 #x000000000002005c) #x00) (= (memory_load8_le mem@1 #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000002005e) #x00) (= (memory_load8_le mem@1 #x000000000002005f) #x00)) (and (= mem@1 mem) (= (ControlFlow 0 2) (- 0 1)))))))) (= Gamma_mem@1 Gamma_mem))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 3) 2) anon0_correct))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(set-info :boogie-vc-id main_split0) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 1) true) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R19 () (_ BitVec 64)) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R19 () Bool) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun malloc_count () Int) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(set-info :boogie-vc-id main_split1) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (= (ControlFlow 0 2) (- 0 1)))) (bvugt #x000000000000000b #x0000000000000000)))))) -(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R19 () (_ BitVec 64)) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R19 () Bool) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun malloc_count () Int) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(set-info :boogie-vc-id main_split2) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= (ControlFlow 0 2) (- 0 1))))) (= true true)))))) -(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R19 () (_ BitVec 64)) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R19 () Bool) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_R0@0 () Bool) -(declare-fun malloc_count@0 () Int) -(declare-fun malloc_count () Int) -(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) -(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun malloc_base () (Array Int (_ BitVec 64))) -(declare-fun malloc_end () (Array Int (_ BitVec 64))) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(set-info :boogie-vc-id main_split3) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= true true)))) (=> (and (and (and (and (and (= (memory_load64_le mem $buf_addr) (memory_load64_le mem $buf_addr)) (= (memory_load8_le mem $password_addr) (memory_load8_le mem $password_addr))) (= Gamma_R0@0 true)) (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0)))) (and (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b))) (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) - :qid |examplebpl.497:19| - :skolemid |11| -)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) - :qid |examplebpl.498:19| - :skolemid |12| -))))) (and (and (and (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) - :qid |examplebpl.500:19| - :skolemid |13| -))) (and (= (memory_load8_le mem #x00000000000009b8) #x01) (= (memory_load8_le mem #x00000000000009b9) #x00))) (and (and (= (memory_load8_le mem #x00000000000009ba) #x02) (= (memory_load8_le mem #x00000000000009bb) #x00)) (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)))) (and (and (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)))))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)))) (and (and (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00))))) (and (and (and (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00)) (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)) (and (= R0@1 (bvadd #x0000000000020000 #x0000000000000080)) (= mem@0 mem)))) (and (and (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02))) (and (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02)))) (and (and (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (= (ControlFlow 0 2) (- 0 1))) (L mem@0 R0@1)))))) Gamma_R0@0))))))) -(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R19 () (_ BitVec 64)) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R19 () Bool) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_R0@0 () Bool) -(declare-fun malloc_count@0 () Int) -(declare-fun malloc_count () Int) -(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) -(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun malloc_base () (Array Int (_ BitVec 64))) -(declare-fun malloc_end () (Array Int (_ BitVec 64))) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@2 () (_ BitVec 64)) -(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) -(declare-fun R19@0 () (_ BitVec 64)) -(declare-fun Gamma_R19@0 () Bool) -(declare-fun R0@3 () (_ BitVec 64)) -(declare-fun Gamma_R0@1 () Bool) -(declare-fun R0@4 () (_ BitVec 64)) -(declare-fun R1@0 () (_ BitVec 64)) -(set-info :boogie-vc-id main_split4) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= true true)))) (and (and (and (= (memory_load64_le mem $buf_addr) (memory_load64_le mem $buf_addr)) (= (memory_load8_le mem $password_addr) (memory_load8_le mem $password_addr))) (= Gamma_R0@0 true)) (and (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0))) (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b)))))) (and (and (and (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) - :qid |examplebpl.497:19| - :skolemid |11| -)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) - :qid |examplebpl.498:19| - :skolemid |12| -))) (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) - :qid |examplebpl.500:19| - :skolemid |13| -)))) (and (and (= (memory_load8_le mem #x00000000000009b8) #x01) (= (memory_load8_le mem #x00000000000009b9) #x00)) (and (= (memory_load8_le mem #x00000000000009ba) #x02) (= (memory_load8_le mem #x00000000000009bb) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= R0@1 (bvadd #x0000000000020000 #x0000000000000080)) (= mem@0 mem)) (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0))))))) (=> (and (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (=> (L mem@0 R0@1) Gamma_R0@0)))))) (and (and (and (and (and (= mem@1 (memory_store64_le mem@0 R0@1 R0@0)) (= Gamma_mem@1 (gamma_store64 Gamma_mem@0 R0@1 Gamma_R0@0))) (= R0@2 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@2 mem@1) (= Gamma_mem@2 Gamma_mem@1))) (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R19@0 (memory_load64_le mem@2 R0@2)) (= Gamma_R19@0 (or (gamma_load64 Gamma_mem@2 R0@2) (L mem@2 R0@2)))) (= R0@3 (bvadd #x0000000000020000 #x0000000000000068))))) (and (and (and (and (= (memory_load64_le mem@2 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@2 $password_addr) (memory_load8_le mem@2 $password_addr))) (= (memory_load8_le mem@2 $stext_addr) (memory_load8_le mem@2 $stext_addr))) (and (= Gamma_R0@1 true) (forall ((i@@4 (_ BitVec 64)) ) (! (=> (and (bvule R0@3 i@@4) (bvult i@@4 (bvadd R0@3 R0@4))) (not (= (select mem@2 i@@4) #x00))) - :qid |examplebpl.812:19| - :skolemid |18| -)))) (and (and (and (= (memory_load8_le mem@2 (bvadd R0@3 R0@4)) #x00) (bvult R0@3 (bvadd (bvadd R0@3 R0@4) #x0000000000000001))) (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00))) (and (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)))))) (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00)) (and (= R1@0 (bvadd #x0000000000020000 #x0000000000000068)) (= (ControlFlow 0 2) (- 0 1))))))))) (or (bvugt R19@0 (bvadd R1@0 R0@4)) (bvugt R1@0 (bvadd R19@0 R0@4))))))))) -(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(get-info :reason-unknown) -(assert (not (= (ControlFlow 0 2) (- 1)))) -(check-sat) -(pop 1) -; Invalid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Invalid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R19 () (_ BitVec 64)) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R19 () Bool) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_R0@0 () Bool) -(declare-fun malloc_count@0 () Int) -(declare-fun malloc_count () Int) -(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) -(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun malloc_base () (Array Int (_ BitVec 64))) -(declare-fun malloc_end () (Array Int (_ BitVec 64))) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@2 () (_ BitVec 64)) -(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) -(declare-fun R19@0 () (_ BitVec 64)) -(declare-fun Gamma_R19@0 () Bool) -(declare-fun R0@3 () (_ BitVec 64)) -(declare-fun Gamma_R0@1 () Bool) -(declare-fun R0@4 () (_ BitVec 64)) -(declare-fun R1@0 () (_ BitVec 64)) -(set-info :boogie-vc-id main_split5) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= true true)))) (and (and (and (= (memory_load64_le mem $buf_addr) (memory_load64_le mem $buf_addr)) (= (memory_load8_le mem $password_addr) (memory_load8_le mem $password_addr))) (= Gamma_R0@0 true)) (and (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0))) (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b)))))) (=> (and (and (and (and (and (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) - :qid |examplebpl.497:19| - :skolemid |11| -)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) - :qid |examplebpl.498:19| - :skolemid |12| -))) (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) - :qid |examplebpl.500:19| - :skolemid |13| -)))) (and (and (= (memory_load8_le mem #x00000000000009b8) #x01) (= (memory_load8_le mem #x00000000000009b9) #x00)) (and (= (memory_load8_le mem #x00000000000009ba) #x02) (= (memory_load8_le mem #x00000000000009bb) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00))))) (and (and (and (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= R0@1 (bvadd #x0000000000020000 #x0000000000000080)) (= mem@0 mem)) (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4))))))) (=> (and (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (=> (L mem@0 R0@1) Gamma_R0@0))))) (and (and (and (and (= mem@1 (memory_store64_le mem@0 R0@1 R0@0)) (= Gamma_mem@1 (gamma_store64 Gamma_mem@0 R0@1 Gamma_R0@0))) (= R0@2 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@2 mem@1) (= Gamma_mem@2 Gamma_mem@1))) (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R19@0 (memory_load64_le mem@2 R0@2)) (= Gamma_R19@0 (or (gamma_load64 Gamma_mem@2 R0@2) (L mem@2 R0@2)))) (= R0@3 (bvadd #x0000000000020000 #x0000000000000068))))))) (and (and (and (and (and (and (= (memory_load64_le mem@2 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@2 $password_addr) (memory_load8_le mem@2 $password_addr))) (= (memory_load8_le mem@2 $stext_addr) (memory_load8_le mem@2 $stext_addr))) (= Gamma_R0@1 true)) (and (forall ((i@@4 (_ BitVec 64)) ) (! (=> (and (bvule R0@3 i@@4) (bvult i@@4 (bvadd R0@3 R0@4))) (not (= (select mem@2 i@@4) #x00))) - :qid |examplebpl.812:19| - :skolemid |18| -)) (= (memory_load8_le mem@2 (bvadd R0@3 R0@4)) #x00))) (and (and (and (bvult R0@3 (bvadd (bvadd R0@3 R0@4) #x0000000000000001)) (= (memory_load8_le mem@2 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@2 #x00000000000009b9) #x00) (= (memory_load8_le mem@2 #x00000000000009ba) #x02))) (and (and (= (memory_load8_le mem@2 #x00000000000009bb) #x00) (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@2 #x000000000001fdc9) #x08) (= (memory_load8_le mem@2 #x000000000001fdca) #x00))))) (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcb) #x00) (= (memory_load8_le mem@2 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdcd) #x00) (= (memory_load8_le mem@2 #x000000000001fdce) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdcf) #x00) (= (memory_load8_le mem@2 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@2 #x000000000001fdd1) #x08) (= (memory_load8_le mem@2 #x000000000001fdd2) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd3) #x00) (= (memory_load8_le mem@2 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd5) #x00) (= (memory_load8_le mem@2 #x000000000001fdd6) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd7) #x00) (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@2 #x000000000001ffd9) #x08) (= (memory_load8_le mem@2 #x000000000001ffda) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdb) #x00) (= (memory_load8_le mem@2 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffdd) #x00) (= (memory_load8_le mem@2 #x000000000001ffde) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffdf) #x00) (= (memory_load8_le mem@2 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@2 #x0000000000020059) #x00) (= (memory_load8_le mem@2 #x000000000002005a) #x02)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005b) #x00) (= (memory_load8_le mem@2 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005d) #x00) (= (memory_load8_le mem@2 #x000000000002005e) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000002005f) #x00) (= R1@0 (bvadd #x0000000000020000 #x0000000000000068))) (and (or (bvugt R19@0 (bvadd R1@0 R0@4)) (bvugt R1@0 (bvadd R19@0 R0@4))) (= (ControlFlow 0 2) (- 0 1))))))))) (and (bvugt (bvadd R19@0 R0@4) R19@0) (bvugt (bvadd R1@0 R0@4) R1@0))))))))) -(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(get-info :reason-unknown) -(assert (not (= (ControlFlow 0 2) (- 1)))) -(check-sat) -(pop 1) -; Invalid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Invalid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R19 () (_ BitVec 64)) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R19 () Bool) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_R0@0 () Bool) -(declare-fun malloc_count@0 () Int) -(declare-fun malloc_count () Int) -(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) -(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun malloc_base () (Array Int (_ BitVec 64))) -(declare-fun malloc_end () (Array Int (_ BitVec 64))) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@2 () (_ BitVec 64)) -(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) -(declare-fun R19@0 () (_ BitVec 64)) -(declare-fun Gamma_R19@0 () Bool) -(declare-fun R0@3 () (_ BitVec 64)) -(declare-fun Gamma_R0@1 () Bool) -(declare-fun R0@4 () (_ BitVec 64)) -(declare-fun R1@0 () (_ BitVec 64)) -(declare-fun mem@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@3 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@5 () (_ BitVec 64)) -(declare-fun mem@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@4 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@6 () (_ BitVec 64)) -(declare-fun Gamma_R0@2 () Bool) -(declare-fun R0@7 () (_ BitVec 64)) -(declare-fun mem@5 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@5 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@8 () (_ BitVec 64)) -(declare-fun Gamma_R0@3 () Bool) -(declare-fun R0@9 () (_ BitVec 64)) -(declare-fun stack@5 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@5 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@10 () (_ BitVec 64)) -(declare-fun Gamma_R0@4 () Bool) -(declare-fun mem@6 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@6 () (Array (_ BitVec 64) Bool)) -(set-info :boogie-vc-id main_split6) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= true true)))) (and (and (and (= (memory_load64_le mem $buf_addr) (memory_load64_le mem $buf_addr)) (= (memory_load8_le mem $password_addr) (memory_load8_le mem $password_addr))) (= Gamma_R0@0 true)) (and (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0))) (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b)))))) (and (and (and (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) - :qid |examplebpl.497:19| - :skolemid |11| -)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) - :qid |examplebpl.498:19| - :skolemid |12| -))) (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) - :qid |examplebpl.500:19| - :skolemid |13| -)))) (and (and (= (memory_load8_le mem #x00000000000009b8) #x01) (= (memory_load8_le mem #x00000000000009b9) #x00)) (and (= (memory_load8_le mem #x00000000000009ba) #x02) (= (memory_load8_le mem #x00000000000009bb) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00)))))) (=> (and (and (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= R0@1 (bvadd #x0000000000020000 #x0000000000000080)) (= mem@0 mem)) (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (=> (L mem@0 R0@1) Gamma_R0@0))))))) (and (and (and (and (and (and (= mem@1 (memory_store64_le mem@0 R0@1 R0@0)) (= Gamma_mem@1 (gamma_store64 Gamma_mem@0 R0@1 Gamma_R0@0))) (= R0@2 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@2 mem@1) (= Gamma_mem@2 Gamma_mem@1))) (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R19@0 (memory_load64_le mem@2 R0@2)) (= Gamma_R19@0 (or (gamma_load64 Gamma_mem@2 R0@2) (L mem@2 R0@2)))) (= R0@3 (bvadd #x0000000000020000 #x0000000000000068))))) (and (and (and (and (= (memory_load64_le mem@2 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@2 $password_addr) (memory_load8_le mem@2 $password_addr))) (= (memory_load8_le mem@2 $stext_addr) (memory_load8_le mem@2 $stext_addr))) (and (and (= Gamma_R0@1 true) (forall ((i@@4 (_ BitVec 64)) ) (! (=> (and (bvule R0@3 i@@4) (bvult i@@4 (bvadd R0@3 R0@4))) (not (= (select mem@2 i@@4) #x00))) - :qid |examplebpl.812:19| - :skolemid |18| -))) (and (= (memory_load8_le mem@2 (bvadd R0@3 R0@4)) #x00) (bvult R0@3 (bvadd (bvadd R0@3 R0@4) #x0000000000000001))))) (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)))))))) (=> (and (and (and (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R1@0 (bvadd #x0000000000020000 #x0000000000000068)) (or (bvugt R19@0 (bvadd R1@0 R0@4)) (bvugt R1@0 (bvadd R19@0 R0@4)))) (and (bvugt (bvadd R19@0 R0@4) R19@0) (bvugt (bvadd R1@0 R0@4) R1@0)))))) (and (and (and (and (and (= (memory_load64_le mem@3 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@3 $password_addr) (memory_load8_le mem@2 $password_addr))) (forall ((i@@5 (_ BitVec 64)) ) (! (= (select Gamma_mem@3 i@@5) (ite (and (bvule R19@0 i@@5) (bvult i@@5 (bvadd R19@0 R0@4))) (gamma_load8 Gamma_mem@3 (bvadd (bvsub i@@5 R19@0) R1@0)) (gamma_load8 Gamma_mem@2 i@@5))) - :qid |examplebpl.579:19| - :skolemid |14| -))) (and (and (forall ((i@@6 (_ BitVec 64)) ) (! (= (select mem@3 i@@6) (ite (and (bvule R19@0 i@@6) (bvult i@@6 (bvadd R19@0 R0@4))) (memory_load8_le mem@3 (bvadd (bvsub i@@6 R19@0) R1@0)) (memory_load8_le mem@2 i@@6))) - :qid |examplebpl.580:19| - :skolemid |15| -)) (= (memory_load8_le mem@3 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@3 #x00000000000009b9) #x00) (= (memory_load8_le mem@3 #x00000000000009ba) #x02)))) (and (and (and (= (memory_load8_le mem@3 #x00000000000009bb) #x00) (= (memory_load8_le mem@3 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@3 #x000000000001fdc9) #x08) (= (memory_load8_le mem@3 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdcb) #x00) (= (memory_load8_le mem@3 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdcd) #x00) (= (memory_load8_le mem@3 #x000000000001fdce) #x00))))) (and (and (and (and (= (memory_load8_le mem@3 #x000000000001fdcf) #x00) (= (memory_load8_le mem@3 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@3 #x000000000001fdd1) #x08) (= (memory_load8_le mem@3 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdd3) #x00) (= (memory_load8_le mem@3 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd5) #x00) (= (memory_load8_le mem@3 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000001fdd7) #x00) (= (memory_load8_le mem@3 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@3 #x000000000001ffd9) #x08) (= (memory_load8_le mem@3 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001ffdb) #x00) (= (memory_load8_le mem@3 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffdd) #x00) (= (memory_load8_le mem@3 #x000000000001ffde) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@3 #x000000000001ffdf) #x00) (= (memory_load8_le mem@3 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@3 #x0000000000020059) #x00) (= (memory_load8_le mem@3 #x000000000002005a) #x02))) (and (and (= (memory_load8_le mem@3 #x000000000002005b) #x00) (= (memory_load8_le mem@3 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@3 #x000000000002005d) #x00) (= (memory_load8_le mem@3 #x000000000002005e) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000002005f) #x00) (= R0@5 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@4 mem@3) (= Gamma_mem@4 Gamma_mem@3))) (and (and (= (memory_load8_le mem@4 #x00000000000009b8) #x01) (= (memory_load8_le mem@4 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@4 #x00000000000009ba) #x02) (= (memory_load8_le mem@4 #x00000000000009bb) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@4 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdca) #x00) (= (memory_load8_le mem@4 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdcc) #x00) (= (memory_load8_le mem@4 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdce) #x00) (= (memory_load8_le mem@4 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd0) #x80) (= (memory_load8_le mem@4 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdd2) #x00) (= (memory_load8_le mem@4 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd4) #x00) (= (memory_load8_le mem@4 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd6) #x00) (= (memory_load8_le mem@4 #x000000000001fdd7) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@4 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001ffda) #x00) (= (memory_load8_le mem@4 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001ffdc) #x00) (= (memory_load8_le mem@4 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffde) #x00) (= (memory_load8_le mem@4 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x0000000000020058) #x58) (= (memory_load8_le mem@4 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005a) #x02) (= (memory_load8_le mem@4 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000002005c) #x00) (= (memory_load8_le mem@4 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005e) #x00) (= (memory_load8_le mem@4 #x000000000002005f) #x00))))) (and (and (and (and (= R0@6 (memory_load64_le mem@4 R0@5)) (= Gamma_R0@2 (or (gamma_load64 Gamma_mem@4 R0@5) (L mem@4 R0@5)))) (= (memory_load8_le mem@4 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@4 #x00000000000009b9) #x00) (= (memory_load8_le mem@4 #x00000000000009ba) #x02))) (and (and (and (= (memory_load8_le mem@4 #x00000000000009bb) #x00) (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@4 #x000000000001fdc9) #x08) (= (memory_load8_le mem@4 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdcb) #x00) (= (memory_load8_le mem@4 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdcd) #x00) (= (memory_load8_le mem@4 #x000000000001fdce) #x00)))))))) (and (and (and (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdcf) #x00) (= (memory_load8_le mem@4 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@4 #x000000000001fdd1) #x08) (= (memory_load8_le mem@4 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd3) #x00) (= (memory_load8_le mem@4 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd5) #x00) (= (memory_load8_le mem@4 #x000000000001fdd6) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd7) #x00) (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@4 #x000000000001ffd9) #x08) (= (memory_load8_le mem@4 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001ffdb) #x00) (= (memory_load8_le mem@4 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffdd) #x00) (= (memory_load8_le mem@4 #x000000000001ffde) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x000000000001ffdf) #x00) (= (memory_load8_le mem@4 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@4 #x0000000000020059) #x00) (= (memory_load8_le mem@4 #x000000000002005a) #x02))) (and (and (= (memory_load8_le mem@4 #x000000000002005b) #x00) (= (memory_load8_le mem@4 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005d) #x00) (= (memory_load8_le mem@4 #x000000000002005e) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000002005f) #x00) (= R0@7 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@5 mem@4) (= Gamma_mem@5 Gamma_mem@4))) (and (and (= (memory_load8_le mem@5 #x00000000000009b8) #x01) (= (memory_load8_le mem@5 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@5 #x00000000000009ba) #x02) (= (memory_load8_le mem@5 #x00000000000009bb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@5 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@5 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdca) #x00) (= (memory_load8_le mem@5 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdcc) #x00) (= (memory_load8_le mem@5 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdce) #x00) (= (memory_load8_le mem@5 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x000000000001fdd0) #x80) (= (memory_load8_le mem@5 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdd2) #x00) (= (memory_load8_le mem@5 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdd4) #x00) (= (memory_load8_le mem@5 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdd6) #x00) (= (memory_load8_le mem@5 #x000000000001fdd7) #x00))))) (and (and (and (and (= (memory_load8_le mem@5 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@5 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001ffda) #x00) (= (memory_load8_le mem@5 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001ffdc) #x00) (= (memory_load8_le mem@5 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001ffde) #x00) (= (memory_load8_le mem@5 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x0000000000020058) #x58) (= (memory_load8_le mem@5 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005a) #x02) (= (memory_load8_le mem@5 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000002005c) #x00) (= (memory_load8_le mem@5 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005e) #x00) (= (memory_load8_le mem@5 #x000000000002005f) #x00))))))) (and (and (and (and (and (and (= R0@8 (memory_load64_le mem@5 R0@7)) (= Gamma_R0@3 (or (gamma_load64 Gamma_mem@5 R0@7) (L mem@5 R0@7)))) (= R0@9 (bvadd R0@8 #x0000000000000002))) (and (= stack@5 (memory_store64_le stack@4 (bvadd |#4@0| #x0000000000000028) R0@9)) (= Gamma_stack@5 (gamma_store64 Gamma_stack@4 (bvadd |#4@0| #x0000000000000028) Gamma_R0@3)))) (and (and (= R0@10 (memory_load64_le stack@5 (bvadd |#4@0| #x0000000000000028))) (= Gamma_R0@4 (gamma_load64 Gamma_stack@5 (bvadd |#4@0| #x0000000000000028)))) (= mem@6 mem@5))) (and (and (and (= Gamma_mem@6 Gamma_mem@5) (= (memory_load8_le mem@6 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@6 #x00000000000009b9) #x00) (= (memory_load8_le mem@6 #x00000000000009ba) #x02))) (and (and (= (memory_load8_le mem@6 #x00000000000009bb) #x00) (= (memory_load8_le mem@6 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@6 #x000000000001fdc9) #x08) (= (memory_load8_le mem@6 #x000000000001fdca) #x00))))) (and (and (and (and (and (= (memory_load8_le mem@6 #x000000000001fdcb) #x00) (= (memory_load8_le mem@6 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdcd) #x00) (= (memory_load8_le mem@6 #x000000000001fdce) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001fdcf) #x00) (= (memory_load8_le mem@6 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@6 #x000000000001fdd1) #x08) (= (memory_load8_le mem@6 #x000000000001fdd2) #x00)))) (and (and (and (= (memory_load8_le mem@6 #x000000000001fdd3) #x00) (= (memory_load8_le mem@6 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdd5) #x00) (= (memory_load8_le mem@6 #x000000000001fdd6) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001fdd7) #x00) (= (memory_load8_le mem@6 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@6 #x000000000001ffd9) #x08) (= (memory_load8_le mem@6 #x000000000001ffda) #x00))))) (and (and (and (and (= (memory_load8_le mem@6 #x000000000001ffdb) #x00) (= (memory_load8_le mem@6 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@6 #x000000000001ffdd) #x00) (= (memory_load8_le mem@6 #x000000000001ffde) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001ffdf) #x00) (= (memory_load8_le mem@6 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@6 #x0000000000020059) #x00) (= (memory_load8_le mem@6 #x000000000002005a) #x02)))) (and (and (and (= (memory_load8_le mem@6 #x000000000002005b) #x00) (= (memory_load8_le mem@6 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@6 #x000000000002005d) #x00) (= (memory_load8_le mem@6 #x000000000002005e) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000002005f) #x00) (= (ControlFlow 0 2) (- 0 1))) (L mem@6 R0@10)))))))) true))))))) -(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(set-info :boogie-vc-id main_split7) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 1) true) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_store8 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun memory_store8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 8)) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |examplebpl.63:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |examplebpl.83:57| - :skolemid |20| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |examplebpl.35:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |examplebpl.75:37| - :skolemid |6| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) (value@@0 Bool) ) (! (= (gamma_store8 gammaMap@@0 index@@2 value@@0) (store gammaMap@@0 index@@2 value@@0)) - :qid |examplebpl.67:33| - :skolemid |5| - :pattern ( (gamma_store8 gammaMap@@0 index@@2 value@@0)) -))) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@3 (_ BitVec 64)) (value@@1 (_ BitVec 8)) ) (! (= (memory_store8_le memory@@1 index@@3 value@@1) (store memory@@1 index@@3 value@@1)) - :qid |examplebpl.87:37| - :skolemid |9| - :pattern ( (memory_store8_le memory@@1 index@@3 value@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |examplebpl.63:56| - :skolemid |19| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@1 index@@4) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000007)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000006)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000005)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000004)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@4 #x0000000000000001)) (select gammaMap@@1 index@@4))))))))) - :qid |examplebpl.55:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@1 index@@4)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@5 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@2 index@@5) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000003)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000002)) (and (select gammaMap@@2 (bvadd index@@5 #x0000000000000001)) (select gammaMap@@2 index@@5))))) - :qid |examplebpl.51:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@2 index@@5)) -))) -(assert (forall ((gammaMap@@3 (Array (_ BitVec 64) Bool)) (index@@6 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@3 index@@6) (select gammaMap@@3 index@@6)) - :qid |examplebpl.59:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@3 index@@6)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020068)) -(assert (= $buf_addr #x0000000000020080)) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@7 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@2 index@@7) (select memory@@2 index@@7)) - :qid |examplebpl.79:36| - :skolemid |7| - :pattern ( (memory_load8_le memory@@2 index@@7)) -))) -(assert (forall ((memory@@3 (Array (_ BitVec 64) (_ BitVec 8))) (index@@8 (_ BitVec 64)) (value@@2 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@3 index@@8 value@@2) (|lambda#1| index@@8 #x0000000000000008 value@@2 index@@8 memory@@3)) - :qid |examplebpl.83:38| - :skolemid |8| - :pattern ( (memory_store64_le memory@@3 index@@8 value@@2)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R19 () (_ BitVec 64)) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R19 () Bool) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_R0@0 () Bool) -(declare-fun malloc_count@0 () Int) -(declare-fun malloc_count () Int) -(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) -(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun malloc_base () (Array Int (_ BitVec 64))) -(declare-fun malloc_end () (Array Int (_ BitVec 64))) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@2 () (_ BitVec 64)) -(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) -(declare-fun R19@0 () (_ BitVec 64)) -(declare-fun Gamma_R19@0 () Bool) -(declare-fun R0@3 () (_ BitVec 64)) -(declare-fun Gamma_R0@1 () Bool) -(declare-fun R0@4 () (_ BitVec 64)) -(declare-fun R1@0 () (_ BitVec 64)) -(declare-fun mem@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@3 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@5 () (_ BitVec 64)) -(declare-fun mem@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@4 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@6 () (_ BitVec 64)) -(declare-fun Gamma_R0@2 () Bool) -(declare-fun R0@7 () (_ BitVec 64)) -(declare-fun mem@5 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@5 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@8 () (_ BitVec 64)) -(declare-fun Gamma_R0@3 () Bool) -(declare-fun R0@9 () (_ BitVec 64)) -(declare-fun stack@5 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@5 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@10 () (_ BitVec 64)) -(declare-fun Gamma_R0@4 () Bool) -(declare-fun mem@6 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@6 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@7 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@7 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@11 () (_ BitVec 64)) -(declare-fun mem@8 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@8 () (Array (_ BitVec 64) Bool)) -(declare-fun R19@1 () (_ BitVec 64)) -(declare-fun Gamma_R19@1 () Bool) -(declare-fun R0@12 () (_ BitVec 64)) -(declare-fun mem@9 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@9 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@13 () (_ BitVec 64)) -(declare-fun Gamma_R0@5 () Bool) -(declare-fun Gamma_R0@6 () Bool) -(declare-fun R0@14 () (_ BitVec 64)) -(declare-fun mem@10 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@10 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@15 () (_ BitVec 64)) -(declare-fun mem@11 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@11 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@16 () (_ BitVec 64)) -(declare-fun Gamma_R0@7 () Bool) -(set-info :boogie-vc-id main_split8) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 3) (let ((lmain_correct (=> (= |#4@0| (bvadd R31 #xffffffffffffffd0)) (=> (and (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29))) (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30)))) (=> (and (and (and (= stack@2 (memory_store64_le stack@1 (bvadd |#4@0| #x0000000000000010) R19)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd |#4@0| #x0000000000000010) Gamma_R19))) (and (= stack@3 (memory_store64_le stack@2 (bvadd |#4@0| #x0000000000000028) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd |#4@0| #x0000000000000028) true)))) (and (and (= stack@4 (memory_store64_le stack@3 (bvadd |#4@0| #x0000000000000020) #x0000000000000000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd |#4@0| #x0000000000000020) true))) (and (bvugt #x000000000000000b #x0000000000000000) (= true true)))) (=> (and (and (and (and (and (= (memory_load64_le mem $buf_addr) (memory_load64_le mem $buf_addr)) (= (memory_load8_le mem $password_addr) (memory_load8_le mem $password_addr))) (= Gamma_R0@0 true)) (and (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0))) (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b))))) (and (and (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) - :qid |examplebpl.497:19| - :skolemid |11| -)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) - :qid |examplebpl.498:19| - :skolemid |12| -))) (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) - :qid |examplebpl.500:19| - :skolemid |13| -)))) (and (and (= (memory_load8_le mem #x00000000000009b8) #x01) (= (memory_load8_le mem #x00000000000009b9) #x00)) (and (= (memory_load8_le mem #x00000000000009ba) #x02) (= (memory_load8_le mem #x00000000000009bb) #x00))))) (and (and (and (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)))))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00))))) (and (and (and (and (= R0@1 (bvadd #x0000000000020000 #x0000000000000080)) (= mem@0 mem)) (and (= Gamma_mem@0 Gamma_mem) (= (memory_load8_le mem@0 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@0 #x00000000000009b9) #x00) (= (memory_load8_le mem@0 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@0 #x00000000000009bb) #x00) (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc9) #x08) (= (memory_load8_le mem@0 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcb) #x00) (= (memory_load8_le mem@0 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcd) #x00) (= (memory_load8_le mem@0 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcf) #x00) (= (memory_load8_le mem@0 #x000000000001fdd0) #x80)))))) (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd1) #x08) (= (memory_load8_le mem@0 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd3) #x00) (= (memory_load8_le mem@0 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd5) #x00) (= (memory_load8_le mem@0 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd7) #x00) (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd9) #x08) (= (memory_load8_le mem@0 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdb) #x00) (= (memory_load8_le mem@0 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdd) #x00) (= (memory_load8_le mem@0 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdf) #x00) (= (memory_load8_le mem@0 #x0000000000020058) #x58))))) (and (and (and (and (= (memory_load8_le mem@0 #x0000000000020059) #x00) (= (memory_load8_le mem@0 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@0 #x000000000002005b) #x00) (= (memory_load8_le mem@0 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005d) #x00) (= (memory_load8_le mem@0 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005f) #x00) (=> (L mem@0 R0@1) Gamma_R0@0)))) (and (and (and (= mem@1 (memory_store64_le mem@0 R0@1 R0@0)) (= Gamma_mem@1 (gamma_store64 Gamma_mem@0 R0@1 Gamma_R0@0))) (= R0@2 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@2 mem@1) (= Gamma_mem@2 Gamma_mem@1)))))) (=> (and (and (and (and (and (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R19@0 (memory_load64_le mem@2 R0@2)) (= Gamma_R19@0 (or (gamma_load64 Gamma_mem@2 R0@2) (L mem@2 R0@2)))) (= R0@3 (bvadd #x0000000000020000 #x0000000000000068)))) (and (and (and (= (memory_load64_le mem@2 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@2 $password_addr) (memory_load8_le mem@2 $password_addr))) (= (memory_load8_le mem@2 $stext_addr) (memory_load8_le mem@2 $stext_addr))) (and (and (= Gamma_R0@1 true) (forall ((i@@4 (_ BitVec 64)) ) (! (=> (and (bvule R0@3 i@@4) (bvult i@@4 (bvadd R0@3 R0@4))) (not (= (select mem@2 i@@4) #x00))) - :qid |examplebpl.812:19| - :skolemid |18| -))) (and (= (memory_load8_le mem@2 (bvadd R0@3 R0@4)) #x00) (bvult R0@3 (bvadd (bvadd R0@3 R0@4) #x0000000000000001)))))) (and (and (and (and (= (memory_load8_le mem@2 #x00000000000009b8) #x01) (= (memory_load8_le mem@2 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@2 #x00000000000009ba) #x02) (= (memory_load8_le mem@2 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00))) (and (and (= R1@0 (bvadd #x0000000000020000 #x0000000000000068)) (or (bvugt R19@0 (bvadd R1@0 R0@4)) (bvugt R1@0 (bvadd R19@0 R0@4)))) (and (bvugt (bvadd R19@0 R0@4) R19@0) (bvugt (bvadd R1@0 R0@4) R1@0)))) (and (and (and (= (memory_load64_le mem@3 $buf_addr) (memory_load64_le mem@2 $buf_addr)) (= (memory_load8_le mem@3 $password_addr) (memory_load8_le mem@2 $password_addr))) (forall ((i@@5 (_ BitVec 64)) ) (! (= (select Gamma_mem@3 i@@5) (ite (and (bvule R19@0 i@@5) (bvult i@@5 (bvadd R19@0 R0@4))) (gamma_load8 Gamma_mem@3 (bvadd (bvsub i@@5 R19@0) R1@0)) (gamma_load8 Gamma_mem@2 i@@5))) - :qid |examplebpl.579:19| - :skolemid |14| -))) (and (and (forall ((i@@6 (_ BitVec 64)) ) (! (= (select mem@3 i@@6) (ite (and (bvule R19@0 i@@6) (bvult i@@6 (bvadd R19@0 R0@4))) (memory_load8_le mem@3 (bvadd (bvsub i@@6 R19@0) R1@0)) (memory_load8_le mem@2 i@@6))) - :qid |examplebpl.580:19| - :skolemid |15| -)) (= (memory_load8_le mem@3 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@3 #x00000000000009b9) #x00) (= (memory_load8_le mem@3 #x00000000000009ba) #x02)))))) (and (and (and (and (and (= (memory_load8_le mem@3 #x00000000000009bb) #x00) (= (memory_load8_le mem@3 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@3 #x000000000001fdc9) #x08) (= (memory_load8_le mem@3 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdcb) #x00) (= (memory_load8_le mem@3 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdcd) #x00) (= (memory_load8_le mem@3 #x000000000001fdce) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000001fdcf) #x00) (= (memory_load8_le mem@3 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@3 #x000000000001fdd1) #x08) (= (memory_load8_le mem@3 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001fdd3) #x00) (= (memory_load8_le mem@3 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd5) #x00) (= (memory_load8_le mem@3 #x000000000001fdd6) #x00))))) (and (and (and (and (= (memory_load8_le mem@3 #x000000000001fdd7) #x00) (= (memory_load8_le mem@3 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@3 #x000000000001ffd9) #x08) (= (memory_load8_le mem@3 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000001ffdb) #x00) (= (memory_load8_le mem@3 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffdd) #x00) (= (memory_load8_le mem@3 #x000000000001ffde) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000001ffdf) #x00) (= (memory_load8_le mem@3 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@3 #x0000000000020059) #x00) (= (memory_load8_le mem@3 #x000000000002005a) #x02))) (and (and (= (memory_load8_le mem@3 #x000000000002005b) #x00) (= (memory_load8_le mem@3 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@3 #x000000000002005d) #x00) (= (memory_load8_le mem@3 #x000000000002005e) #x00)))))))) (and (and (and (and (and (and (and (= (memory_load8_le mem@3 #x000000000002005f) #x00) (= R0@5 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@4 mem@3) (= Gamma_mem@4 Gamma_mem@3))) (and (and (= (memory_load8_le mem@4 #x00000000000009b8) #x01) (= (memory_load8_le mem@4 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@4 #x00000000000009ba) #x02) (= (memory_load8_le mem@4 #x00000000000009bb) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@4 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdca) #x00) (= (memory_load8_le mem@4 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdcc) #x00) (= (memory_load8_le mem@4 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdce) #x00) (= (memory_load8_le mem@4 #x000000000001fdcf) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd0) #x80) (= (memory_load8_le mem@4 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdd2) #x00) (= (memory_load8_le mem@4 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd4) #x00) (= (memory_load8_le mem@4 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd6) #x00) (= (memory_load8_le mem@4 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@4 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001ffda) #x00) (= (memory_load8_le mem@4 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001ffdc) #x00) (= (memory_load8_le mem@4 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffde) #x00) (= (memory_load8_le mem@4 #x000000000001ffdf) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@4 #x0000000000020058) #x58) (= (memory_load8_le mem@4 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005a) #x02) (= (memory_load8_le mem@4 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000002005c) #x00) (= (memory_load8_le mem@4 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005e) #x00) (= (memory_load8_le mem@4 #x000000000002005f) #x00)))) (and (and (and (= R0@6 (memory_load64_le mem@4 R0@5)) (= Gamma_R0@2 (or (gamma_load64 Gamma_mem@4 R0@5) (L mem@4 R0@5)))) (= (memory_load8_le mem@4 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@4 #x00000000000009b9) #x00) (= (memory_load8_le mem@4 #x00000000000009ba) #x02)))) (and (and (and (and (= (memory_load8_le mem@4 #x00000000000009bb) #x00) (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@4 #x000000000001fdc9) #x08) (= (memory_load8_le mem@4 #x000000000001fdca) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdcb) #x00) (= (memory_load8_le mem@4 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdcd) #x00) (= (memory_load8_le mem@4 #x000000000001fdce) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdcf) #x00) (= (memory_load8_le mem@4 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@4 #x000000000001fdd1) #x08) (= (memory_load8_le mem@4 #x000000000001fdd2) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd3) #x00) (= (memory_load8_le mem@4 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd5) #x00) (= (memory_load8_le mem@4 #x000000000001fdd6) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd7) #x00) (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@4 #x000000000001ffd9) #x08) (= (memory_load8_le mem@4 #x000000000001ffda) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001ffdb) #x00) (= (memory_load8_le mem@4 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffdd) #x00) (= (memory_load8_le mem@4 #x000000000001ffde) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001ffdf) #x00) (= (memory_load8_le mem@4 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@4 #x0000000000020059) #x00) (= (memory_load8_le mem@4 #x000000000002005a) #x02))) (and (and (= (memory_load8_le mem@4 #x000000000002005b) #x00) (= (memory_load8_le mem@4 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005d) #x00) (= (memory_load8_le mem@4 #x000000000002005e) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x000000000002005f) #x00) (= R0@7 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@5 mem@4) (= Gamma_mem@5 Gamma_mem@4))) (and (and (= (memory_load8_le mem@5 #x00000000000009b8) #x01) (= (memory_load8_le mem@5 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@5 #x00000000000009ba) #x02) (= (memory_load8_le mem@5 #x00000000000009bb) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@5 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdca) #x00) (= (memory_load8_le mem@5 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdcc) #x00) (= (memory_load8_le mem@5 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdce) #x00) (= (memory_load8_le mem@5 #x000000000001fdcf) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@5 #x000000000001fdd0) #x80) (= (memory_load8_le mem@5 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdd2) #x00) (= (memory_load8_le mem@5 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdd4) #x00) (= (memory_load8_le mem@5 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdd6) #x00) (= (memory_load8_le mem@5 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@5 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001ffda) #x00) (= (memory_load8_le mem@5 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001ffdc) #x00) (= (memory_load8_le mem@5 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001ffde) #x00) (= (memory_load8_le mem@5 #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem@5 #x0000000000020058) #x58) (= (memory_load8_le mem@5 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005a) #x02) (= (memory_load8_le mem@5 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000002005c) #x00) (= (memory_load8_le mem@5 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005e) #x00) (= (memory_load8_le mem@5 #x000000000002005f) #x00)))) (and (and (and (= R0@8 (memory_load64_le mem@5 R0@7)) (= Gamma_R0@3 (or (gamma_load64 Gamma_mem@5 R0@7) (L mem@5 R0@7)))) (= R0@9 (bvadd R0@8 #x0000000000000002))) (and (= stack@5 (memory_store64_le stack@4 (bvadd |#4@0| #x0000000000000028) R0@9)) (= Gamma_stack@5 (gamma_store64 Gamma_stack@4 (bvadd |#4@0| #x0000000000000028) Gamma_R0@3))))))))) (=> (and (and (and (and (and (and (and (and (and (= R0@10 (memory_load64_le stack@5 (bvadd |#4@0| #x0000000000000028))) (= Gamma_R0@4 (gamma_load64 Gamma_stack@5 (bvadd |#4@0| #x0000000000000028)))) (= mem@6 mem@5)) (and (= Gamma_mem@6 Gamma_mem@5) (= (memory_load8_le mem@6 #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem@6 #x00000000000009b9) #x00) (= (memory_load8_le mem@6 #x00000000000009ba) #x02)) (and (= (memory_load8_le mem@6 #x00000000000009bb) #x00) (= (memory_load8_le mem@6 #x000000000001fdc8) #xd0)))) (and (and (and (= (memory_load8_le mem@6 #x000000000001fdc9) #x08) (= (memory_load8_le mem@6 #x000000000001fdca) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdcb) #x00) (= (memory_load8_le mem@6 #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001fdcd) #x00) (= (memory_load8_le mem@6 #x000000000001fdce) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdcf) #x00) (= (memory_load8_le mem@6 #x000000000001fdd0) #x80))))) (and (and (and (and (= (memory_load8_le mem@6 #x000000000001fdd1) #x08) (= (memory_load8_le mem@6 #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdd3) #x00) (= (memory_load8_le mem@6 #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001fdd5) #x00) (= (memory_load8_le mem@6 #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdd7) #x00) (= (memory_load8_le mem@6 #x000000000001ffd8) #xd4)))) (and (and (and (= (memory_load8_le mem@6 #x000000000001ffd9) #x08) (= (memory_load8_le mem@6 #x000000000001ffda) #x00)) (and (= (memory_load8_le mem@6 #x000000000001ffdb) #x00) (= (memory_load8_le mem@6 #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000001ffdd) #x00) (= (memory_load8_le mem@6 #x000000000001ffde) #x00)) (and (= (memory_load8_le mem@6 #x000000000001ffdf) #x00) (= (memory_load8_le mem@6 #x0000000000020058) #x58)))))) (and (and (and (and (and (= (memory_load8_le mem@6 #x0000000000020059) #x00) (= (memory_load8_le mem@6 #x000000000002005a) #x02)) (and (= (memory_load8_le mem@6 #x000000000002005b) #x00) (= (memory_load8_le mem@6 #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000002005d) #x00) (= (memory_load8_le mem@6 #x000000000002005e) #x00)) (and (= (memory_load8_le mem@6 #x000000000002005f) #x00) (=> (L mem@6 R0@10) true)))) (and (and (and (= mem@7 (memory_store8_le mem@6 R0@10 #x00)) (= Gamma_mem@7 (gamma_store8 Gamma_mem@6 R0@10 true))) (= R0@11 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@8 mem@7) (= Gamma_mem@8 Gamma_mem@7)))) (and (and (and (and (= (memory_load8_le mem@8 #x00000000000009b8) #x01) (= (memory_load8_le mem@8 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@8 #x00000000000009ba) #x02) (= (memory_load8_le mem@8 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@8 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@8 #x000000000001fdca) #x00) (= (memory_load8_le mem@8 #x000000000001fdcb) #x00)))) (and (and (and (= (memory_load8_le mem@8 #x000000000001fdcc) #x00) (= (memory_load8_le mem@8 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@8 #x000000000001fdce) #x00) (= (memory_load8_le mem@8 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001fdd0) #x80) (= (memory_load8_le mem@8 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@8 #x000000000001fdd2) #x00) (= (memory_load8_le mem@8 #x000000000001fdd3) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@8 #x000000000001fdd4) #x00) (= (memory_load8_le mem@8 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@8 #x000000000001fdd6) #x00) (= (memory_load8_le mem@8 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@8 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@8 #x000000000001ffda) #x00) (= (memory_load8_le mem@8 #x000000000001ffdb) #x00)))) (and (and (and (= (memory_load8_le mem@8 #x000000000001ffdc) #x00) (= (memory_load8_le mem@8 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@8 #x000000000001ffde) #x00) (= (memory_load8_le mem@8 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@8 #x0000000000020058) #x58) (= (memory_load8_le mem@8 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@8 #x000000000002005a) #x02) (= (memory_load8_le mem@8 #x000000000002005b) #x00))))) (and (and (and (and (= (memory_load8_le mem@8 #x000000000002005c) #x00) (= (memory_load8_le mem@8 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@8 #x000000000002005e) #x00) (= (memory_load8_le mem@8 #x000000000002005f) #x00))) (and (and (= R19@1 (memory_load64_le mem@8 R0@11)) (= Gamma_R19@1 (or (gamma_load64 Gamma_mem@8 R0@11) (L mem@8 R0@11)))) (= R0@12 (bvadd #x0000000000020000 #x0000000000000080)))) (and (and (and (= mem@9 mem@8) (= Gamma_mem@9 Gamma_mem@8)) (and (= (memory_load8_le mem@9 #x00000000000009b8) #x01) (= (memory_load8_le mem@9 #x00000000000009b9) #x00))) (and (and (= (memory_load8_le mem@9 #x00000000000009ba) #x02) (= (memory_load8_le mem@9 #x00000000000009bb) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@9 #x000000000001fdc9) #x08)))))) (and (and (and (and (and (= (memory_load8_le mem@9 #x000000000001fdca) #x00) (= (memory_load8_le mem@9 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdcc) #x00) (= (memory_load8_le mem@9 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdce) #x00) (= (memory_load8_le mem@9 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdd0) #x80) (= (memory_load8_le mem@9 #x000000000001fdd1) #x08)))) (and (and (and (= (memory_load8_le mem@9 #x000000000001fdd2) #x00) (= (memory_load8_le mem@9 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdd4) #x00) (= (memory_load8_le mem@9 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdd6) #x00) (= (memory_load8_le mem@9 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@9 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@9 #x000000000001ffd9) #x08))))) (and (and (and (and (= (memory_load8_le mem@9 #x000000000001ffda) #x00) (= (memory_load8_le mem@9 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@9 #x000000000001ffdc) #x00) (= (memory_load8_le mem@9 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001ffde) #x00) (= (memory_load8_le mem@9 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@9 #x0000000000020058) #x58) (= (memory_load8_le mem@9 #x0000000000020059) #x00)))) (and (and (and (= (memory_load8_le mem@9 #x000000000002005a) #x02) (= (memory_load8_le mem@9 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@9 #x000000000002005c) #x00) (= (memory_load8_le mem@9 #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000002005e) #x00) (= (memory_load8_le mem@9 #x000000000002005f) #x00)) (and (= R0@13 (memory_load64_le mem@9 R0@12)) (= Gamma_R0@5 (or (gamma_load64 Gamma_mem@9 R0@12) (L mem@9 R0@12)))))))))) (and (and (and (and (and (and (and (= (memory_load64_le mem@9 $buf_addr) (memory_load64_le mem@9 $buf_addr)) (= (memory_load8_le mem@9 $password_addr) (memory_load8_le mem@9 $password_addr))) (= (memory_load8_le mem@9 $stext_addr) (memory_load8_le mem@9 $stext_addr))) (and (and (= Gamma_R0@6 true) (forall ((i@@7 (_ BitVec 64)) ) (! (=> (and (bvule R0@13 i@@7) (bvult i@@7 (bvadd R0@13 R0@14))) (not (= (select mem@9 i@@7) #x00))) - :qid |examplebpl.812:19| - :skolemid |18| -))) (and (= (memory_load8_le mem@9 (bvadd R0@13 R0@14)) #x00) (bvult R0@13 (bvadd (bvadd R0@13 R0@14) #x0000000000000001))))) (and (and (and (= (memory_load8_le mem@9 #x00000000000009b8) #x01) (= (memory_load8_le mem@9 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@9 #x00000000000009ba) #x02) (= (memory_load8_le mem@9 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@9 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@9 #x000000000001fdca) #x00) (= (memory_load8_le mem@9 #x000000000001fdcb) #x00))))) (and (and (and (and (= (memory_load8_le mem@9 #x000000000001fdcc) #x00) (= (memory_load8_le mem@9 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdce) #x00) (= (memory_load8_le mem@9 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdd0) #x80) (= (memory_load8_le mem@9 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@9 #x000000000001fdd2) #x00) (= (memory_load8_le mem@9 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@9 #x000000000001fdd4) #x00) (= (memory_load8_le mem@9 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdd6) #x00) (= (memory_load8_le mem@9 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@9 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@9 #x000000000001ffda) #x00) (= (memory_load8_le mem@9 #x000000000001ffdb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@9 #x000000000001ffdc) #x00) (= (memory_load8_le mem@9 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@9 #x000000000001ffde) #x00) (= (memory_load8_le mem@9 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@9 #x0000000000020058) #x58) (= (memory_load8_le mem@9 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@9 #x000000000002005a) #x02) (= (memory_load8_le mem@9 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@9 #x000000000002005c) #x00) (= (memory_load8_le mem@9 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@9 #x000000000002005e) #x00) (= (memory_load8_le mem@9 #x000000000002005f) #x00))) (and (and (= (memory_load64_le mem@10 $buf_addr) (memory_load64_le mem@9 $buf_addr)) (= (memory_load8_le mem@10 $password_addr) (memory_load8_le mem@9 $password_addr))) (forall ((i@@8 (_ BitVec 64)) ) (! (= (select Gamma_mem@10 i@@8) (ite (and (bvule R19@1 i@@8) (bvult i@@8 (bvadd R19@1 R0@14))) true (gamma_load8 Gamma_mem@9 i@@8))) - :qid |examplebpl.658:19| - :skolemid |16| -))))) (and (and (and (and (forall ((i@@9 (_ BitVec 64)) ) (! (= (select mem@10 i@@9) (ite (and (bvule R19@1 i@@9) (bvult i@@9 (bvadd R19@1 R0@14))) ((_ extract 7 0) #x0000000000000001) (memory_load8_le mem@9 i@@9))) - :qid |examplebpl.659:19| - :skolemid |17| -)) (= (memory_load8_le mem@10 #x00000000000009b8) #x01)) (and (= (memory_load8_le mem@10 #x00000000000009b9) #x00) (= (memory_load8_le mem@10 #x00000000000009ba) #x02))) (and (and (= (memory_load8_le mem@10 #x00000000000009bb) #x00) (= (memory_load8_le mem@10 #x000000000001fdc8) #xd0)) (and (= (memory_load8_le mem@10 #x000000000001fdc9) #x08) (= (memory_load8_le mem@10 #x000000000001fdca) #x00)))) (and (and (and (= (memory_load8_le mem@10 #x000000000001fdcb) #x00) (= (memory_load8_le mem@10 #x000000000001fdcc) #x00)) (and (= (memory_load8_le mem@10 #x000000000001fdcd) #x00) (= (memory_load8_le mem@10 #x000000000001fdce) #x00))) (and (and (= (memory_load8_le mem@10 #x000000000001fdcf) #x00) (= (memory_load8_le mem@10 #x000000000001fdd0) #x80)) (and (= (memory_load8_le mem@10 #x000000000001fdd1) #x08) (= (memory_load8_le mem@10 #x000000000001fdd2) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@10 #x000000000001fdd3) #x00) (= (memory_load8_le mem@10 #x000000000001fdd4) #x00)) (and (= (memory_load8_le mem@10 #x000000000001fdd5) #x00) (= (memory_load8_le mem@10 #x000000000001fdd6) #x00))) (and (and (= (memory_load8_le mem@10 #x000000000001fdd7) #x00) (= (memory_load8_le mem@10 #x000000000001ffd8) #xd4)) (and (= (memory_load8_le mem@10 #x000000000001ffd9) #x08) (= (memory_load8_le mem@10 #x000000000001ffda) #x00)))) (and (and (and (= (memory_load8_le mem@10 #x000000000001ffdb) #x00) (= (memory_load8_le mem@10 #x000000000001ffdc) #x00)) (and (= (memory_load8_le mem@10 #x000000000001ffdd) #x00) (= (memory_load8_le mem@10 #x000000000001ffde) #x00))) (and (and (= (memory_load8_le mem@10 #x000000000001ffdf) #x00) (= (memory_load8_le mem@10 #x0000000000020058) #x58)) (and (= (memory_load8_le mem@10 #x0000000000020059) #x00) (= (memory_load8_le mem@10 #x000000000002005a) #x02))))) (and (and (and (and (= (memory_load8_le mem@10 #x000000000002005b) #x00) (= (memory_load8_le mem@10 #x000000000002005c) #x00)) (and (= (memory_load8_le mem@10 #x000000000002005d) #x00) (= (memory_load8_le mem@10 #x000000000002005e) #x00))) (and (and (= (memory_load8_le mem@10 #x000000000002005f) #x00) (= R0@15 (bvadd #x0000000000020000 #x0000000000000080))) (and (= mem@11 mem@10) (= Gamma_mem@11 Gamma_mem@10)))) (and (and (and (= (memory_load8_le mem@11 #x00000000000009b8) #x01) (= (memory_load8_le mem@11 #x00000000000009b9) #x00)) (and (= (memory_load8_le mem@11 #x00000000000009ba) #x02) (= (memory_load8_le mem@11 #x00000000000009bb) #x00))) (and (and (= (memory_load8_le mem@11 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@11 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@11 #x000000000001fdca) #x00) (= (memory_load8_le mem@11 #x000000000001fdcb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@11 #x000000000001fdcc) #x00) (= (memory_load8_le mem@11 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@11 #x000000000001fdce) #x00) (= (memory_load8_le mem@11 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@11 #x000000000001fdd0) #x80) (= (memory_load8_le mem@11 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@11 #x000000000001fdd2) #x00) (= (memory_load8_le mem@11 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@11 #x000000000001fdd4) #x00) (= (memory_load8_le mem@11 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@11 #x000000000001fdd6) #x00) (= (memory_load8_le mem@11 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@11 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@11 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@11 #x000000000001ffda) #x00) (= (memory_load8_le mem@11 #x000000000001ffdb) #x00))))) (and (and (and (and (= (memory_load8_le mem@11 #x000000000001ffdc) #x00) (= (memory_load8_le mem@11 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@11 #x000000000001ffde) #x00) (= (memory_load8_le mem@11 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@11 #x0000000000020058) #x58) (= (memory_load8_le mem@11 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@11 #x000000000002005a) #x02) (= (memory_load8_le mem@11 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@11 #x000000000002005c) #x00) (= (memory_load8_le mem@11 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@11 #x000000000002005e) #x00) (= (memory_load8_le mem@11 #x000000000002005f) #x00))) (and (and (= R0@16 (memory_load64_le mem@11 R0@15)) (= Gamma_R0@7 (or (gamma_load64 Gamma_mem@11 R0@15) (L mem@11 R0@15)))) (= (ControlFlow 0 2) (- 0 1))))))))) (forall ((i@@10 Int) (j (_ BitVec 64)) ) (! (=> (and (= (select malloc_base@0 i@@10) R0@16) (and (bvuge j R0@16) (bvult j (select malloc_end@0 i@@10)))) (select Gamma_mem@11 j)) - :qid |examplebpl.148:20| - :skolemid |10| -))))))))))) -(let ((PreconditionGeneratedEntry_correct (=> (and (and (= (gamma_load8 Gamma_mem $password_addr) false) (= malloc_count 0)) (and (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr)) (= R31 #x0000000000000064))) (=> (and (and (and (= (memory_load8_le mem #x0000000000020050) #x00) (= (memory_load8_le mem #x0000000000020051) #x00)) (and (= (memory_load8_le mem #x0000000000020052) #x00) (= (memory_load8_le mem #x0000000000020053) #x00))) (and (and (= (memory_load8_le mem #x0000000000020054) #x00) (= (memory_load8_le mem #x0000000000020055) #x00)) (and (= (memory_load8_le mem #x0000000000020056) #x00) (= (memory_load8_le mem #x0000000000020057) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020060) #x07) (= (memory_load8_le mem #x0000000000020061) #x00)) (and (= (memory_load8_le mem #x0000000000020062) #x00) (= (memory_load8_le mem #x0000000000020063) #x00))) (and (and (= (memory_load8_le mem #x0000000000020064) #x00) (= (memory_load8_le mem #x0000000000020065) #x00)) (and (= (memory_load8_le mem #x0000000000020066) #x00) (= (memory_load8_le mem #x0000000000020067) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020068) #x68) (= (memory_load8_le mem #x0000000000020069) #x65)) (and (= (memory_load8_le mem #x000000000002006a) #x6c) (= (memory_load8_le mem #x000000000002006b) #x6c))) (and (and (= (memory_load8_le mem #x000000000002006c) #x6f) (= (memory_load8_le mem #x000000000002006d) #x6f)) (and (= (memory_load8_le mem #x000000000002006e) #x00) (= (memory_load8_le mem #x000000000002006f) #x00)))) (and (and (and (= (memory_load8_le mem #x0000000000020070) #x00) (= (memory_load8_le mem #x0000000000020071) #x00)) (and (= (memory_load8_le mem #x0000000000020072) #x00) (= (memory_load8_le mem #x00000000000009b8) #x01))) (and (and (= (memory_load8_le mem #x00000000000009b9) #x00) (= (memory_load8_le mem #x00000000000009ba) #x02)) (and (= (memory_load8_le mem #x00000000000009bb) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 3) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(get-info :reason-unknown) -(assert (not (= (ControlFlow 0 2) (- 1)))) -(check-sat) -(pop 1) -; Invalid -(get-info :rlimit) 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.c b/examples/simplified_http_parse_basic/example.c deleted file mode 100644 index c8a695ad6..000000000 --- a/examples/simplified_http_parse_basic/example.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#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"; - - - -int main() { - char *pos = NULL, *dom = NULL; - - - stext[2] = password; - buf = malloc(strlen(stext) + 1); - memcpy(buf, stext, strlen(stext) + 1); // inlined by -O2 - - puts(buf); - - // find the split between username and password ("username:password") - pos = buf + 1; - - // including this makes verification fail - // *pos = 0; - - memset(buf, 0, strlen(buf) + 1); - free(buf); // requires secret[i] == true - -} - 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/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..b55cad018 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,812 @@ +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, 2412bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free requires (memory_load8_le(mem, 2413bv64) == 0bv8); + free requires (memory_load8_le(mem, 2414bv64) == 2bv8); + free requires (memory_load8_le(mem, 2415bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free requires (memory_load8_le(mem, 2413bv64) == 0bv8); + free requires (memory_load8_le(mem, 2414bv64) == 2bv8); + free requires (memory_load8_le(mem, 2415bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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 := 2284bv64, 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 := 2312bv64, 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 := 2328bv64, true; + call memcpy(); + goto l000003b7; + l000003b7: + assume {:captureState "l000003b7"} true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2336bv64, 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 := 2348bv64, 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 := 2364bv64, 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 := 2372bv64, 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, 2412bv64) == 1bv8); + free requires (memory_load8_le(mem, 2413bv64) == 0bv8); + free requires (memory_load8_le(mem, 2414bv64) == 2bv8); + free requires (memory_load8_le(mem, 2415bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free requires (memory_load8_le(mem, 2413bv64) == 0bv8); + free requires (memory_load8_le(mem, 2414bv64) == 2bv8); + free requires (memory_load8_le(mem, 2415bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free requires (memory_load8_le(mem, 2413bv64) == 0bv8); + free requires (memory_load8_le(mem, 2414bv64) == 2bv8); + free requires (memory_load8_le(mem, 2415bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free requires (memory_load8_le(mem, 2413bv64) == 0bv8); + free requires (memory_load8_le(mem, 2414bv64) == 2bv8); + free requires (memory_load8_le(mem, 2415bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free requires (memory_load8_le(mem, 2413bv64) == 0bv8); + free requires (memory_load8_le(mem, 2414bv64) == 2bv8); + free requires (memory_load8_le(mem, 2415bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2412bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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/http_parse_basic/example.bpl b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected similarity index 86% rename from examples/http_parse_basic/example.bpl rename to src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected index 175e49ed2..05c767d15 100644 --- a/examples/http_parse_basic/example.bpl +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected @@ -37,17 +37,11 @@ function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { } function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); -function {:extern} {:bvbuiltin "bvlshr"} bvlshr64(bv64, bv64) returns (bv64); -function {:extern} {:bvbuiltin "bvmul"} bvmul64(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 {:inline} byte_extract64_64(value: bv64, offset: bv64) returns (bv8) { - bvlshr64(value, bvmul64(offset, 8bv64))[8:0] -} - 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]))) } @@ -61,15 +55,7 @@ function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) } function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { - (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then value else gammaMap[i]))) -} - -function {:extern} gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { - gammaMap[index := value] -} - -function {:inline} in_bounds64_le(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)))) + 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) { @@ -81,21 +67,17 @@ function {:extern} memory_load8_le(memory: [bv64]bv8, index: bv64) returns (bv8) } function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) returns ([bv64]bv8) { - (lambda i: bv64 :: ((if in_bounds64(index, 8bv64, i) then byte_extract64_64(value, bvsub64(i, index)) else memory[i]))) -} - -function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { - memory[index := value] + 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, 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, 2480bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -146,10 +128,10 @@ procedure {:extern} guarantee_reflexive(); 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, 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, 2480bv64) == 1bv8); + free requires (memory_load8_le(mem, 2481bv64) == 0bv8); + free requires (memory_load8_le(mem, 2482bv64) == 2bv8); + free requires (memory_load8_le(mem, 2483bv64) == 0bv8); free requires (memory_load8_le(mem, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -182,10 +164,10 @@ procedure #free(); 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, 2480bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -249,21 +231,21 @@ procedure main() 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) == 104bv8); - free requires (memory_load8_le(mem, 131177bv64) == 101bv8); - free requires (memory_load8_le(mem, 131178bv64) == 108bv8); - free requires (memory_load8_le(mem, 131179bv64) == 108bv8); - free requires (memory_load8_le(mem, 131180bv64) == 111bv8); - free requires (memory_load8_le(mem, 131181bv64) == 111bv8); - free requires (memory_load8_le(mem, 131182bv64) == 0bv8); - free requires (memory_load8_le(mem, 131183bv64) == 0bv8); - free requires (memory_load8_le(mem, 131184bv64) == 0bv8); + free requires (memory_load8_le(mem, 131176bv64) == 117bv8); + free requires (memory_load8_le(mem, 131177bv64) == 115bv8); + free requires (memory_load8_le(mem, 131178bv64) == 101bv8); + free requires (memory_load8_le(mem, 131179bv64) == 114bv8); + free requires (memory_load8_le(mem, 131180bv64) == 58bv8); + free requires (memory_load8_le(mem, 131181bv64) == 112bv8); + free requires (memory_load8_le(mem, 131182bv64) == 97bv8); + free requires (memory_load8_le(mem, 131183bv64) == 115bv8); + free requires (memory_load8_le(mem, 131184bv64) == 115bv8); free requires (memory_load8_le(mem, 131185bv64) == 0bv8); free requires (memory_load8_le(mem, 131186bv64) == 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, 2480bv64) == 1bv8); + free requires (memory_load8_le(mem, 2481bv64) == 0bv8); + free requires (memory_load8_le(mem, 2482bv64) == 2bv8); + free requires (memory_load8_le(mem, 2483bv64) == 0bv8); free requires (memory_load8_le(mem, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -302,10 +284,10 @@ procedure main() free ensures (R19 == old(R19)); 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, 2480bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -345,30 +327,30 @@ procedure main() 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 "%00000384"} true; + assume {:captureState "%0000037c"} true; stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); - assume {:captureState "%0000038a"} true; + assume {:captureState "%00000382"} true; R31, Gamma_R31 := #4, Gamma_#4; R29, Gamma_R29 := R31, Gamma_R31; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); - assume {:captureState "%0000039c"} true; + assume {:captureState "%00000394"} true; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); - assume {:captureState "%000003a3"} true; + assume {:captureState "%0000039b"} true; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); - assume {:captureState "%000003aa"} true; + assume {:captureState "%000003a2"} true; R0, Gamma_R0 := 11bv64, true; R30, Gamma_R30 := 2288bv64, true; call malloc(); - goto l000003b9; - l000003b9: - assume {:captureState "l000003b9"} true; + goto l000003b1; + l000003b1: + assume {:captureState "l000003b1"} true; R1, Gamma_R1 := R0, Gamma_R0; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); assert (L(mem, R0) ==> Gamma_R1); mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%000003d0"} true; + assume {:captureState "%000003c8"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); @@ -377,39 +359,34 @@ procedure main() R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; R30, Gamma_R30 := 2328bv64, true; call strlen(); - goto l000003f7; - l000003f7: - assume {:captureState "l000003f7"} true; + goto l000003ef; + l000003ef: + assume {:captureState "l000003ef"} true; R2, Gamma_R2 := R0, Gamma_R0; R0, Gamma_R0 := 131072bv64, true; R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; R0, Gamma_R0 := R19, Gamma_R19; R30, Gamma_R30 := 2348bv64, true; call memcpy(); - goto l00000416; - l00000416: - assume {:captureState "l00000416"} true; + goto l0000040e; + l0000040e: + assume {:captureState "l0000040e"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); R30, Gamma_R30 := 2364bv64, true; call puts(); - goto l00000430; - l00000430: - assume {:captureState "l00000430"} true; + goto l00000428; + l00000428: + assume {:captureState "l00000428"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := bvadd64(R0, 2bv64), Gamma_R0; + R0, Gamma_R0 := bvadd64(R0, 4bv64), Gamma_R0; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); - assume {:captureState "%0000044e"} true; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); - call rely(); - assert (L(mem, R0) ==> true); - mem, Gamma_mem := memory_store8_le(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%0000045c"} true; + assume {:captureState "%00000446"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); @@ -418,28 +395,28 @@ procedure main() R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2420bv64, true; + R30, Gamma_R30 := 2412bv64, true; call strlen(); - goto l00000489; - l00000489: - assume {:captureState "l00000489"} true; + goto l00000473; + l00000473: + assume {:captureState "l00000473"} true; R2, Gamma_R2 := R0, Gamma_R0; R1, Gamma_R1 := 1bv64, true; R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2436bv64, true; + R30, Gamma_R30 := 2428bv64, true; call memset(); - goto l000004a2; - l000004a2: - assume {:captureState "l000004a2"} true; + goto l0000048c; + l0000048c: + assume {:captureState "l0000048c"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2452bv64, true; + R30, Gamma_R30 := 2444bv64, true; call #free(); - goto l000004bc; - l000004bc: - assume {:captureState "l000004bc"} true; + goto l000004a6; + l000004a6: + assume {:captureState "l000004a6"} true; R0, Gamma_R0 := 0bv64, true; R19, Gamma_R19 := 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); @@ -452,10 +429,10 @@ 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, 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, 2480bv64) == 1bv8); + free requires (memory_load8_le(mem, 2481bv64) == 0bv8); + free requires (memory_load8_le(mem, 2482bv64) == 2bv8); + free requires (memory_load8_le(mem, 2483bv64) == 0bv8); free requires (memory_load8_le(mem, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -498,10 +475,10 @@ procedure malloc(); 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, 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, 2480bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -537,10 +514,10 @@ procedure malloc(); 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, 2480bv64) == 1bv8); + free requires (memory_load8_le(mem, 2481bv64) == 0bv8); + free requires (memory_load8_le(mem, 2482bv64) == 2bv8); + free requires (memory_load8_le(mem, 2483bv64) == 0bv8); free requires (memory_load8_le(mem, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -576,10 +553,10 @@ procedure memcpy(); 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, 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, 2480bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -616,10 +593,10 @@ procedure memcpy(); procedure memset(); modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; requires Gamma_R1; - 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, 2480bv64) == 1bv8); + free requires (memory_load8_le(mem, 2481bv64) == 0bv8); + free requires (memory_load8_le(mem, 2482bv64) == 2bv8); + free requires (memory_load8_le(mem, 2483bv64) == 0bv8); free requires (memory_load8_le(mem, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -655,10 +632,10 @@ procedure memset(); 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, 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, 2480bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -694,10 +671,10 @@ procedure memset(); 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, 2480bv64) == 1bv8); + free requires (memory_load8_le(mem, 2481bv64) == 0bv8); + free requires (memory_load8_le(mem, 2482bv64) == 2bv8); + free requires (memory_load8_le(mem, 2483bv64) == 0bv8); free requires (memory_load8_le(mem, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -730,10 +707,10 @@ procedure puts(); 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, 2480bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -769,10 +746,10 @@ procedure puts(); procedure strlen(); 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, 2480bv64) == 1bv8); + free requires (memory_load8_le(mem, 2481bv64) == 0bv8); + free requires (memory_load8_le(mem, 2482bv64) == 2bv8); + free requires (memory_load8_le(mem, 2483bv64) == 0bv8); free requires (memory_load8_le(mem, 130504bv64) == 208bv8); free requires (memory_load8_le(mem, 130505bv64) == 8bv8); free requires (memory_load8_le(mem, 130506bv64) == 0bv8); @@ -810,10 +787,10 @@ procedure strlen(); 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, 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, 2480bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); 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..3579f04f2 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,812 @@ +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 ((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/clang/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected new file mode 100644 index 000000000..56b362747 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,814 @@ +var {:extern} Gamma_R0: bool; +var {:extern} Gamma_R1: bool; +var {:extern} Gamma_R16: bool; +var {:extern} Gamma_R17: bool; +var {:extern} Gamma_R2: bool; +var {:extern} Gamma_R29: bool; +var {:extern} Gamma_R30: bool; +var {:extern} Gamma_R31: bool; +var {:extern} Gamma_R8: bool; +var {:extern} Gamma_R9: 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} R2: bv64; +var {:extern} R29: bv64; +var {:extern} R30: bv64; +var {:extern} R31: bv64; +var {:extern} R8: bv64; +var {:extern} R9: 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, 2448bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free requires (memory_load8_le(mem, 2449bv64) == 0bv8); + free requires (memory_load8_le(mem, 2450bv64) == 2bv8); + free requires (memory_load8_le(mem, 2451bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, 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, 2448bv64) == 1bv8); + free requires (memory_load8_le(mem, 2449bv64) == 0bv8); + free requires (memory_load8_le(mem, 2450bv64) == 2bv8); + free requires (memory_load8_le(mem, 2451bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2448bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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 Gamma_#4: bool; + var Gamma_#5: bool; + lmain: + assume {:captureState "lmain"} true; + R31, Gamma_R31 := bvadd64(R31, 18446744073709551552bv64), Gamma_R31; + #4, Gamma_#4 := bvadd64(R31, 48bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); + assume {:captureState "%00000362"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); + assume {:captureState "%00000368"} true; + R29, Gamma_R29 := bvadd64(R31, 48bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), true); + assume {:captureState "%00000375"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551600bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551600bv64), true); + assume {:captureState "%0000037c"} true; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2288bv64, true; + call malloc(); + goto l0000038b; + l0000038b: + assume {:captureState "l0000038b"} true; + R8, Gamma_R8 := 131072bv64, true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R8); + assume {:captureState "%00000396"} true; + call rely(); + assert (L(mem, bvadd64(R8, 120bv64)) ==> Gamma_R0); + mem, Gamma_mem := memory_store64_le(mem, bvadd64(R8, 120bv64), R0), gamma_store64(Gamma_mem, bvadd64(R8, 120bv64), Gamma_R0); + assume {:captureState "%0000039e"} true; + call rely(); + R8, Gamma_R8 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 8bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 8bv64), Gamma_R8); + assume {:captureState "%000003ad"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 97bv64), Gamma_R0; + stack, Gamma_stack := memory_store64_le(stack, R31, R0), gamma_store64(Gamma_stack, R31, Gamma_R0); + assume {:captureState "%000003c0"} true; + R30, Gamma_R30 := 2324bv64, true; + call strlen(); + goto l000003ca; + l000003ca: + assume {:captureState "l000003ca"} true; + R1, Gamma_R1 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); + R30, Gamma_R30 := 2340bv64, true; + call memcpy(); + goto l000003e6; + l000003e6: + assume {:captureState "l000003e6"} true; + R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + R30, Gamma_R30 := 2352bv64, true; + call puts(); + goto l000003fc; + l000003fc: + assume {:captureState "l000003fc"} true; + R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + R9, Gamma_R9 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + R9, Gamma_R9 := bvadd64(R9, 4bv64), Gamma_R9; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), R9), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), Gamma_R9); + assume {:captureState "%00000416"} true; + call rely(); + R9, Gamma_R9 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R9), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R9); + assume {:captureState "%00000425"} true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + R30, Gamma_R30 := 2384bv64, true; + call strlen(); + goto l00000435; + l00000435: + assume {:captureState "l00000435"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); + R1, Gamma_R1 := 1bv64, true; + R30, Gamma_R30 := 2400bv64, true; + call memset(); + goto l0000044f; + l0000044f: + assume {:captureState "l0000044f"} true; + R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + R30, Gamma_R30 := 2412bv64, true; + call #free(); + goto l00000465; + l00000465: + assume {:captureState "l00000465"} true; + R0, Gamma_R0 := 0bv64, true; + #5, Gamma_#5 := bvadd64(R31, 48bv64), Gamma_R31; + R29, Gamma_R29 := memory_load64_le(stack, #5), gamma_load64(Gamma_stack, #5); + R30, Gamma_R30 := memory_load64_le(stack, bvadd64(#5, 8bv64)), gamma_load64(Gamma_stack, bvadd64(#5, 8bv64)); + R31, Gamma_R31 := bvadd64(R31, 64bv64), 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, 2448bv64) == 1bv8); + free requires (memory_load8_le(mem, 2449bv64) == 0bv8); + free requires (memory_load8_le(mem, 2450bv64) == 2bv8); + free requires (memory_load8_le(mem, 2451bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free requires (memory_load8_le(mem, 2449bv64) == 0bv8); + free requires (memory_load8_le(mem, 2450bv64) == 2bv8); + free requires (memory_load8_le(mem, 2451bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free requires (memory_load8_le(mem, 2449bv64) == 0bv8); + free requires (memory_load8_le(mem, 2450bv64) == 2bv8); + free requires (memory_load8_le(mem, 2451bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free requires (memory_load8_le(mem, 2449bv64) == 0bv8); + free requires (memory_load8_le(mem, 2450bv64) == 2bv8); + free requires (memory_load8_le(mem, 2451bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free requires (memory_load8_le(mem, 2449bv64) == 0bv8); + free requires (memory_load8_le(mem, 2450bv64) == 2bv8); + free requires (memory_load8_le(mem, 2451bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 2448bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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); From 2a7d05fce772d567665cd2d7fa09f3b8ac37e485 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Wed, 3 Jan 2024 17:16:24 +1000 Subject: [PATCH 11/36] fix typo in dockerfile --- docker/asli.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/asli.Dockerfile b/docker/asli.Dockerfile index 592915568..6e4d4333c 100644 --- a/docker/asli.Dockerfile +++ b/docker/asli.Dockerfile @@ -80,7 +80,7 @@ USER root # ==================== # Bap with ASLi plugin # ==================== -FROM bap-upsteam.2.5 AS aslp-bap-upstream +FROM bap-upstream.2.5 AS aslp-bap-upstream USER opam RUN git clone https://github.com/UQ-PAC/bap-asli-plugin.git RUN cd /home/opam/bap-asli-plugin && eval $(opam env) && make From 1bea876079ddb319e25d426e80a515a4c85d9c23 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Thu, 4 Jan 2024 15:49:38 +1000 Subject: [PATCH 12/36] simplify makefile config requirements --- .../malloc_memcpy_strlen_memset_free/Makefile | 2 +- .../clang/Makefile | 4 - .../malloc_memcpy_strlen_memset_free.adt | 1832 +++++++++------- .../malloc_memcpy_strlen_memset_free.bir | 907 ++++---- .../malloc_memcpy_strlen_memset_free.relf | 206 +- .../clang_O2/Makefile | 5 - .../malloc_memcpy_strlen_memset_free.adt | 704 +++---- .../malloc_memcpy_strlen_memset_free.bir | 693 ++++--- .../malloc_memcpy_strlen_memset_free.expected | 812 -------- .../malloc_memcpy_strlen_memset_free.adt | 773 +++++++ .../malloc_memcpy_strlen_memset_free.bir | 359 ++++ .../malloc_memcpy_strlen_memset_free.relf | 144 ++ .../malloc_memcpy_strlen_memset_free.adt | 779 +++++++ .../malloc_memcpy_strlen_memset_free.bir | 361 ++++ .../malloc_memcpy_strlen_memset_free.relf | 146 ++ .../gcc/Makefile | 3 - .../gcc/malloc_memcpy_strlen_memset_free.adt | 715 +++---- .../gcc/malloc_memcpy_strlen_memset_free.bir | 718 +++---- .../gcc_O2/Makefile | 3 - .../malloc_memcpy_strlen_memset_free.adt | 714 +++---- .../malloc_memcpy_strlen_memset_free.bir | 691 ++++--- .../malloc_memcpy_strlen_memset_free.adt | 791 +++++++ .../malloc_memcpy_strlen_memset_free.bir | 369 ++++ .../malloc_memcpy_strlen_memset_free.relf | 143 ++ .../malloc_memcpy_strlen_memset_free.adt | 793 +++++++ .../malloc_memcpy_strlen_memset_free.bir | 369 ++++ .../malloc_memcpy_strlen_memset_free.relf | 145 ++ .../malloc_memcpy_strlen_memset_free.spec | 24 +- .../proverlog.smt2 | 307 +++ .../malloc_memcpy_strlen_memset_free/Makefile | 2 +- .../clang/Makefile | 4 - .../malloc_memcpy_strlen_memset_free.adt | 1838 ++++++++++------- .../malloc_memcpy_strlen_memset_free.bir | 905 ++++---- .../malloc_memcpy_strlen_memset_free.relf | 206 +- .../clang_O2/Makefile | 5 - .../malloc_memcpy_strlen_memset_free.adt | 772 +++---- .../malloc_memcpy_strlen_memset_free.bir | 697 ++++--- .../malloc_memcpy_strlen_memset_free.relf | 32 +- .../malloc_memcpy_strlen_memset_free.adt | 779 +++++++ .../malloc_memcpy_strlen_memset_free.bir | 361 ++++ .../malloc_memcpy_strlen_memset_free.relf | 144 ++ .../gcc/Makefile | 3 - .../gcc/malloc_memcpy_strlen_memset_free.adt | 789 +++---- .../gcc/malloc_memcpy_strlen_memset_free.bir | 720 +++---- .../gcc/malloc_memcpy_strlen_memset_free.relf | 32 +- .../gcc_O2/Makefile | 3 - .../malloc_memcpy_strlen_memset_free.adt | 781 +++---- .../malloc_memcpy_strlen_memset_free.bir | 693 ++++--- .../malloc_memcpy_strlen_memset_free.relf | 2 +- .../malloc_memcpy_strlen_memset_free.spec | 2 - src/test/make/clang.mk | 2 + src/test/make/clang_O2.mk | 3 + src/test/make/clang_no_plt_no_pic.mk | 3 + src/test/make/clang_pic.mk | 3 + src/test/make/gcc.mk | 2 + src/test/make/gcc_O2.mk | 3 + src/test/make/gcc_no_plt_no_pic.mk | 3 + src/test/make/gcc_pic.mk | 3 + src/test/make/lift-directories.mk | 34 +- src/test/make/lift.mk | 31 +- 60 files changed, 14803 insertions(+), 7566 deletions(-) delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang/Makefile delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/Makefile delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc/Makefile delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/proverlog.smt2 delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/Makefile delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/Makefile create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/Makefile delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile create mode 100644 src/test/make/clang.mk create mode 100644 src/test/make/clang_O2.mk create mode 100644 src/test/make/clang_no_plt_no_pic.mk create mode 100644 src/test/make/clang_pic.mk create mode 100644 src/test/make/gcc.mk create mode 100644 src/test/make/gcc_O2.mk create mode 100644 src/test/make/gcc_no_plt_no_pic.mk create mode 100644 src/test/make/gcc_pic.mk diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/Makefile index b0247fc10..9d5653fc7 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/Makefile +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/Makefile @@ -1,2 +1,2 @@ - include ../../make/lift-directories.mk + diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/Makefile deleted file mode 100644 index 3765849b9..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -CC=clang -CFLAGS=-target $(TARGET) - -include ../../../make/lift.mk diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt index e8c7e49a2..fc7fff40f 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt @@ -1,759 +1,1183 @@ 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 2428 20 2428)\n(code-region 1984 444 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 168)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2428 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2428 20)\n(llvm:code-entry .text 1984 444)\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 2452 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 2712)\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 2452 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 2712)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2512 200 2512)\n(llvm:section-entry .eh_frame_hdr 2452 60 2452)\n(llvm:section-entry .rodata 2448 4 2448)\n(llvm:section-entry .fini 2428 20 2428)\n(llvm:section-entry .text 1984 444 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 168 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2428 0 2428 2428)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2712 0)\n(mapped 130504 676 64968)\n(named-region 0 2712 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 444 .text)\n(named-region 2428 20 .fini)\n(named-region 2448 4 .rodata)\n(named-region 2452 60 .eh_frame_hdr)\n(named-region 2512 200 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2428 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 444)\n(section 2428 20)\n(section 2448 4)\n(section 2452 60)\n(section 2512 200)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2712 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 168 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2428 2428)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), -Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\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"), -Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), -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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b"), -Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x97C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x990, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x994, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x2c\xfe\xff\xff\x50\x00\x00\x00\x7c\xfe\xff\xff\x64\x00\x00\x00\xac\xfe\xff\xff\x78\x00\x00\x00\xec\xfe\xff\xff\x8c\x00\x00\x00\x3c\xff\xff\xff\xb0\x00\x00\x00\x40\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0x9D0, "\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\xd4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x10\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x2c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x58\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\x84\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\x24\x00\x00\x00\x18\x00\x00\x00\x60\xfe\xff\xff\xa8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x90\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), -Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), -Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x75\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x81\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x8e\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xA97), Attr("segment","02 0 2712")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), -Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), -Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), -Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), +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 x86_64)\n(base-address 0)\n(bias 0)\n(bits 64)\n(code-region 4668 9 4668)\n(code-region 4256 410 4256)\n(code-region 4240 8 4240)\n(code-region 4128 112 4128)\n(code-region 4096 23 4096)\n(code-start 4256)\n(code-start 4496)\n(entry-point 4256)\n(external-reference 16320 __libc_start_main)\n(external-reference 16328 _ITM_deregisterTMCloneTable)\n(external-reference 16336 __gmon_start__)\n(external-reference 16344 _ITM_registerTMCloneTable)\n(external-reference 16352 __cxa_finalize)\n(external-reference 16384 free)\n(external-reference 16392 puts)\n(external-reference 16400 strlen)\n(external-reference 16408 memset)\n(external-reference 16416 memcpy)\n(external-reference 16424 malloc)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry _init 4096 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.2.5 0 0)\n(llvm:code-entry main 4496 170)\n(llvm:code-entry _start 4256 34)\n(llvm:code-entry malloc@GLIBC_2.2.5 0 0)\n(llvm:code-entry memcpy@GLIBC_2.14 0 0)\n(llvm:code-entry memset@GLIBC_2.2.5 0 0)\n(llvm:code-entry strlen@GLIBC_2.2.5 0 0)\n(llvm:code-entry _fini 4668 0)\n(llvm:code-entry puts@GLIBC_2.2.5 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry free@GLIBC_2.2.5 0 0)\n(llvm:code-entry frame_dummy 4480 0)\n(llvm:code-entry __do_global_dtors_aux 4416 0)\n(llvm:code-entry register_tm_clones 4352 0)\n(llvm:code-entry deregister_tm_clones 4304 0)\n(llvm:code-entry .fini 4668 9)\n(llvm:code-entry .text 4256 410)\n(llvm:code-entry .plt.got 4240 8)\n(llvm:code-entry .plt 4128 112)\n(llvm:code-entry .init 4096 23)\n(llvm:elf-program-header 12 11728 560)\n(llvm:elf-program-header 11 0 0)\n(llvm:elf-program-header 10 8196 44)\n(llvm:elf-program-header 09 824 32)\n(llvm:elf-program-header 08 856 68)\n(llvm:elf-program-header 07 824 32)\n(llvm:elf-program-header 06 11744 480)\n(llvm:elf-program-header 05 11728 636)\n(llvm:elf-program-header 04 8192 220)\n(llvm:elf-program-header 03 4096 581)\n(llvm:elf-program-header 02 0 1872)\n(llvm:elf-program-header 01 792 28)\n(llvm:elf-program-header 00 64 728)\n(llvm:elf-program-header-flags 12 false true false false)\n(llvm:elf-program-header-flags 11 false true true false)\n(llvm:elf-program-header-flags 10 false true false false)\n(llvm:elf-program-header-flags 09 false true false false)\n(llvm:elf-program-header-flags 08 false true false false)\n(llvm:elf-program-header-flags 07 false true false false)\n(llvm:elf-program-header-flags 06 false true true false)\n(llvm:elf-program-header-flags 05 true true true false)\n(llvm:elf-program-header-flags 04 true true false false)\n(llvm:elf-program-header-flags 03 true true false true)\n(llvm:elf-program-header-flags 02 true true false false)\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 12 15824 560)\n(llvm:elf-virtual-program-header 11 0 0)\n(llvm:elf-virtual-program-header 10 8196 44)\n(llvm:elf-virtual-program-header 09 824 32)\n(llvm:elf-virtual-program-header 08 856 68)\n(llvm:elf-virtual-program-header 07 824 32)\n(llvm:elf-virtual-program-header 06 15840 480)\n(llvm:elf-virtual-program-header 05 15824 656)\n(llvm:elf-virtual-program-header 04 8192 220)\n(llvm:elf-virtual-program-header 03 4096 581)\n(llvm:elf-virtual-program-header 02 0 1872)\n(llvm:elf-virtual-program-header 01 792 28)\n(llvm:elf-virtual-program-header 00 64 728)\n(llvm:entry-point 4256)\n(llvm:name-reference 16424 malloc)\n(llvm:name-reference 16416 memcpy)\n(llvm:name-reference 16408 memset)\n(llvm:name-reference 16400 strlen)\n(llvm:name-reference 16392 puts)\n(llvm:name-reference 16384 free)\n(llvm:name-reference 16352 __cxa_finalize)\n(llvm:name-reference 16344 _ITM_registerTMCloneTable)\n(llvm:name-reference 16336 __gmon_start__)\n(llvm:name-reference 16328 _ITM_deregisterTMCloneTable)\n(llvm:name-reference 16320 __libc_start_main)\n(llvm:section-entry .shstrtab 0 282 14101)\n(llvm:section-entry .strtab 0 613 13488)\n(llvm:section-entry .symtab 0 1056 12432)\n(llvm:section-entry .comment 0 63 12364)\n(llvm:section-entry .bss 16464 16 12364)\n(llvm:section-entry .data 16432 28 12336)\n(llvm:section-entry .got.plt 16360 72 12264)\n(llvm:section-entry .got 16320 40 12224)\n(llvm:section-entry .dynamic 15840 480 11744)\n(llvm:section-entry .fini_array 15832 8 11736)\n(llvm:section-entry .init_array 15824 8 11728)\n(llvm:section-entry .eh_frame 8240 172 8240)\n(llvm:section-entry .eh_frame_hdr 8196 44 8196)\n(llvm:section-entry .rodata 8192 4 8192)\n(llvm:section-entry .fini 4668 9 4668)\n(llvm:section-entry .text 4256 410 4256)\n(llvm:section-entry .plt.got 4240 8 4240)\n(llvm:section-entry .plt 4128 112 4128)\n(llvm:section-entry .init 4096 23 4096)\n(llvm:section-entry .rela.plt 1728 144 1728)\n(llvm:section-entry .rela.dyn 1536 192 1536)\n(llvm:section-entry .gnu.version_r 1472 64 1472)\n(llvm:section-entry .gnu.version 1442 24 1442)\n(llvm:section-entry .dynstr 1256 185 1256)\n(llvm:section-entry .dynsym 968 288 968)\n(llvm:section-entry .gnu.hash 928 36 928)\n(llvm:section-entry .note.ABI-tag 892 32 892)\n(llvm:section-entry .note.gnu.build-id 856 36 856)\n(llvm:section-entry .note.gnu.property 824 32 824)\n(llvm:section-entry .interp 792 28 792)\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.got 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 .note.gnu.property true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry _init 4096 0 4096 4096)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry main 4496 170 4496 4496)\n(llvm:symbol-entry _start 4256 34 4256 4256)\n(llvm:symbol-entry malloc@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.14 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry _fini 4668 0 4668 4668)\n(llvm:symbol-entry puts@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry free@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry frame_dummy 4480 0 4480 4480)\n(llvm:symbol-entry __do_global_dtors_aux 4416 0 4416 4416)\n(llvm:symbol-entry register_tm_clones 4352 0 4352 4352)\n(llvm:symbol-entry deregister_tm_clones 4304 0 4304 4304)\n(mapped 0 1872 0)\n(mapped 4096 581 4096)\n(mapped 8192 220 8192)\n(mapped 15824 636 11728)\n(named-region 0 1872 02)\n(named-region 4096 581 03)\n(named-region 8192 220 04)\n(named-region 15824 656 05)\n(named-region 792 28 .interp)\n(named-region 824 32 .note.gnu.property)\n(named-region 856 36 .note.gnu.build-id)\n(named-region 892 32 .note.ABI-tag)\n(named-region 928 36 .gnu.hash)\n(named-region 968 288 .dynsym)\n(named-region 1256 185 .dynstr)\n(named-region 1442 24 .gnu.version)\n(named-region 1472 64 .gnu.version_r)\n(named-region 1536 192 .rela.dyn)\n(named-region 1728 144 .rela.plt)\n(named-region 4096 23 .init)\n(named-region 4128 112 .plt)\n(named-region 4240 8 .plt.got)\n(named-region 4256 410 .text)\n(named-region 4668 9 .fini)\n(named-region 8192 4 .rodata)\n(named-region 8196 44 .eh_frame_hdr)\n(named-region 8240 172 .eh_frame)\n(named-region 15824 8 .init_array)\n(named-region 15832 8 .fini_array)\n(named-region 15840 480 .dynamic)\n(named-region 16320 40 .got)\n(named-region 16360 72 .got.plt)\n(named-region 16432 28 .data)\n(named-region 16464 16 .bss)\n(named-region 0 63 .comment)\n(named-region 0 1056 .symtab)\n(named-region 0 613 .strtab)\n(named-region 0 282 .shstrtab)\n(named-symbol 4304 deregister_tm_clones)\n(named-symbol 4352 register_tm_clones)\n(named-symbol 4416 __do_global_dtors_aux)\n(named-symbol 4480 frame_dummy)\n(named-symbol 0 free@GLIBC_2.2.5)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 puts@GLIBC_2.2.5)\n(named-symbol 4668 _fini)\n(named-symbol 0 strlen@GLIBC_2.2.5)\n(named-symbol 0 memset@GLIBC_2.2.5)\n(named-symbol 0 memcpy@GLIBC_2.14)\n(named-symbol 0 malloc@GLIBC_2.2.5)\n(named-symbol 4256 _start)\n(named-symbol 4496 main)\n(named-symbol 0 __cxa_finalize@GLIBC_2.2.5)\n(named-symbol 4096 _init)\n(named-symbol 0 free)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 puts)\n(named-symbol 0 strlen)\n(named-symbol 0 memset)\n(named-symbol 0 memcpy)\n(named-symbol 0 malloc)\n(named-symbol 0 __cxa_finalize)\n(require libc.so.6)\n(section 792 28)\n(section 824 32)\n(section 856 36)\n(section 892 32)\n(section 928 36)\n(section 968 288)\n(section 1256 185)\n(section 1442 24)\n(section 1472 64)\n(section 1536 192)\n(section 1728 144)\n(section 4096 23)\n(section 4128 112)\n(section 4240 8)\n(section 4256 410)\n(section 4668 9)\n(section 8192 4)\n(section 8196 44)\n(section 8240 172)\n(section 15824 8)\n(section 15832 8)\n(section 15840 480)\n(section 16320 40)\n(section 16360 72)\n(section 16432 28)\n(section 16464 16)\n(section 0 63)\n(section 0 1056)\n(section 0 613)\n(section 0 282)\n(segment 0 1872 true false false)\n(segment 4096 581 true false true)\n(segment 8192 220 true false false)\n(segment 15824 656 true true false)\n(subarch \"\")\n(symbol-chunk 4256 34 4256)\n(symbol-chunk 4496 170 4496)\n(symbol-value 4304 4304)\n(symbol-value 4352 4352)\n(symbol-value 4416 4416)\n(symbol-value 4480 4480)\n(symbol-value 4668 4668)\n(symbol-value 4256 4256)\n(symbol-value 4496 4496)\n(symbol-value 4096 4096)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"x86_64-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x00\x10"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xe0\x2d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\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\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\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\x53\xe5\x74\x64\x04\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\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\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xe0\x2d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\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\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\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\x53\xe5\x74\x64\x04\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2c\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\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x78\x38\x36\x2d\x36\x34\x2e\x73\x6f\x2e\x32\x00\x00\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x47\x4e\x55\x00\x02\x80\x00\xc0\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x48\x00\xe0\xd5\xf2\x7e\x44\x0d\x91\xf5\xa6\xab\xd0\x4c\x33\x43\x84\xdb\xc8\xbc\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xd1\x65\xce\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e"), +Section(".interp", 0x318, "\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x78\x38\x36\x2d\x36\x34\x2e\x73\x6f\x2e\x32\x00"), +Section(".note.gnu.property", 0x338, "\x04\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x47\x4e\x55\x00\x02\x80\x00\xc0\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"), +Section(".note.gnu.build-id", 0x358, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x48\x00\xe0\xd5\xf2\x7e\x44\x0d\x91\xf5\xa6\xab\xd0\x4c\x33\x43\x84\xdb\xc8\xbc"), +Section(".note.ABI-tag", 0x37C, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x3A0, "\x02\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xd1\x65\xce\x6d"), +Section(".dynsym", 0x3C8, "\x00\x00\x00\x00\x00\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\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\x01\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\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\x41\x00\x00\x00\x12\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\x9f\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"), +Section(".dynstr", 0x4E8, "\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\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\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", 0x5A2, "\x00\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x04\x00\x02\x00\x01\x00\x02\x00"), +Section(".gnu.version_r", 0x5C0, "\x01\x00\x03\x00\x48\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x94\x91\x96\x06\x00\x00\x04\x00\x52\x00\x00\x00\x10\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x5d\x00\x00\x00\x10\x00\x00\x00\x75\x1a\x69\x09\x00\x00\x02\x00\x68\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x600, "\xd0\x3d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x80\x11\x00\x00\x00\x00\x00\x00\xd8\x3d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x40\x11\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\xc0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x6C0, "\x00\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".plt", 0x1020, "\xff\x35\xca\x2f\x00\x00\xff\x25\xcc\x2f\x00\x00\x0f\x1f\x40\x00\xff\x25\xca\x2f\x00\x00\x68\x00\x00\x00\x00\xe9\xe0\xff\xff\xff\xff\x25\xc2\x2f\x00\x00\x68\x01\x00\x00\x00\xe9\xd0\xff\xff\xff\xff\x25\xba\x2f\x00\x00\x68\x02\x00\x00\x00\xe9\xc0\xff\xff\xff\xff\x25\xb2\x2f\x00\x00\x68\x03\x00\x00\x00\xe9\xb0\xff\xff\xff\xff\x25\xaa\x2f\x00\x00\x68\x04\x00\x00\x00\xe9\xa0\xff\xff\xff\xff\x25\xa2\x2f\x00\x00\x68\x05\x00\x00\x00\xe9\x90\xff\xff\xff"), +Section(".plt.got", 0x1090, "\xff\x25\x4a\x2f\x00\x00\x66\x90"), +Section(".text", 0x10A0, "\x31\xed\x49\x89\xd1\x5e\x48\x89\xe2\x48\x83\xe4\xf0\x50\x54\x45\x31\xc0\x31\xc9\x48\x8d\x3d\xd5\x00\x00\x00\xff\x15\xff\x2e\x00\x00\xf4\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x0f\x1f\x40\x00\x48\x8d\x3d\x79\x2f\x00\x00\x48\x8d\x05\x72\x2f\x00\x00\x48\x39\xf8\x74\x15\x48\x8b\x05\xde\x2e\x00\x00\x48\x85\xc0\x74\x09\xff\xe0\x0f\x1f\x80\x00\x00\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\x48\x8d\x3d\x49\x2f\x00\x00\x48\x8d\x35\x42\x2f\x00\x00\x48\x29\xfe\x48\x89\xf0\x48\xc1\xee\x3f\x48\xc1\xf8\x03\x48\x01\xc6\x48\xd1\xfe\x74\x14\x48\x8b\x05\xad\x2e\x00\x00\x48\x85\xc0\x74\x08\xff\xe0\x66\x0f\x1f\x44\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\xf3\x0f\x1e\xfa\x80\x3d\x05\x2f\x00\x00\x00\x75\x2b\x55\x48\x83\x3d\x8a\x2e\x00\x00\x00\x48\x89\xe5\x74\x0c\x48\x8b\x3d\xd6\x2e\x00\x00\xe8\x29\xff\xff\xff\xe8\x64\xff\xff\xff\xc6\x05\xdd\x2e\x00\x00\x01\x5d\xc3\x0f\x1f\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\xf3\x0f\x1e\xfa\xe9\x77\xff\xff\xff\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x48\x83\xec\x20\x48\xc7\x45\xf8\x00\x00\x00\x00\x48\xc7\x45\xf0\x00\x00\x00\x00\xbf\x0b\x00\x00\x00\xe8\xce\xfe\xff\xff\x48\x89\x05\x9f\x2e\x00\x00\x48\x8b\x05\x98\x2e\x00\x00\x48\x89\x45\xe0\x48\x8d\x3d\x76\x2e\x00\x00\xe8\x80\xfe\xff\xff\x48\x8b\x7d\xe0\x48\x89\xc2\x48\x8d\x35\x63\x2e\x00\x00\xe8\x8d\xfe\xff\xff\x48\x8b\x3d\x6e\x2e\x00\x00\xe8\x51\xfe\xff\xff\x48\x8b\x05\x62\x2e\x00\x00\x48\x83\xc0\x04\x48\x89\x45\xf8\x48\x8b\x05\x53\x2e\x00\x00\x48\x89\x45\xe8\x48\x8b\x3d\x48\x2e\x00\x00\xe8\x3b\xfe\xff\xff\x48\x8b\x7d\xe8\x48\x89\xc2\xbe\x01\x00\x00\x00\xe8\x3a\xfe\xff\xff\x48\x8b\x3d\x2b\x2e\x00\x00\xe8\xfe\xfd\xff\xff\x31\xc0\x48\x83\xc4\x20\x5d\xc3"), +Section(".init", 0x1000, "\x48\x83\xec\x08\x48\x8b\x05\xc5\x2f\x00\x00\x48\x85\xc0\x74\x02\xff\xd0\x48\x83\xc4\x08\xc3"), +Section(".fini", 0x123C, "\x48\x83\xec\x08\x48\x83\xc4\x08\xc3"), +Section(".eh_frame_hdr", 0x2004, "\x01\x1b\x03\x3b\x28\x00\x00\x00\x04\x00\x00\x00\x1c\xf0\xff\xff\x74\x00\x00\x00\x8c\xf0\xff\xff\x9c\x00\x00\x00\x9c\xf0\xff\xff\x44\x00\x00\x00\x8c\xf1\xff\xff\xb4\x00\x00\x00"), +Section(".eh_frame", 0x2030, "\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x1b\x0c\x07\x08\x90\x01\x07\x10\x14\x00\x00\x00\x1c\x00\x00\x00\x50\xf0\xff\xff\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x1b\x0c\x07\x08\x90\x01\x00\x00\x24\x00\x00\x00\x1c\x00\x00\x00\xa0\xef\xff\xff\x70\x00\x00\x00\x00\x0e\x10\x46\x0e\x18\x4a\x0f\x0b\x77\x08\x80\x00\x3f\x1a\x3b\x2a\x33\x24\x22\x00\x00\x00\x00\x14\x00\x00\x00\x44\x00\x00\x00\xe8\xef\xff\xff\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x5c\x00\x00\x00\xd0\xf0\xff\xff\xaa\x00\x00\x00\x00\x41\x0e\x10\x86\x02\x43\x0d\x06\x02\xa5\x0c\x07\x08\x00\x00\x00\x00\x00\x00"), +Section(".rodata", 0x2000, "\x01\x00\x02\x00"), +Section(".fini_array", 0x3DD8, "\x40\x11\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x3DE0, "\x01\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x3c\x12\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\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\xd8\x3d\x00\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\xa0\x03\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xc8\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\x3f\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x90\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\xc0\x06\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x06\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\xc0\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\xa2\x05\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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", 0x3DD0, "\x80\x11\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x3FC0, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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.plt", 0x3FE8, "\xe0\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x10\x00\x00\x00\x00\x00\x00\x46\x10\x00\x00\x00\x00\x00\x00\x56\x10\x00\x00\x00\x00\x00\x00\x66\x10\x00\x00\x00\x00\x00\x00\x76\x10\x00\x00\x00\x00\x00\x00\x86\x10\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x4030, "\x00\x00\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00")]), +Memmap([Annotation(Region(0x0,0x74F), Attr("segment","02 0 1872")), +Annotation(Region(0x0,0x119), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x264), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x41F), Attr("section","\".symtab\"")), Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), -Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), -Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), -Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), -Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), -Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), -Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), -Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), -Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), -Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), -Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), -Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x97B), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x97B), Attr("symbol-info","main 0x8D4 168")), -Annotation(Region(0x97C,0x98F), Attr("section","\".fini\"")), -Annotation(Region(0x990,0x993), Attr("section","\".rodata\"")), -Annotation(Region(0x994,0x9CF), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x9D0,0xA97), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), -Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), -Annotation(Region(0x7C0,0x97B), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x97B), Attr("code-region","()")), -Annotation(Region(0x97C,0x98F), Attr("code-region","()"))]), -Program(Tid(2_030, "%000007ee"), Attrs([]), - Subs([Sub(Tid(2_002, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_031, "%000007ef"), +Annotation(Region(0x318,0x333), Attr("section","\".interp\"")), +Annotation(Region(0x338,0x357), Attr("section","\".note.gnu.property\"")), +Annotation(Region(0x358,0x37B), Attr("section","\".note.gnu.build-id\"")), +Annotation(Region(0x37C,0x39B), Attr("section","\".note.ABI-tag\"")), +Annotation(Region(0x3A0,0x3C3), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x3C8,0x4E7), Attr("section","\".dynsym\"")), +Annotation(Region(0x4E8,0x5A0), Attr("section","\".dynstr\"")), +Annotation(Region(0x5A2,0x5B9), Attr("section","\".gnu.version\"")), +Annotation(Region(0x5C0,0x5FF), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x600,0x6BF), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x6C0,0x74F), Attr("section","\".rela.plt\"")), +Annotation(Region(0x1000,0x1244), Attr("segment","03 0x1000 581")), +Annotation(Region(0x1020,0x108F), Attr("section","\".plt\"")), +Annotation(Region(0x1090,0x1097), Attr("section","\".plt.got\"")), +Annotation(Region(0x1090,0x1097), Attr("code-region","()")), +Annotation(Region(0x10A0,0x10C1), Attr("symbol","\"_start\"")), +Annotation(Region(0x10A0,0x10C1), Attr("symbol-info","_start 0x10A0 34")), +Annotation(Region(0x10A0,0x1239), Attr("section","\".text\"")), +Annotation(Region(0x1190,0x1239), Attr("symbol","\"main\"")), +Annotation(Region(0x1000,0x1016), Attr("section","\".init\"")), +Annotation(Region(0x1000,0x1016), Attr("code-region","()")), +Annotation(Region(0x1020,0x108F), Attr("code-region","()")), +Annotation(Region(0x10A0,0x1239), Attr("code-region","()")), +Annotation(Region(0x1190,0x1239), Attr("symbol-info","main 0x1190 170")), +Annotation(Region(0x123C,0x1244), Attr("section","\".fini\"")), +Annotation(Region(0x123C,0x1244), Attr("code-region","()")), +Annotation(Region(0x2000,0x20DB), Attr("segment","04 0x2000 220")), +Annotation(Region(0x2004,0x202F), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x2030,0x20DB), Attr("section","\".eh_frame\"")), +Annotation(Region(0x2000,0x2003), Attr("section","\".rodata\"")), +Annotation(Region(0x3DD0,0x404B), Attr("segment","05 0x3DD0 656")), +Annotation(Region(0x3DD8,0x3DDF), Attr("section","\".fini_array\"")), +Annotation(Region(0x3DE0,0x3FBF), Attr("section","\".dynamic\"")), +Annotation(Region(0x3DD0,0x3DD7), Attr("section","\".init_array\"")), +Annotation(Region(0x3FC0,0x3FE7), Attr("section","\".got\"")), +Annotation(Region(0x3FE8,0x402F), Attr("section","\".got.plt\"")), +Annotation(Region(0x4030,0x404B), Attr("section","\".data\""))]), +Program(Tid(3_025, "%00000bd1"), Attrs([]), + Subs([Sub(Tid(2_865, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1090"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(3_026, "%00000bd2"), 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_212, "@__cxa_finalize"), - Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x740"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), 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_618, "%00000652"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_003, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_032, "%000007f0"), +LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(2_154, "@__cxa_finalize"), Attrs([Attr("address","0x1090")]), + Phis([]), Defs([]), Jmps([Call(Tid(2_862, "%00000b2e"), + Attrs([Attr("address","0x1090"), Attr("insn","jmpq *0x2f4a(%rip)")]), + Int(1,1), (Direct(Tid(2_860, "@__cxa_finalize:external")),))]))])), +Sub(Tid(2_866, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1140")]), + "__do_global_dtors_aux", Args([Arg(Tid(3_027, "%00000bd3"), 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(759, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(763, "%000002fb"), - Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(769, "%00000301"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(775, "%00000307"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(785, "%00000311"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(793, "%00000319"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), +LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(1_293, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x1140")]), Phis([]), +Defs([Def(Tid(1_317, "%00000525"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("#12582884",Imm(8)), +Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8)), +Def(Tid(1_321, "%00000529"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("CF",Imm(1)), +LT(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),Int(0,8))), +Def(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("OF",Imm(1)), +HIGH(1,AND(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),XOR(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),Var("#12582884",Imm(8)))))), +Def(Tid(1_332, "%00000534"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("AF",Imm(1)), +EQ(Int(16,8),AND(Int(16,8),XOR(Var("#12582884",Imm(8)),Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8))))), +Def(Tid(1_337, "%00000539"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(8)),XOR(RSHIFT(Var("#12582884",Imm(8)),Int(4,8)),Var("#12582884",Imm(8))),Let(Var("$1",Imm(8)),XOR(RSHIFT(Var("$0",Imm(8)),Int(2,8)),Var("$0",Imm(8))),XOR(RSHIFT(Var("$1",Imm(8)),Int(1,8)),Var("$1",Imm(8)))))))), +Def(Tid(1_341, "%0000053d"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582884",Imm(8)))), Def(Tid(1_345, "%00000541"), + Attrs([Attr("address","0x1144"), Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), + Var("ZF",Imm(1)), EQ(Int(0,8),Var("#12582884",Imm(8))))]), +Jmps([Goto(Tid(1_352, "%00000548"), Attrs([Attr("address","0x114B"), +Attr("insn","jne 0x2b")]), NOT(Var("ZF",Imm(1))), +Direct(Tid(1_349, "%00000545"))), Goto(Tid(3_017, "%00000bc9"), Attrs([]), + Int(1,1), Direct(Tid(1_981, "%000007bd")))])), Blk(Tid(1_349, "%00000545"), + Attrs([Attr("address","0x1178")]), Phis([]), +Defs([Def(Tid(1_366, "%00000556"), Attrs([Attr("address","0x1178"), +Attr("insn","retq")]), Var("#12582882",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(1_370, "%0000055a"), Attrs([Attr("address","0x1178"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_373, "%0000055d"), + Attrs([Attr("address","0x1178"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582882",Imm(64))),))])), Blk(Tid(1_981, "%000007bd"), + Attrs([Attr("address","0x114D")]), Phis([]), +Defs([Def(Tid(1_993, "%000007c9"), Attrs([Attr("address","0x114D"), +Attr("insn","pushq %rbp")]), Var("#12582870",Imm(64)), Var("RBP",Imm(64))), +Def(Tid(1_997, "%000007cd"), Attrs([Attr("address","0x114D"), +Attr("insn","pushq %rbp")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_003, "%000007d3"), + Attrs([Attr("address","0x114D"), Attr("insn","pushq %rbp")]), 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(798, "%0000031e"), Attrs([Attr("address","0x88C"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(805, "%00000325"), Attrs([Attr("address","0x890"), -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(811, "%0000032b"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(809, "%00000329"))), -Goto(Tid(2_004, "%000007d4"), Attrs([]), Int(1,1), -Direct(Tid(1_157, "%00000485")))])), Blk(Tid(1_157, "%00000485"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x898"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x89C"), -Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_173, "%00000495"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_171, "%00000493"))), Goto(Tid(2_005, "%000007d5"), Attrs([]), - Int(1,1), Direct(Tid(1_196, "%000004ac")))])), Blk(Tid(1_196, "%000004ac"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x8A8"), -Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_214, "%000004be"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_002, "@__cxa_finalize")),Direct(Tid(1_171, "%00000493"))))])), -Blk(Tid(1_171, "%00000493"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_016, "@deregister_tm_clones")),Direct(Tid(1_183, "%0000049f"))))])), -Blk(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8B4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x8B8"), -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_006, "%000007d6"), Attrs([]), Int(1,1), -Direct(Tid(809, "%00000329")))])), Blk(Tid(809, "%00000329"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(819, "%00000333"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(826, "%0000033a"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(831, "%0000033f"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(835, "%00000343"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(840, "%00000348"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_007, "@__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_033, "%000007f1"), - 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_034, "%000007f2"), 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_035, "%000007f3"), 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_036, "%000007f4"), 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_037, "%000007f5"), 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(592, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_578, "%0000062a"), Attrs([Attr("address","0x730"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_585, "%00000631"), 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_591, "%00000637"), 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_596, "%0000063c"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_008, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x97C")]), - "_fini", Args([Arg(Tid(2_038, "%000007f6"), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582870",Imm(64)),LittleEndian(),64)), +Def(Tid(2_027, "%000007eb"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("#12582869",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64)), +Def(Tid(2_031, "%000007ef"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("CF",Imm(1)), +LT(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),Int(0,64))), +Def(Tid(2_037, "%000007f5"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("OF",Imm(1)), +HIGH(1,AND(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),XOR(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),Var("#12582869",Imm(64)))))), +Def(Tid(2_042, "%000007fa"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(Var("#12582869",Imm(64)),Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64))))), +Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582869",Imm(64)),Int(4,64)),Var("#12582869",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_051, "%00000803"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582869",Imm(64)))), Def(Tid(2_055, "%00000807"), + Attrs([Attr("address","0x114E"), Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582869",Imm(64)))), +Def(Tid(2_063, "%0000080f"), Attrs([Attr("address","0x1156"), +Attr("insn","movq %rsp, %rbp")]), Var("RBP",Imm(64)), Var("RSP",Imm(64)))]), +Jmps([Goto(Tid(2_070, "%00000816"), Attrs([Attr("address","0x1159"), +Attr("insn","je 0xc")]), Var("ZF",Imm(1)), Direct(Tid(2_067, "%00000813"))), +Goto(Tid(3_018, "%00000bca"), Attrs([]), Int(1,1), +Direct(Tid(2_140, "%0000085c")))])), Blk(Tid(2_140, "%0000085c"), + Attrs([Attr("address","0x115B")]), Phis([]), +Defs([Def(Tid(2_146, "%00000862"), Attrs([Attr("address","0x115B"), +Attr("insn","movq 0x2ed6(%rip), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16440,64),LittleEndian(),64)), +Def(Tid(2_158, "%0000086e"), Attrs([Attr("address","0x1162"), +Attr("insn","callq -0xd7")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_163, "%00000873"), + Attrs([Attr("address","0x1162"), Attr("insn","callq -0xd7")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4455,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_165, "%00000875"), Attrs([Attr("address","0x1162"), +Attr("insn","callq -0xd7")]), Int(1,1), +(Direct(Tid(2_865, "@__cxa_finalize")),Direct(Tid(2_067, "%00000813"))))])), +Blk(Tid(2_067, "%00000813"), Attrs([Attr("address","0x1167")]), Phis([]), +Defs([Def(Tid(2_082, "%00000822"), Attrs([Attr("address","0x1167"), +Attr("insn","callq -0x9c")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_087, "%00000827"), + Attrs([Attr("address","0x1167"), Attr("insn","callq -0x9c")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4460,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_089, "%00000829"), Attrs([Attr("address","0x1167"), +Attr("insn","callq -0x9c")]), Int(1,1), +(Direct(Tid(2_874, "@deregister_tm_clones")),Direct(Tid(2_091, "%0000082b"))))])), +Blk(Tid(2_091, "%0000082b"), Attrs([Attr("address","0x116C")]), Phis([]), +Defs([Def(Tid(2_097, "%00000831"), Attrs([Attr("address","0x116C"), +Attr("insn","movb $0x1, 0x2edd(%rip)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Int(16464,64),Int(1,8),LittleEndian(),8)), +Def(Tid(2_109, "%0000083d"), Attrs([Attr("address","0x1173"), +Attr("insn","popq %rbp")]), Var("RBP",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(2_113, "%00000841"), Attrs([Attr("address","0x1173"), +Attr("insn","popq %rbp")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_126, "%0000084e"), + Attrs([Attr("address","0x1174"), Attr("insn","retq")]), + Var("#12582867",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(2_130, "%00000852"), Attrs([Attr("address","0x1174"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(2_133, "%00000855"), + Attrs([Attr("address","0x1174"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582867",Imm(64))),))]))])), Sub(Tid(2_869, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x123C")]), + "_fini", Args([Arg(Tid(3_028, "%00000bd4"), 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","0x97C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0x980"), -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","0x980"), -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","0x980"), -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","0x980"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x984"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x988"), -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","0x988"), -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","0x988"), -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","0x98C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_009, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_039, "%000007f7"), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(21, "@_fini"), + Attrs([Attr("address","0x123C")]), Phis([]), Defs([Def(Tid(56, "%00000038"), + Attrs([Attr("address","0x123C"), Attr("insn","subq $0x8, %rsp")]), + Var("#12582911",Imm(64)), Var("RSP",Imm(64))), Def(Tid(60, "%0000003c"), + Attrs([Attr("address","0x123C"), Attr("insn","subq $0x8, %rsp")]), + Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(8,64))), +Def(Tid(64, "%00000040"), Attrs([Attr("address","0x123C"), +Attr("insn","subq $0x8, %rsp")]), Var("CF",Imm(1)), +LT(Var("#12582911",Imm(64)),Int(8,64))), Def(Tid(70, "%00000046"), + Attrs([Attr("address","0x123C"), Attr("insn","subq $0x8, %rsp")]), + Var("OF",Imm(1)), +HIGH(1,AND(XOR(Var("#12582911",Imm(64)),Int(8,64)),XOR(Var("#12582911",Imm(64)),Var("RSP",Imm(64)))))), +Def(Tid(75, "%0000004b"), Attrs([Attr("address","0x123C"), +Attr("insn","subq $0x8, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582911",Imm(64))),Int(8,64))))), +Def(Tid(80, "%00000050"), Attrs([Attr("address","0x123C"), +Attr("insn","subq $0x8, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(84, "%00000054"), Attrs([Attr("address","0x123C"), +Attr("insn","subq $0x8, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(88, "%00000058"), + Attrs([Attr("address","0x123C"), Attr("insn","subq $0x8, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(117, "%00000075"), Attrs([Attr("address","0x1240"), +Attr("insn","addq $0x8, %rsp")]), Var("#12582908",Imm(64)), +Var("RSP",Imm(64))), Def(Tid(121, "%00000079"), + Attrs([Attr("address","0x1240"), Attr("insn","addq $0x8, %rsp")]), + Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(8,64))), +Def(Tid(126, "%0000007e"), Attrs([Attr("address","0x1240"), +Attr("insn","addq $0x8, %rsp")]), Var("CF",Imm(1)), +LT(Var("RSP",Imm(64)),Var("#12582908",Imm(64)))), Def(Tid(134, "%00000086"), + Attrs([Attr("address","0x1240"), Attr("insn","addq $0x8, %rsp")]), + Var("OF",Imm(1)), +AND(EQ(HIGH(1,Var("#12582908",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582908",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582908",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), +Def(Tid(139, "%0000008b"), Attrs([Attr("address","0x1240"), +Attr("insn","addq $0x8, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582908",Imm(64))),Int(8,64))))), +Def(Tid(144, "%00000090"), Attrs([Attr("address","0x1240"), +Attr("insn","addq $0x8, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(148, "%00000094"), Attrs([Attr("address","0x1240"), +Attr("insn","addq $0x8, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(152, "%00000098"), + Attrs([Attr("address","0x1240"), Attr("insn","addq $0x8, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(165, "%000000a5"), Attrs([Attr("address","0x1244"), +Attr("insn","retq")]), Var("#12582905",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(169, "%000000a9"), Attrs([Attr("address","0x1244"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(172, "%000000ac"), + Attrs([Attr("address","0x1244"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582905",Imm(64))),))]))])), Sub(Tid(2_870, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1000")]), + "_init", Args([Arg(Tid(3_029, "%00000bd5"), 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_778, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_784, "%000006f8"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_790, "%000006fe"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_796, "%00000704"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_800, "%00000708"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#7",Imm(64))), Def(Tid(1_806, "%0000070e"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_811, "%00000713"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_813, "%00000715"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_014, "@call_weak_fn")),Direct(Tid(1_815, "%00000717"))))])), -Blk(Tid(1_815, "%00000717"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_820, "%0000071c"), 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_825, "%00000721"), 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_829, "%00000725"), 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_834, "%0000072a"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_010, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_040, "%000007f8"), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(2_625, "@_init"), + Attrs([Attr("address","0x1000")]), Phis([]), +Defs([Def(Tid(2_649, "%00000a59"), Attrs([Attr("address","0x1000"), +Attr("insn","subq $0x8, %rsp")]), Var("#12582855",Imm(64)), +Var("RSP",Imm(64))), Def(Tid(2_653, "%00000a5d"), + Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), + Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(8,64))), +Def(Tid(2_657, "%00000a61"), Attrs([Attr("address","0x1000"), +Attr("insn","subq $0x8, %rsp")]), Var("CF",Imm(1)), +LT(Var("#12582855",Imm(64)),Int(8,64))), Def(Tid(2_663, "%00000a67"), + Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), + Var("OF",Imm(1)), +HIGH(1,AND(XOR(Var("#12582855",Imm(64)),Int(8,64)),XOR(Var("#12582855",Imm(64)),Var("RSP",Imm(64)))))), +Def(Tid(2_668, "%00000a6c"), Attrs([Attr("address","0x1000"), +Attr("insn","subq $0x8, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582855",Imm(64))),Int(8,64))))), +Def(Tid(2_673, "%00000a71"), Attrs([Attr("address","0x1000"), +Attr("insn","subq $0x8, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_677, "%00000a75"), Attrs([Attr("address","0x1000"), +Attr("insn","subq $0x8, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(2_681, "%00000a79"), + Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(2_689, "%00000a81"), Attrs([Attr("address","0x1004"), +Attr("insn","movq 0x2fc5(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16336,64),LittleEndian(),64)), +Def(Tid(2_707, "%00000a93"), Attrs([Attr("address","0x100B"), +Attr("insn","testq %rax, %rax")]), Var("#12582852",Imm(64)), +Var("RAX",Imm(64))), Def(Tid(2_710, "%00000a96"), + Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), + Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_713, "%00000a99"), + Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), + Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_716, "%00000a9c"), + Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), + Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_721, "%00000aa1"), + Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), + Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582852",Imm(64)),Int(4,64)),Var("#12582852",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_725, "%00000aa5"), Attrs([Attr("address","0x100B"), +Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582852",Imm(64)))), Def(Tid(2_729, "%00000aa9"), + Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582852",Imm(64))))]), +Jmps([Goto(Tid(2_736, "%00000ab0"), Attrs([Attr("address","0x100E"), +Attr("insn","je 0x2")]), Var("ZF",Imm(1)), Direct(Tid(2_733, "%00000aad"))), +Goto(Tid(3_019, "%00000bcb"), Attrs([]), Int(1,1), +Direct(Tid(2_823, "%00000b07")))])), Blk(Tid(2_823, "%00000b07"), + Attrs([Attr("address","0x1010")]), Phis([]), +Defs([Def(Tid(2_835, "%00000b13"), Attrs([Attr("address","0x1010"), +Attr("insn","callq *%rax")]), Var("#12582846",Imm(64)), Var("RAX",Imm(64))), +Def(Tid(2_839, "%00000b17"), Attrs([Attr("address","0x1010"), +Attr("insn","callq *%rax")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_844, "%00000b1c"), + Attrs([Attr("address","0x1010"), Attr("insn","callq *%rax")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4114,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_847, "%00000b1f"), Attrs([Attr("address","0x1010"), +Attr("insn","callq *%rax")]), Int(1,1), +(Indirect(Var("#12582846",Imm(64))),Direct(Tid(2_733, "%00000aad"))))])), +Blk(Tid(2_733, "%00000aad"), Attrs([Attr("address","0x1012")]), Phis([]), +Defs([Def(Tid(2_766, "%00000ace"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("#12582850",Imm(64)), +Var("RSP",Imm(64))), Def(Tid(2_770, "%00000ad2"), + Attrs([Attr("address","0x1012"), Attr("insn","addq $0x8, %rsp")]), + Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(8,64))), +Def(Tid(2_775, "%00000ad7"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("CF",Imm(1)), +LT(Var("RSP",Imm(64)),Var("#12582850",Imm(64)))), +Def(Tid(2_783, "%00000adf"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("OF",Imm(1)), +AND(EQ(HIGH(1,Var("#12582850",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582850",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582850",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), +Def(Tid(2_788, "%00000ae4"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582850",Imm(64))),Int(8,64))))), +Def(Tid(2_793, "%00000ae9"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_797, "%00000aed"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(2_801, "%00000af1"), + Attrs([Attr("address","0x1012"), Attr("insn","addq $0x8, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(2_814, "%00000afe"), Attrs([Attr("address","0x1016"), +Attr("insn","retq")]), Var("#12582847",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(2_818, "%00000b02"), Attrs([Attr("address","0x1016"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(2_821, "%00000b05"), + Attrs([Attr("address","0x1016"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582847",Imm(64))),))]))])), Sub(Tid(2_872, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x10A0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(3_030, "%00000bd6"), 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(529, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(534, "%00000216"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(539, "%0000021b"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(545, "%00000221"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(552, "%00000228"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(558, "%0000022e"), Attrs([Attr("address","0x7D4"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(564, "%00000234"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(569, "%00000239"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(576, "%00000240"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(581, "%00000245"), Attrs([Attr("address","0x7E4"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(586, "%0000024a"), Attrs([Attr("address","0x7E8"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(591, "%0000024f"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(594, "%00000252"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_007, "@__libc_start_main")),Direct(Tid(596, "%00000254"))))])), -Blk(Tid(596, "%00000254"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(599, "%00000257"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_013, "@abort")),Direct(Tid(2_011, "%000007db"))))])), -Blk(Tid(2_011, "%000007db"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_012, "%000007dc"), Attrs([]), Int(1,1), -(Direct(Tid(2_014, "@call_weak_fn")),))]))])), Sub(Tid(2_013, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(600, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_014, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_041, "%000007f9"), - 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(604, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(607, "%0000025f"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(614, "%00000266"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(620, "%0000026c"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(618, "%0000026a"))), Goto(Tid(2_015, "%000007df"), Attrs([]), - Int(1,1), Direct(Tid(1_276, "%000004fc")))])), Blk(Tid(618, "%0000026a"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x804"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_277, "@__gmon_start__")))])), Blk(Tid(1_277, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_016, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_042, "%000007fa"), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(586, "@_start"), + Attrs([Attr("address","0x10A0")]), Phis([]), +Defs([Def(Tid(596, "%00000254"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("RBP",Imm(64)), Int(0,64)), +Def(Tid(599, "%00000257"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(602, "%0000025a"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("ZF",Imm(1)), Int(1,1)), +Def(Tid(605, "%0000025d"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("PF",Imm(1)), Int(1,1)), +Def(Tid(608, "%00000260"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("OF",Imm(1)), Int(0,1)), +Def(Tid(611, "%00000263"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("CF",Imm(1)), Int(0,1)), +Def(Tid(614, "%00000266"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("SF",Imm(1)), Int(0,1)), +Def(Tid(622, "%0000026e"), Attrs([Attr("address","0x10A2"), +Attr("insn","movq %rdx, %r9")]), Var("R9",Imm(64)), Var("RDX",Imm(64))), +Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x10A5"), +Attr("insn","popq %rsi")]), Var("RSI",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(638, "%0000027e"), Attrs([Attr("address","0x10A5"), +Attr("insn","popq %rsi")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(646, "%00000286"), + Attrs([Attr("address","0x10A6"), Attr("insn","movq %rsp, %rdx")]), + Var("RDX",Imm(64)), Var("RSP",Imm(64))), Def(Tid(664, "%00000298"), + Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), + Var("RSP",Imm(64)), AND(Var("RSP",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(667, "%0000029b"), Attrs([Attr("address","0x10A9"), +Attr("insn","andq $-0x10, %rsp")]), Var("OF",Imm(1)), Int(0,1)), +Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x10A9"), +Attr("insn","andq $-0x10, %rsp")]), Var("CF",Imm(1)), Int(0,1)), +Def(Tid(673, "%000002a1"), Attrs([Attr("address","0x10A9"), +Attr("insn","andq $-0x10, %rsp")]), Var("AF",Imm(1)), +Unknown("bits",Imm(1))), Def(Tid(678, "%000002a6"), + Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), + Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(682, "%000002aa"), Attrs([Attr("address","0x10A9"), +Attr("insn","andq $-0x10, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(686, "%000002ae"), + Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x10AD"), +Attr("insn","pushq %rax")]), Var("#12582903",Imm(64)), Var("RAX",Imm(64))), +Def(Tid(704, "%000002c0"), Attrs([Attr("address","0x10AD"), +Attr("insn","pushq %rax")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(710, "%000002c6"), + Attrs([Attr("address","0x10AD"), Attr("insn","pushq %rax")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582903",Imm(64)),LittleEndian(),64)), +Def(Tid(724, "%000002d4"), Attrs([Attr("address","0x10AE"), +Attr("insn","pushq %rsp")]), Var("#12582902",Imm(64)), Var("RSP",Imm(64))), +Def(Tid(728, "%000002d8"), Attrs([Attr("address","0x10AE"), +Attr("insn","pushq %rsp")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(734, "%000002de"), + Attrs([Attr("address","0x10AE"), Attr("insn","pushq %rsp")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582902",Imm(64)),LittleEndian(),64)), +Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("R8",Imm(64)), Int(0,64)), +Def(Tid(749, "%000002ed"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(752, "%000002f0"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("ZF",Imm(1)), Int(1,1)), +Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("PF",Imm(1)), Int(1,1)), +Def(Tid(758, "%000002f6"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("OF",Imm(1)), Int(0,1)), +Def(Tid(761, "%000002f9"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("CF",Imm(1)), Int(0,1)), +Def(Tid(764, "%000002fc"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("SF",Imm(1)), Int(0,1)), +Def(Tid(776, "%00000308"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("RCX",Imm(64)), Int(0,64)), +Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(782, "%0000030e"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("ZF",Imm(1)), Int(1,1)), +Def(Tid(785, "%00000311"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("PF",Imm(1)), Int(1,1)), +Def(Tid(788, "%00000314"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("OF",Imm(1)), Int(0,1)), +Def(Tid(791, "%00000317"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("CF",Imm(1)), Int(0,1)), +Def(Tid(794, "%0000031a"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("SF",Imm(1)), Int(0,1)), +Def(Tid(800, "%00000320"), Attrs([Attr("address","0x10B4"), +Attr("insn","leaq 0xd5(%rip), %rdi")]), Var("RDI",Imm(64)), Int(4496,64)), +Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x10BB"), +Attr("insn","callq *0x2eff(%rip)")]), Var("#12582901",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16320,64),LittleEndian(),64)), +Def(Tid(818, "%00000332"), Attrs([Attr("address","0x10BB"), +Attr("insn","callq *0x2eff(%rip)")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(823, "%00000337"), + Attrs([Attr("address","0x10BB"), Attr("insn","callq *0x2eff(%rip)")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4289,64),LittleEndian(),64))]), +Jmps([Call(Tid(826, "%0000033a"), Attrs([Attr("address","0x10BB"), +Attr("insn","callq *0x2eff(%rip)")]), Int(1,1), +(Direct(Tid(824, "@__libc_start_main")),Direct(Tid(828, "%0000033c"))))])), +Blk(Tid(828, "%0000033c"), Attrs([Attr("address","0x10C1")]), Phis([]), +Defs([]), Jmps([Call(Tid(831, "%0000033f"), Attrs([Attr("address","0x10C1"), +Attr("insn","hlt")]), Int(1,1), +(Direct(Tid(829, "@intrinsic:hlt")),Direct(Tid(833, "%00000341"))))])), +Blk(Tid(833, "%00000341"), Attrs([Attr("address","0x10C2")]), Phis([]), +Defs([]), Jmps([Call(Tid(3_020, "%00000bcc"), Attrs([]), Int(1,1), +(Direct(Tid(2_874, "@deregister_tm_clones")),))]))])), +Sub(Tid(2_874, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x10D0")]), + "deregister_tm_clones", Args([Arg(Tid(3_031, "%00000bd7"), 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(632, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(635, "%0000027b"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(641, "%00000281"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x70")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(646, "%00000286"), Attrs([Attr("address","0x818"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(652, "%0000028c"), Attrs([Attr("address","0x81C"), -Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(658, "%00000292"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(663, "%00000297"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(669, "%0000029d"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), -NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(675, "%000002a3"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), -NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(679, "%000002a7"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(683, "%000002ab"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(689, "%000002b1"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(687, "%000002af"))), Goto(Tid(2_017, "%000007e1"), Attrs([]), - Int(1,1), Direct(Tid(1_246, "%000004de")))])), Blk(Tid(1_246, "%000004de"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x828"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x82C"), -Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(687, "%000002af"))), Goto(Tid(2_018, "%000007e2"), Attrs([]), - Int(1,1), Direct(Tid(1_265, "%000004f1")))])), Blk(Tid(687, "%000002af"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(695, "%000002b7"), Attrs([Attr("address","0x83C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x834"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x838"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_019, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_043, "%000007fb"), +LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(843, "@deregister_tm_clones"), + Attrs([Attr("address","0x10D0")]), Phis([]), +Defs([Def(Tid(847, "%0000034f"), Attrs([Attr("address","0x10D0"), +Attr("insn","leaq 0x2f79(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16464,64)), +Def(Tid(853, "%00000355"), Attrs([Attr("address","0x10D7"), +Attr("insn","leaq 0x2f72(%rip), %rax")]), Var("RAX",Imm(64)), Int(16464,64)), +Def(Tid(882, "%00000372"), Attrs([Attr("address","0x10DE"), +Attr("insn","cmpq %rdi, %rax")]), Var("#12582900",Imm(64)), +MINUS(Var("RAX",Imm(64)),Var("RDI",Imm(64)))), Def(Tid(887, "%00000377"), + Attrs([Attr("address","0x10DE"), Attr("insn","cmpq %rdi, %rax")]), + Var("CF",Imm(1)), LT(Var("RAX",Imm(64)),Var("RDI",Imm(64)))), +Def(Tid(894, "%0000037e"), Attrs([Attr("address","0x10DE"), +Attr("insn","cmpq %rdi, %rax")]), Var("OF",Imm(1)), +HIGH(1,AND(XOR(Var("RAX",Imm(64)),Var("RDI",Imm(64))),XOR(Var("RAX",Imm(64)),Var("#12582900",Imm(64)))))), +Def(Tid(900, "%00000384"), Attrs([Attr("address","0x10DE"), +Attr("insn","cmpq %rdi, %rax")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("#12582900",Imm(64)),Var("RAX",Imm(64))),Var("RDI",Imm(64)))))), +Def(Tid(905, "%00000389"), Attrs([Attr("address","0x10DE"), +Attr("insn","cmpq %rdi, %rax")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582900",Imm(64)),Int(4,64)),Var("#12582900",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(909, "%0000038d"), Attrs([Attr("address","0x10DE"), +Attr("insn","cmpq %rdi, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582900",Imm(64)))), Def(Tid(913, "%00000391"), + Attrs([Attr("address","0x10DE"), Attr("insn","cmpq %rdi, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582900",Imm(64))))]), +Jmps([Goto(Tid(920, "%00000398"), Attrs([Attr("address","0x10E1"), +Attr("insn","je 0x15")]), Var("ZF",Imm(1)), Direct(Tid(917, "%00000395"))), +Goto(Tid(3_021, "%00000bcd"), Attrs([]), Int(1,1), +Direct(Tid(2_234, "%000008ba")))])), Blk(Tid(2_234, "%000008ba"), + Attrs([Attr("address","0x10E3")]), Phis([]), +Defs([Def(Tid(2_240, "%000008c0"), Attrs([Attr("address","0x10E3"), +Attr("insn","movq 0x2ede(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16328,64),LittleEndian(),64)), +Def(Tid(2_258, "%000008d2"), Attrs([Attr("address","0x10EA"), +Attr("insn","testq %rax, %rax")]), Var("#12582864",Imm(64)), +Var("RAX",Imm(64))), Def(Tid(2_261, "%000008d5"), + Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), + Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_264, "%000008d8"), + Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), + Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_267, "%000008db"), + Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), + Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_272, "%000008e0"), + Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), + Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582864",Imm(64)),Int(4,64)),Var("#12582864",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_276, "%000008e4"), Attrs([Attr("address","0x10EA"), +Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582864",Imm(64)))), Def(Tid(2_280, "%000008e8"), + Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582864",Imm(64))))]), +Jmps([Goto(Tid(2_286, "%000008ee"), Attrs([Attr("address","0x10ED"), +Attr("insn","je 0x9")]), Var("ZF",Imm(1)), Direct(Tid(917, "%00000395"))), +Goto(Tid(3_022, "%00000bce"), Attrs([]), Int(1,1), +Direct(Tid(2_290, "%000008f2")))])), Blk(Tid(917, "%00000395"), + Attrs([Attr("address","0x10F8")]), Phis([]), +Defs([Def(Tid(934, "%000003a6"), Attrs([Attr("address","0x10F8"), +Attr("insn","retq")]), Var("#12582898",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(938, "%000003aa"), Attrs([Attr("address","0x10F8"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(941, "%000003ad"), + Attrs([Attr("address","0x10F8"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582898",Imm(64))),))])), Blk(Tid(2_290, "%000008f2"), + Attrs([Attr("address","0x10EF")]), Phis([]), Defs([]), +Jmps([Call(Tid(2_294, "%000008f6"), Attrs([Attr("address","0x10EF"), +Attr("insn","jmpq *%rax")]), Int(1,1), +(Indirect(Var("RAX",Imm(64))),))]))])), Sub(Tid(2_877, "@frame_dummy"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1180")]), + "frame_dummy", Args([Arg(Tid(3_032, "%00000bd8"), 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(846, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x8D0"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_026, "@register_tm_clones")),))]))])), Sub(Tid(2_020, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_044, "%000007fc"), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(1_380, "@frame_dummy"), + Attrs([Attr("address","0x1180")]), Phis([]), Defs([]), +Jmps([Call(Tid(1_384, "%00000568"), Attrs([Attr("address","0x1184"), +Attr("insn","jmp -0x89")]), Int(1,1), +(Direct(Tid(2_885, "@register_tm_clones")),))]))])), Sub(Tid(2_878, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x1030"), +Attr("stub","()")]), "free", Args([Arg(Tid(3_033, "%00000bd9"), 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_121, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_021, "@main"), +Attr("c.type","void*")]), Var("free_ptr",Imm(64)), Var("RDI",Imm(64)), +Both())]), Blks([Blk(Tid(1_838, "@free"), Attrs([Attr("address","0x1030")]), + Phis([]), Defs([]), Jmps([Call(Tid(2_453, "%00000995"), + Attrs([Attr("address","0x1030"), Attr("insn","jmpq *0x2fca(%rip)")]), + Int(1,1), +(Direct(Tid(2_451, "@free:external")),Direct(Tid(2_455, "%00000997"))))])), +Blk(Tid(2_455, "%00000997"), Attrs([Attr("address","0x1036")]), Phis([]), +Defs([Def(Tid(2_464, "%000009a0"), Attrs([Attr("address","0x1036"), +Attr("insn","pushq $0x0")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_469, "%000009a5"), + Attrs([Attr("address","0x1036"), Attr("insn","pushq $0x0")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(0,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_473, "%000009a9"), Attrs([Attr("address","0x103B"), +Attr("insn","jmp -0x20")]), Int(1,1), +(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), +Sub(Tid(2_879, "@free@plt-0x10"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x1020"), Attr("stub","()")]), "free@plt-0x10", + Args([Arg(Tid(3_034, "%00000bda"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("free@plt-0x10_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(2_415, "@free@plt-0x10"), Attrs([Attr("address","0x1020")]), + Phis([]), Defs([Def(Tid(2_427, "%0000097b"), + Attrs([Attr("address","0x1020"), Attr("insn","pushq 0x2fca(%rip)")]), + Var("#12582862",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16368,64),LittleEndian(),64)), +Def(Tid(2_431, "%0000097f"), Attrs([Attr("address","0x1020"), +Attr("insn","pushq 0x2fca(%rip)")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_437, "%00000985"), + Attrs([Attr("address","0x1020"), Attr("insn","pushq 0x2fca(%rip)")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582862",Imm(64)),LittleEndian(),64))]), +Jmps([Call(Tid(2_443, "%0000098b"), Attrs([Attr("address","0x1026"), +Attr("insn","jmpq *0x2fcc(%rip)")]), Int(1,1), +(Indirect(Load(Var("mem",Mem(64,8)),Int(16376,64),LittleEndian(),64)),))]))])), +Sub(Tid(2_880, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_045, "%000007fd"), +Attr("address","0x1190")]), "main", Args([Arg(Tid(3_035, "%00000bdb"), 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_046, "%000007fe"), +LOW(32,Var("RDI",Imm(64))), In()), Arg(Tid(3_036, "%00000bdc"), 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_047, "%000007ff"), +Var("RSI",Imm(64)), Both()), Arg(Tid(3_037, "%00000bdd"), 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(850, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(854, "%00000356"), - Attrs([Attr("address","0x8D4"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), -Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x8D8"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(866, "%00000362"), - Attrs([Attr("address","0x8D8"), Attr("insn","stp x29, x30, [sp, #0x30]")]), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(1_391, "@main"), + Attrs([Attr("address","0x1190")]), Phis([]), +Defs([Def(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x1190"), +Attr("insn","pushq %rbp")]), Var("#12582881",Imm(64)), Var("RBP",Imm(64))), +Def(Tid(1_407, "%0000057f"), Attrs([Attr("address","0x1190"), +Attr("insn","pushq %rbp")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_413, "%00000585"), + Attrs([Attr("address","0x1190"), Attr("insn","pushq %rbp")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582881",Imm(64)),LittleEndian(),64)), +Def(Tid(1_421, "%0000058d"), Attrs([Attr("address","0x1191"), +Attr("insn","movq %rsp, %rbp")]), Var("RBP",Imm(64)), Var("RSP",Imm(64))), +Def(Tid(1_447, "%000005a7"), Attrs([Attr("address","0x1194"), +Attr("insn","subq $0x20, %rsp")]), Var("#12582880",Imm(64)), +Var("RSP",Imm(64))), Def(Tid(1_451, "%000005ab"), + Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), + Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(32,64))), +Def(Tid(1_455, "%000005af"), Attrs([Attr("address","0x1194"), +Attr("insn","subq $0x20, %rsp")]), Var("CF",Imm(1)), +LT(Var("#12582880",Imm(64)),Int(32,64))), Def(Tid(1_461, "%000005b5"), + Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), + Var("OF",Imm(1)), +HIGH(1,AND(XOR(Var("#12582880",Imm(64)),Int(32,64)),XOR(Var("#12582880",Imm(64)),Var("RSP",Imm(64)))))), +Def(Tid(1_466, "%000005ba"), Attrs([Attr("address","0x1194"), +Attr("insn","subq $0x20, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582880",Imm(64))),Int(32,64))))), +Def(Tid(1_471, "%000005bf"), Attrs([Attr("address","0x1194"), +Attr("insn","subq $0x20, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_475, "%000005c3"), Attrs([Attr("address","0x1194"), +Attr("insn","subq $0x20, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(1_479, "%000005c7"), + Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(1_489, "%000005d1"), Attrs([Attr("address","0x1198"), +Attr("insn","movq $0x0, -0x8(%rbp)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(1_499, "%000005db"), Attrs([Attr("address","0x11A0"), +Attr("insn","movq $0x0, -0x10(%rbp)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(1_505, "%000005e1"), Attrs([Attr("address","0x11A8"), +Attr("insn","movl $0xb, %edi")]), Var("RDI",Imm(64)), Int(11,64)), +Def(Tid(1_517, "%000005ed"), Attrs([Attr("address","0x11AD"), +Attr("insn","callq -0x132")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_522, "%000005f2"), + Attrs([Attr("address","0x11AD"), Attr("insn","callq -0x132")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4530,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_524, "%000005f4"), Attrs([Attr("address","0x11AD"), +Attr("insn","callq -0x132")]), Int(1,1), +(Direct(Tid(2_881, "@malloc")),Direct(Tid(1_526, "%000005f6"))))])), +Blk(Tid(1_526, "%000005f6"), Attrs([Attr("address","0x11B2")]), Phis([]), +Defs([Def(Tid(1_534, "%000005fe"), Attrs([Attr("address","0x11B2"), +Attr("insn","movq %rax, 0x2e9f(%rip)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Int(16472,64),Var("RAX",Imm(64)),LittleEndian(),64)), +Def(Tid(1_542, "%00000606"), Attrs([Attr("address","0x11B9"), +Attr("insn","movq 0x2e98(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_554, "%00000612"), Attrs([Attr("address","0x11C0"), +Attr("insn","movq %rax, -0x20(%rbp)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551584,64)),Var("RAX",Imm(64)),LittleEndian(),64)), +Def(Tid(1_560, "%00000618"), Attrs([Attr("address","0x11C4"), +Attr("insn","leaq 0x2e76(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16449,64)), +Def(Tid(1_572, "%00000624"), Attrs([Attr("address","0x11CB"), +Attr("insn","callq -0x180")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_577, "%00000629"), + Attrs([Attr("address","0x11CB"), Attr("insn","callq -0x180")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4560,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_579, "%0000062b"), Attrs([Attr("address","0x11CB"), +Attr("insn","callq -0x180")]), Int(1,1), +(Direct(Tid(2_888, "@strlen")),Direct(Tid(1_581, "%0000062d"))))])), +Blk(Tid(1_581, "%0000062d"), Attrs([Attr("address","0x11D0")]), Phis([]), +Defs([Def(Tid(1_589, "%00000635"), Attrs([Attr("address","0x11D0"), +Attr("insn","movq -0x20(%rbp), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551584,64)),LittleEndian(),64)), +Def(Tid(1_597, "%0000063d"), Attrs([Attr("address","0x11D4"), +Attr("insn","movq %rax, %rdx")]), Var("RDX",Imm(64)), Var("RAX",Imm(64))), +Def(Tid(1_603, "%00000643"), Attrs([Attr("address","0x11D7"), +Attr("insn","leaq 0x2e63(%rip), %rsi")]), Var("RSI",Imm(64)), Int(16449,64)), +Def(Tid(1_615, "%0000064f"), Attrs([Attr("address","0x11DE"), +Attr("insn","callq -0x173")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_620, "%00000654"), + Attrs([Attr("address","0x11DE"), Attr("insn","callq -0x173")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4579,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_622, "%00000656"), Attrs([Attr("address","0x11DE"), +Attr("insn","callq -0x173")]), Int(1,1), +(Direct(Tid(2_882, "@memcpy")),Direct(Tid(1_624, "%00000658"))))])), +Blk(Tid(1_624, "%00000658"), Attrs([Attr("address","0x11E3")]), Phis([]), +Defs([Def(Tid(1_630, "%0000065e"), Attrs([Attr("address","0x11E3"), +Attr("insn","movq 0x2e6e(%rip), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_642, "%0000066a"), Attrs([Attr("address","0x11EA"), +Attr("insn","callq -0x1af")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_647, "%0000066f"), + Attrs([Attr("address","0x11EA"), Attr("insn","callq -0x1af")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(872, "%00000368"), Attrs([Attr("address","0x8D8"), -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(878, "%0000036e"), Attrs([Attr("address","0x8DC"), -Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(885, "%00000375"), - Attrs([Attr("address","0x8E0"), Attr("insn","stur xzr, [x29, #-0x8]")]), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4591,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_649, "%00000671"), Attrs([Attr("address","0x11EA"), +Attr("insn","callq -0x1af")]), Int(1,1), +(Direct(Tid(2_884, "@puts")),Direct(Tid(1_651, "%00000673"))))])), +Blk(Tid(1_651, "%00000673"), Attrs([Attr("address","0x11EF")]), Phis([]), +Defs([Def(Tid(1_657, "%00000679"), Attrs([Attr("address","0x11EF"), +Attr("insn","movq 0x2e62(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_686, "%00000696"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("#12582877",Imm(64)), +Var("RAX",Imm(64))), Def(Tid(1_690, "%0000069a"), + Attrs([Attr("address","0x11F6"), Attr("insn","addq $0x4, %rax")]), + Var("RAX",Imm(64)), PLUS(Var("RAX",Imm(64)),Int(4,64))), +Def(Tid(1_695, "%0000069f"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("CF",Imm(1)), +LT(Var("RAX",Imm(64)),Var("#12582877",Imm(64)))), +Def(Tid(1_703, "%000006a7"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("OF",Imm(1)), +AND(EQ(HIGH(1,Var("#12582877",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582877",Imm(64))),HIGH(1,Var("RAX",Imm(64)))),NOT(AND(HIGH(1,Var("#12582877",Imm(64))),HIGH(1,Var("RAX",Imm(64)))))))), +Def(Tid(1_708, "%000006ac"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RAX",Imm(64)),Var("#12582877",Imm(64))),Int(4,64))))), +Def(Tid(1_713, "%000006b1"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RAX",Imm(64)),Int(4,64)),Var("RAX",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_717, "%000006b5"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("RAX",Imm(64)))), Def(Tid(1_721, "%000006b9"), + Attrs([Attr("address","0x11F6"), Attr("insn","addq $0x4, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RAX",Imm(64)))), +Def(Tid(1_733, "%000006c5"), Attrs([Attr("address","0x11FA"), +Attr("insn","movq %rax, -0x8(%rbp)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551608,64)),Var("RAX",Imm(64)),LittleEndian(),64)), +Def(Tid(1_741, "%000006cd"), Attrs([Attr("address","0x11FE"), +Attr("insn","movq 0x2e53(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_753, "%000006d9"), Attrs([Attr("address","0x1205"), +Attr("insn","movq %rax, -0x18(%rbp)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551592,64)),Var("RAX",Imm(64)),LittleEndian(),64)), +Def(Tid(1_761, "%000006e1"), Attrs([Attr("address","0x1209"), +Attr("insn","movq 0x2e48(%rip), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_772, "%000006ec"), Attrs([Attr("address","0x1210"), +Attr("insn","callq -0x1c5")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_777, "%000006f1"), + Attrs([Attr("address","0x1210"), Attr("insn","callq -0x1c5")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x8E4"), -Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(897, "%00000381"), Attrs([Attr("address","0x8E8"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(905, "%00000389"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_022, "@malloc")),Direct(Tid(907, "%0000038b"))))])), -Blk(Tid(907, "%0000038b"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8F0"), -Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(918, "%00000396"), Attrs([Attr("address","0x8F4"), -Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x8F8"), -Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(933, "%000003a5"), Attrs([Attr("address","0x8FC"), -Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x900"), -Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x904"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(952, "%000003b8"), Attrs([Attr("address","0x908"), -Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(960, "%000003c0"), - Attrs([Attr("address","0x90C"), Attr("insn","str x0, [sp]")]), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4629,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_779, "%000006f3"), Attrs([Attr("address","0x1210"), +Attr("insn","callq -0x1c5")]), Int(1,1), +(Direct(Tid(2_888, "@strlen")),Direct(Tid(1_781, "%000006f5"))))])), +Blk(Tid(1_781, "%000006f5"), Attrs([Attr("address","0x1215")]), Phis([]), +Defs([Def(Tid(1_789, "%000006fd"), Attrs([Attr("address","0x1215"), +Attr("insn","movq -0x18(%rbp), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551592,64)),LittleEndian(),64)), +Def(Tid(1_797, "%00000705"), Attrs([Attr("address","0x1219"), +Attr("insn","movq %rax, %rdx")]), Var("RDX",Imm(64)), Var("RAX",Imm(64))), +Def(Tid(1_803, "%0000070b"), Attrs([Attr("address","0x121C"), +Attr("insn","movl $0x1, %esi")]), Var("RSI",Imm(64)), Int(1,64)), +Def(Tid(1_815, "%00000717"), Attrs([Attr("address","0x1221"), +Attr("insn","callq -0x1c6")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_820, "%0000071c"), + Attrs([Attr("address","0x1221"), Attr("insn","callq -0x1c6")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x910"), -Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2324,64))]), -Jmps([Call(Tid(968, "%000003c8"), Attrs([Attr("address","0x910"), -Attr("insn","bl #-0x1f0")]), Int(1,1), -(Direct(Tid(2_029, "@strlen")),Direct(Tid(970, "%000003ca"))))])), -Blk(Tid(970, "%000003ca"), Attrs([Attr("address","0x914")]), Phis([]), -Defs([Def(Tid(975, "%000003cf"), Attrs([Attr("address","0x914"), -Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x918"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(988, "%000003dc"), Attrs([Attr("address","0x91C"), -Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x920"), -Attr("insn","bl #-0x210")]), Var("R30",Imm(64)), Int(2340,64))]), -Jmps([Call(Tid(996, "%000003e4"), Attrs([Attr("address","0x920"), -Attr("insn","bl #-0x210")]), Int(1,1), -(Direct(Tid(2_023, "@memcpy")),Direct(Tid(998, "%000003e6"))))])), -Blk(Tid(998, "%000003e6"), Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x924"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x928"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_025, "@puts")),Direct(Tid(1_020, "%000003fc"))))])), -Blk(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x930"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x934"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x938"), -Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_046, "%00000416"), - Attrs([Attr("address","0x93C"), Attr("insn","stur x9, [x29, #-0x8]")]), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4646,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_822, "%0000071e"), Attrs([Attr("address","0x1221"), +Attr("insn","callq -0x1c6")]), Int(1,1), +(Direct(Tid(2_883, "@memset")),Direct(Tid(1_824, "%00000720"))))])), +Blk(Tid(1_824, "%00000720"), Attrs([Attr("address","0x1226")]), Phis([]), +Defs([Def(Tid(1_830, "%00000726"), Attrs([Attr("address","0x1226"), +Attr("insn","movq 0x2e2b(%rip), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_842, "%00000732"), Attrs([Attr("address","0x122D"), +Attr("insn","callq -0x202")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_847, "%00000737"), + Attrs([Attr("address","0x122D"), Attr("insn","callq -0x202")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x940"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x944"), -Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x948"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x94C"), -Attr("insn","bl #-0x22c")]), Var("R30",Imm(64)), Int(2384,64))]), -Jmps([Call(Tid(1_075, "%00000433"), Attrs([Attr("address","0x94C"), -Attr("insn","bl #-0x22c")]), Int(1,1), -(Direct(Tid(2_029, "@strlen")),Direct(Tid(1_077, "%00000435"))))])), -Blk(Tid(1_077, "%00000435"), Attrs([Attr("address","0x950")]), Phis([]), -Defs([Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x950"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x954"), -Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x958"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x95C"), -Attr("insn","bl #-0x1fc")]), Var("R30",Imm(64)), Int(2400,64))]), -Jmps([Call(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x95C"), -Attr("insn","bl #-0x1fc")]), Int(1,1), -(Direct(Tid(2_024, "@memset")),Direct(Tid(1_103, "%0000044f"))))])), -Blk(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x960")]), Phis([]), -Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x960"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x964"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x1c8")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x1c8")]), Int(1,1), -(Direct(Tid(2_020, "@free")),Direct(Tid(1_125, "%00000465"))))])), -Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x96C"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x970"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_139, "%00000473"), - Attrs([Attr("address","0x970"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), - Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), -Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x970"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x974"), -Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_155, "%00000483"), - Attrs([Attr("address","0x978"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_022, "@malloc"), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4658,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_849, "%00000739"), Attrs([Attr("address","0x122D"), +Attr("insn","callq -0x202")]), Int(1,1), +(Direct(Tid(2_878, "@free")),Direct(Tid(1_851, "%0000073b"))))])), +Blk(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x1232")]), Phis([]), +Defs([Def(Tid(1_861, "%00000745"), Attrs([Attr("address","0x1232"), +Attr("insn","xorl %eax, %eax")]), Var("RAX",Imm(64)), Int(0,64)), +Def(Tid(1_864, "%00000748"), Attrs([Attr("address","0x1232"), +Attr("insn","xorl %eax, %eax")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_867, "%0000074b"), Attrs([Attr("address","0x1232"), +Attr("insn","xorl %eax, %eax")]), Var("ZF",Imm(1)), Int(1,1)), +Def(Tid(1_870, "%0000074e"), Attrs([Attr("address","0x1232"), +Attr("insn","xorl %eax, %eax")]), Var("PF",Imm(1)), Int(1,1)), +Def(Tid(1_873, "%00000751"), Attrs([Attr("address","0x1232"), +Attr("insn","xorl %eax, %eax")]), Var("OF",Imm(1)), Int(0,1)), +Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x1232"), +Attr("insn","xorl %eax, %eax")]), Var("CF",Imm(1)), Int(0,1)), +Def(Tid(1_879, "%00000757"), Attrs([Attr("address","0x1232"), +Attr("insn","xorl %eax, %eax")]), Var("SF",Imm(1)), Int(0,1)), +Def(Tid(1_908, "%00000774"), Attrs([Attr("address","0x1234"), +Attr("insn","addq $0x20, %rsp")]), Var("#12582874",Imm(64)), +Var("RSP",Imm(64))), Def(Tid(1_912, "%00000778"), + Attrs([Attr("address","0x1234"), Attr("insn","addq $0x20, %rsp")]), + Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(32,64))), +Def(Tid(1_917, "%0000077d"), Attrs([Attr("address","0x1234"), +Attr("insn","addq $0x20, %rsp")]), Var("CF",Imm(1)), +LT(Var("RSP",Imm(64)),Var("#12582874",Imm(64)))), +Def(Tid(1_925, "%00000785"), Attrs([Attr("address","0x1234"), +Attr("insn","addq $0x20, %rsp")]), Var("OF",Imm(1)), +AND(EQ(HIGH(1,Var("#12582874",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582874",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582874",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), +Def(Tid(1_930, "%0000078a"), Attrs([Attr("address","0x1234"), +Attr("insn","addq $0x20, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582874",Imm(64))),Int(32,64))))), +Def(Tid(1_935, "%0000078f"), Attrs([Attr("address","0x1234"), +Attr("insn","addq $0x20, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_939, "%00000793"), Attrs([Attr("address","0x1234"), +Attr("insn","addq $0x20, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(1_943, "%00000797"), + Attrs([Attr("address","0x1234"), Attr("insn","addq $0x20, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(1_955, "%000007a3"), Attrs([Attr("address","0x1238"), +Attr("insn","popq %rbp")]), Var("RBP",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(1_959, "%000007a7"), Attrs([Attr("address","0x1238"), +Attr("insn","popq %rbp")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_972, "%000007b4"), + Attrs([Attr("address","0x1239"), Attr("insn","retq")]), + Var("#12582871",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(1_976, "%000007b8"), Attrs([Attr("address","0x1239"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_979, "%000007bb"), + Attrs([Attr("address","0x1239"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582871",Imm(64))),))]))])), Sub(Tid(2_881, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_048, "%00000800"), Attrs([Attr("alloc-size","()"), +Attr("address","0x1080"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(3_038, "%00000bde"), 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_049, "%00000801"), +Var("RDI",Imm(64)), In()), Arg(Tid(3_039, "%00000bdf"), 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(903, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x750"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_023, "@memcpy"), + Var("malloc_result",Imm(64)), Var("RAX",Imm(64)), Out())]), +Blks([Blk(Tid(1_513, "@malloc"), Attrs([Attr("address","0x1080")]), Phis([]), +Defs([]), Jmps([Call(Tid(2_578, "%00000a12"), + Attrs([Attr("address","0x1080"), Attr("insn","jmpq *0x2fa2(%rip)")]), + Int(1,1), +(Direct(Tid(2_576, "@malloc:external")),Direct(Tid(2_580, "%00000a14"))))])), +Blk(Tid(2_580, "%00000a14"), Attrs([Attr("address","0x1086")]), Phis([]), +Defs([Def(Tid(2_589, "%00000a1d"), Attrs([Attr("address","0x1086"), +Attr("insn","pushq $0x5")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_594, "%00000a22"), + Attrs([Attr("address","0x1086"), Attr("insn","pushq $0x5")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(5,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_598, "%00000a26"), Attrs([Attr("address","0x108B"), +Attr("insn","jmp -0x70")]), Int(1,1), +(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), Sub(Tid(2_882, "@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_050, "%00000802"), Attrs([Attr("nonnull","()"), +Attr("address","0x1070"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(3_040, "%00000be0"), 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_051, "%00000803"), +Var("RDI",Imm(64)), Both()), Arg(Tid(3_041, "%00000be1"), 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_052, "%00000804"), Attrs([Attr("c.layout","[unsigned long : 64]"), + Var("memcpy_src",Imm(64)), Var("RSI",Imm(64)), Both()), +Arg(Tid(3_042, "%00000be2"), 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_053, "%00000805"), Attrs([Attr("c.layout","*[ : 8]"), + Var("memcpy_n",Imm(64)), Var("RDX",Imm(64)), In()), +Arg(Tid(3_043, "%00000be3"), 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(994, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_534, "%000005fe"), Attrs([Attr("address","0x710"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_541, "%00000605"), 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_547, "%0000060b"), Attrs([Attr("address","0x718"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_552, "%00000610"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_024, "@memset"), + Var("memcpy_result",Imm(64)), Var("RAX",Imm(64)), Out())]), +Blks([Blk(Tid(1_611, "@memcpy"), Attrs([Attr("address","0x1070")]), Phis([]), +Defs([]), Jmps([Call(Tid(2_553, "%000009f9"), + Attrs([Attr("address","0x1070"), Attr("insn","jmpq *0x2faa(%rip)")]), + Int(1,1), +(Direct(Tid(2_551, "@memcpy:external")),Direct(Tid(2_555, "%000009fb"))))])), +Blk(Tid(2_555, "%000009fb"), Attrs([Attr("address","0x1076")]), Phis([]), +Defs([Def(Tid(2_564, "%00000a04"), Attrs([Attr("address","0x1076"), +Attr("insn","pushq $0x4")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_569, "%00000a09"), + Attrs([Attr("address","0x1076"), Attr("insn","pushq $0x4")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_573, "%00000a0d"), Attrs([Attr("address","0x107B"), +Attr("insn","jmp -0x60")]), Int(1,1), +(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), Sub(Tid(2_883, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_054, "%00000806"), Attrs([Attr("nonnull","()"), +Attr("address","0x1060"), Attr("stub","()")]), "memset", + Args([Arg(Tid(3_044, "%00000be4"), 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_055, "%00000807"), +Attr("c.type","void*")]), Var("memset_buf",Imm(64)), Var("RDI",Imm(64)), +Both()), Arg(Tid(3_045, "%00000be5"), 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_056, "%00000808"), +LOW(32,Var("RSI",Imm(64))), In()), Arg(Tid(3_046, "%00000be6"), 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_057, "%00000809"), 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_099, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_025, "@puts"), +Attr("c.type","unsigned long")]), Var("memset_n",Imm(64)), +Var("RDX",Imm(64)), In()), Arg(Tid(3_047, "%00000be7"), + Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), +Attr("c.type","void*")]), Var("memset_result",Imm(64)), Var("RAX",Imm(64)), +Out())]), Blks([Blk(Tid(1_811, "@memset"), Attrs([Attr("address","0x1060")]), + Phis([]), Defs([]), Jmps([Call(Tid(2_528, "%000009e0"), + Attrs([Attr("address","0x1060"), Attr("insn","jmpq *0x2fb2(%rip)")]), + Int(1,1), +(Direct(Tid(2_526, "@memset:external")),Direct(Tid(2_530, "%000009e2"))))])), +Blk(Tid(2_530, "%000009e2"), Attrs([Attr("address","0x1066")]), Phis([]), +Defs([Def(Tid(2_539, "%000009eb"), Attrs([Attr("address","0x1066"), +Attr("insn","pushq $0x3")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_544, "%000009f0"), + Attrs([Attr("address","0x1066"), Attr("insn","pushq $0x3")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(3,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_548, "%000009f4"), Attrs([Attr("address","0x106B"), +Attr("insn","jmp -0x50")]), Int(1,1), +(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), Sub(Tid(2_884, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_058, "%0000080a"), Attrs([Attr("c.layout","*[char : 8]"), +Attr("address","0x1040"), Attr("stub","()")]), "puts", + Args([Arg(Tid(3_048, "%00000be8"), 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_059, "%0000080b"), Attrs([Attr("c.layout","[signed : 32]"), + Var("puts_s",Imm(64)), Var("RDI",Imm(64)), In()), +Arg(Tid(3_049, "%00000be9"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_016, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_026, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_060, "%0000080c"), + Var("puts_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(1_638, "@puts"), Attrs([Attr("address","0x1040")]), Phis([]), +Defs([]), Jmps([Call(Tid(2_478, "%000009ae"), + Attrs([Attr("address","0x1040"), Attr("insn","jmpq *0x2fc2(%rip)")]), + Int(1,1), +(Direct(Tid(2_476, "@puts:external")),Direct(Tid(2_480, "%000009b0"))))])), +Blk(Tid(2_480, "%000009b0"), Attrs([Attr("address","0x1046")]), Phis([]), +Defs([Def(Tid(2_489, "%000009b9"), Attrs([Attr("address","0x1046"), +Attr("insn","pushq $0x1")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_494, "%000009be"), + Attrs([Attr("address","0x1046"), Attr("insn","pushq $0x1")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(1,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_498, "%000009c2"), Attrs([Attr("address","0x104B"), +Attr("insn","jmp -0x30")]), Int(1,1), +(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), +Sub(Tid(2_885, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1100")]), + "register_tm_clones", Args([Arg(Tid(3_050, "%00000bea"), 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(697, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x840"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(706, "%000002c2"), Attrs([Attr("address","0x844"), -Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(711, "%000002c7"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(717, "%000002cd"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x70")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(724, "%000002d4"), Attrs([Attr("address","0x850"), -Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(730, "%000002da"), Attrs([Attr("address","0x854"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(737, "%000002e1"), Attrs([Attr("address","0x858"), -Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x85C"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(749, "%000002ed"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(747, "%000002eb"))), Goto(Tid(2_027, "%000007eb"), Attrs([]), - Int(1,1), Direct(Tid(1_216, "%000004c0")))])), Blk(Tid(1_216, "%000004c0"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x864"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x868"), -Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(747, "%000002eb"))), Goto(Tid(2_028, "%000007ec"), Attrs([]), - Int(1,1), Direct(Tid(1_235, "%000004d3")))])), Blk(Tid(747, "%000002eb"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(755, "%000002f3"), Attrs([Attr("address","0x878"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x870"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x874"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_029, "@strlen"), +LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(948, "@register_tm_clones"), Attrs([Attr("address","0x1100")]), + Phis([]), Defs([Def(Tid(952, "%000003b8"), Attrs([Attr("address","0x1100"), +Attr("insn","leaq 0x2f49(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16464,64)), +Def(Tid(958, "%000003be"), Attrs([Attr("address","0x1107"), +Attr("insn","leaq 0x2f42(%rip), %rsi")]), Var("RSI",Imm(64)), Int(16464,64)), +Def(Tid(990, "%000003de"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("#12582897",Imm(64)), +Var("RSI",Imm(64))), Def(Tid(994, "%000003e2"), + Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), + Var("#12582896",Imm(64)), Var("RDI",Imm(64))), Def(Tid(999, "%000003e7"), + Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), + Var("RSI",Imm(64)), MINUS(Var("RSI",Imm(64)),Var("RDI",Imm(64)))), +Def(Tid(1_004, "%000003ec"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("CF",Imm(1)), +LT(Var("#12582897",Imm(64)),Var("#12582896",Imm(64)))), +Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("OF",Imm(1)), +HIGH(1,AND(XOR(Var("#12582897",Imm(64)),Var("#12582896",Imm(64))),XOR(Var("#12582897",Imm(64)),Var("RSI",Imm(64)))))), +Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSI",Imm(64)),Var("#12582897",Imm(64))),Var("#12582896",Imm(64)))))), +Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_026, "%00000402"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("SF",Imm(1)), +HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_030, "%00000406"), + Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), +Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x1111"), +Attr("insn","movq %rsi, %rax")]), Var("RAX",Imm(64)), Var("RSI",Imm(64))), +Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("#12582894",Imm(64)), +Var("RSI",Imm(64))), Def(Tid(1_063, "%00000427"), + Attrs([Attr("address","0x1114"), Attr("insn","shrq $0x3f, %rsi")]), + Var("RSI",Imm(64)), RSHIFT(Var("RSI",Imm(64)),Int(63,64))), +Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("CF",Imm(1)), +HIGH(1,LSHIFT(Var("#12582894",Imm(64)),Int(1,64)))), +Def(Tid(1_071, "%0000042f"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("SF",Imm(1)), +HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_075, "%00000433"), + Attrs([Attr("address","0x1114"), Attr("insn","shrq $0x3f, %rsi")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), +Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("OF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_107, "%00000453"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("#12582892",Imm(64)), +Var("RAX",Imm(64))), Def(Tid(1_111, "%00000457"), + Attrs([Attr("address","0x1118"), Attr("insn","sarq $0x3, %rax")]), + Var("RAX",Imm(64)), ARSHIFT(Var("RAX",Imm(64)),Int(3,64))), +Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("CF",Imm(1)), +HIGH(1,LSHIFT(Var("#12582892",Imm(64)),Int(61,64)))), +Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("RAX",Imm(64)))), Def(Tid(1_123, "%00000463"), + Attrs([Attr("address","0x1118"), Attr("insn","sarq $0x3, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RAX",Imm(64)))), +Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RAX",Imm(64)),Int(4,64)),Var("RAX",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_131, "%0000046b"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("OF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_168, "%00000490"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("#12582890",Imm(64)), +Var("RSI",Imm(64))), Def(Tid(1_172, "%00000494"), + Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), + Var("#12582889",Imm(64)), Var("RAX",Imm(64))), Def(Tid(1_177, "%00000499"), + Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), + Var("RSI",Imm(64)), PLUS(Var("RSI",Imm(64)),Var("#12582889",Imm(64)))), +Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("CF",Imm(1)), +LT(Var("RSI",Imm(64)),Var("#12582890",Imm(64)))), +Def(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("OF",Imm(1)), +AND(EQ(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("#12582889",Imm(64)))),AND(OR(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("RSI",Imm(64)))),NOT(AND(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("RSI",Imm(64)))))))), +Def(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSI",Imm(64)),Var("#12582890",Imm(64))),Var("#12582889",Imm(64)))))), +Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("SF",Imm(1)), +HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_210, "%000004ba"), + Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), +Def(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("#12582887",Imm(64)), Var("RSI",Imm(64))), +Def(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("RSI",Imm(64)), +ARSHIFT(Var("RSI",Imm(64)),Int(1,64))), Def(Tid(1_239, "%000004d7"), + Attrs([Attr("address","0x111F"), Attr("insn","sarq %rsi")]), + Var("CF",Imm(1)), HIGH(1,LSHIFT(Var("#12582887",Imm(64)),Int(63,64)))), +Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("SF",Imm(1)), HIGH(1,Var("RSI",Imm(64)))), +Def(Tid(1_247, "%000004df"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("ZF",Imm(1)), +EQ(Int(0,64),Var("RSI",Imm(64)))), Def(Tid(1_252, "%000004e4"), + Attrs([Attr("address","0x111F"), Attr("insn","sarq %rsi")]), + Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_258, "%000004ea"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("OF",Imm(1)), Int(0,1))]), +Jmps([Goto(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x1122"), +Attr("insn","je 0x14")]), Var("ZF",Imm(1)), Direct(Tid(1_262, "%000004ee"))), +Goto(Tid(3_023, "%00000bcf"), Attrs([]), Int(1,1), +Direct(Tid(2_167, "%00000877")))])), Blk(Tid(2_167, "%00000877"), + Attrs([Attr("address","0x1124")]), Phis([]), +Defs([Def(Tid(2_173, "%0000087d"), Attrs([Attr("address","0x1124"), +Attr("insn","movq 0x2ead(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16344,64),LittleEndian(),64)), +Def(Tid(2_191, "%0000088f"), Attrs([Attr("address","0x112B"), +Attr("insn","testq %rax, %rax")]), Var("#12582866",Imm(64)), +Var("RAX",Imm(64))), Def(Tid(2_194, "%00000892"), + Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), + Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_197, "%00000895"), + Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), + Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_200, "%00000898"), + Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), + Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_205, "%0000089d"), + Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), + Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582866",Imm(64)),Int(4,64)),Var("#12582866",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_209, "%000008a1"), Attrs([Attr("address","0x112B"), +Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582866",Imm(64)))), Def(Tid(2_213, "%000008a5"), + Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582866",Imm(64))))]), +Jmps([Goto(Tid(2_219, "%000008ab"), Attrs([Attr("address","0x112E"), +Attr("insn","je 0x8")]), Var("ZF",Imm(1)), Direct(Tid(1_262, "%000004ee"))), +Goto(Tid(3_024, "%00000bd0"), Attrs([]), Int(1,1), +Direct(Tid(2_223, "%000008af")))])), Blk(Tid(1_262, "%000004ee"), + Attrs([Attr("address","0x1138")]), Phis([]), +Defs([Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x1138"), +Attr("insn","retq")]), Var("#12582885",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(1_283, "%00000503"), Attrs([Attr("address","0x1138"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_286, "%00000506"), + Attrs([Attr("address","0x1138"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582885",Imm(64))),))])), Blk(Tid(2_223, "%000008af"), + Attrs([Attr("address","0x1130")]), Phis([]), Defs([]), +Jmps([Call(Tid(2_227, "%000008b3"), Attrs([Attr("address","0x1130"), +Attr("insn","jmpq *%rax")]), Int(1,1), +(Indirect(Var("RAX",Imm(64))),))]))])), Sub(Tid(2_888, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_061, "%0000080d"), Attrs([Attr("nonnull","()"), +Attr("pure","()"), Attr("address","0x1050"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(3_051, "%00000beb"), 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_062, "%0000080e"), +Attr("c.type"," const char*")]), Var("strlen_s",Imm(64)), Var("RDI",Imm(64)), +In()), Arg(Tid(3_052, "%00000bec"), 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(966, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x720"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_563, "%0000061b"), 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_569, "%00000621"), 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_574, "%00000626"), - Attrs([Attr("address","0x72C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))]))]))) \ No newline at end of file +Var("RAX",Imm(64)), Out())]), Blks([Blk(Tid(1_568, "@strlen"), + Attrs([Attr("address","0x1050")]), Phis([]), Defs([]), +Jmps([Call(Tid(2_503, "%000009c7"), Attrs([Attr("address","0x1050"), +Attr("insn","jmpq *0x2fba(%rip)")]), Int(1,1), +(Direct(Tid(2_501, "@strlen:external")),Direct(Tid(2_505, "%000009c9"))))])), +Blk(Tid(2_505, "%000009c9"), Attrs([Attr("address","0x1056")]), Phis([]), +Defs([Def(Tid(2_514, "%000009d2"), Attrs([Attr("address","0x1056"), +Attr("insn","pushq $0x2")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_519, "%000009d7"), + Attrs([Attr("address","0x1056"), Attr("insn","pushq $0x2")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(2,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_523, "%000009db"), Attrs([Attr("address","0x105B"), +Attr("insn","jmp -0x40")]), Int(1,1), +(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), +Sub(Tid(824, "@__libc_start_main"), + Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), +Attr("synthetic","()"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(3_053, "%00000bed"), + 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("RDI",Imm(64)), In()), +Arg(Tid(3_054, "%00000bee"), 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("RSI",Imm(64))), In()), +Arg(Tid(3_055, "%00000bef"), 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("RDX",Imm(64)), Both()), +Arg(Tid(3_056, "%00000bf0"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("__libc_start_main_auxv",Imm(64)), Var("RCX",Imm(64)), Both()), +Arg(Tid(3_057, "%00000bf1"), 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("RAX",Imm(64))), +Out())]), Blks([])), Sub(Tid(829, "@intrinsic:hlt"), + Attrs([Attr("intrinsic","()"), Attr("synthetic","()"), Attr("stub","()")]), + "intrinsic:hlt", Args([]), Blks([])), Sub(Tid(2_451, "@free:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "free:external", Args([Arg(Tid(3_058, "%00000bf2"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("free:external_result",Imm(32)), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), +Sub(Tid(2_476, "@puts:external"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("synthetic","()"), Attr("stub","()")]), "puts:external", + Args([Arg(Tid(3_059, "%00000bf3"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts:external_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([])), Sub(Tid(2_501, "@strlen:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "strlen:external", Args([Arg(Tid(3_060, "%00000bf4"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("strlen:external_result",Imm(32)), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), +Sub(Tid(2_526, "@memset:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "memset:external", Args([Arg(Tid(3_061, "%00000bf5"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("memset:external_result",Imm(32)), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), +Sub(Tid(2_551, "@memcpy:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "memcpy:external", Args([Arg(Tid(3_062, "%00000bf6"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("memcpy:external_result",Imm(32)), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), +Sub(Tid(2_576, "@malloc:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "malloc:external", Args([Arg(Tid(3_063, "%00000bf7"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("malloc:external_result",Imm(32)), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), +Sub(Tid(2_860, "@__cxa_finalize:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "__cxa_finalize:external", + Args([Arg(Tid(3_064, "%00000bf8"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("__cxa_finalize:external_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), +Out())]), +Blks([]))]))) \ No newline at end of file diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir index b8bf42653..831e29427 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir @@ -1,352 +1,555 @@ -000007ee: program -000007d2: sub __cxa_finalize(__cxa_finalize_result) -000007ef: __cxa_finalize_result :: out u32 = low:32[R0] - -000004bc: -00000640: R16 := 0x20000 -00000647: R17 := mem[R16 + 0x18, el]:u64 -0000064d: R16 := R16 + 0x18 -00000652: call R17 with noreturn - -000007d3: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000007f0: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -000002f7: -000002fb: #3 := R31 - 0x20 -00000301: mem := mem with [#3, el]:u64 <- R29 -00000307: mem := mem with [#3 + 8, el]:u64 <- R30 -0000030b: R31 := #3 -00000311: R29 := R31 -00000319: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000031e: R19 := 0x20000 -00000325: R0 := pad:64[mem[R19 + 0x70]] -0000032b: when 0:0[R0] goto %00000329 -000007d4: goto %00000485 - -00000485: -00000488: R0 := 0x1F000 -0000048f: R0 := mem[R0 + 0xFC8, el]:u64 -00000495: when R0 = 0 goto %00000493 -000007d5: goto %000004ac - -000004ac: -000004af: R0 := 0x20000 -000004b6: R0 := mem[R0 + 0x58, el]:u64 -000004bb: R30 := 0x8B0 -000004be: call @__cxa_finalize with return %00000493 - -00000493: -0000049b: R30 := 0x8B4 -0000049d: call @deregister_tm_clones with return %0000049f - -0000049f: -000004a2: R0 := 1 -000004aa: mem := mem with [R19 + 0x70] <- 7:0[R0] -000007d6: goto %00000329 - -00000329: -00000333: R19 := mem[R31 + 0x10, el]:u64 -0000033a: R29 := mem[R31, el]:u64 -0000033f: R30 := mem[R31 + 8, el]:u64 -00000343: R31 := R31 + 0x20 -00000348: call R30 with noreturn - -000007d7: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000007f1: __libc_start_main_main :: in u64 = R0 -000007f2: __libc_start_main_arg2 :: in u32 = low:32[R1] -000007f3: __libc_start_main_arg3 :: in out u64 = R2 -000007f4: __libc_start_main_auxv :: in out u64 = R3 -000007f5: __libc_start_main_result :: out u32 = low:32[R0] - -00000250: -0000062a: R16 := 0x20000 -00000631: R17 := mem[R16 + 0x10, el]:u64 -00000637: R16 := R16 + 0x10 -0000063c: call R17 with noreturn - -000007d8: sub _fini(_fini_result) -000007f6: _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 - -000007d9: sub _init(_init_result) -000007f7: _init_result :: out u32 = low:32[R0] - -000006f2: -000006f8: #7 := R31 - 0x10 -000006fe: mem := mem with [#7, el]:u64 <- R29 -00000704: mem := mem with [#7 + 8, el]:u64 <- R30 -00000708: R31 := #7 -0000070e: R29 := R31 -00000713: R30 := 0x6E8 -00000715: call @call_weak_fn with return %00000717 - -00000717: -0000071c: R29 := mem[R31, el]:u64 -00000721: R30 := mem[R31 + 8, el]:u64 -00000725: R31 := R31 + 0x10 -0000072a: call R30 with noreturn - -000007da: sub _start(_start_result) -000007f8: _start_result :: out u32 = low:32[R0] - -00000211: -00000216: R29 := 0 -0000021b: R30 := 0 -00000221: R5 := R0 -00000228: R1 := mem[R31, el]:u64 -0000022e: R2 := R31 + 8 -00000234: R6 := R31 -00000239: R0 := 0x1F000 -00000240: R0 := mem[R0 + 0xFD8, el]:u64 -00000245: R3 := 0 -0000024a: R4 := 0 -0000024f: R30 := 0x7F0 -00000252: call @__libc_start_main with return %00000254 - -00000254: -00000257: R30 := 0x7F4 -0000025a: call @abort with return %000007db - -000007db: -000007dc: call @call_weak_fn with noreturn - -000007dd: sub abort() - - -00000258: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x38, el]:u64 -000006a5: R16 := R16 + 0x38 -000006aa: call R17 with noreturn - -000007de: sub call_weak_fn(call_weak_fn_result) -000007f9: call_weak_fn_result :: out u32 = low:32[R0] - -0000025c: -0000025f: R0 := 0x1F000 -00000266: R0 := mem[R0 + 0xFD0, el]:u64 -0000026c: when R0 = 0 goto %0000026a -000007df: goto %000004fc - -0000026a: -00000272: call R30 with noreturn - -000004fc: -000004ff: goto @__gmon_start__ - -000004fd: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x30, el]:u64 -0000068f: R16 := R16 + 0x30 -00000694: call R17 with noreturn - -000007e0: sub deregister_tm_clones(deregister_tm_clones_result) -000007fa: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000278: -0000027b: R0 := 0x20000 -00000281: R0 := R0 + 0x70 -00000286: R1 := 0x20000 -0000028c: R1 := R1 + 0x70 -00000292: #1 := ~R0 -00000297: #2 := R1 + ~R0 -0000029d: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002a3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002a7: ZF := #2 + 1 = 0 -000002ab: NF := 63:63[#2 + 1] -000002b1: when ZF goto %000002af -000007e1: goto %000004de - -000004de: -000004e1: R1 := 0x1F000 -000004e8: R1 := mem[R1 + 0xFC0, el]:u64 -000004ed: when R1 = 0 goto %000002af -000007e2: goto %000004f1 - -000002af: -000002b7: call R30 with noreturn - -000004f1: -000004f5: R16 := R1 -000004fa: call R16 with noreturn - -000007e3: sub frame_dummy(frame_dummy_result) -000007fb: frame_dummy_result :: out u32 = low:32[R0] - -0000034e: -00000350: call @register_tm_clones with noreturn - -000007e4: sub free(free_ptr) -000007fc: free_ptr :: in out u64 = R0 - -00000461: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x48, el]:u64 -000006d1: R16 := R16 + 0x48 -000006d6: call R17 with noreturn - -000007e5: sub main(main_argc, main_argv, main_result) -000007fd: main_argc :: in u32 = low:32[R0] -000007fe: main_argv :: in out u64 = R1 -000007ff: main_result :: out u32 = low:32[R0] - -00000352: -00000356: R31 := R31 - 0x40 -0000035c: #4 := R31 + 0x30 -00000362: mem := mem with [#4, el]:u64 <- R29 -00000368: mem := mem with [#4 + 8, el]:u64 <- R30 -0000036e: R29 := R31 + 0x30 -00000375: mem := mem with [R29 - 8, el]:u64 <- 0 -0000037c: mem := mem with [R29 - 0x10, el]:u64 <- 0 -00000381: R0 := 0xB -00000386: R30 := 0x8F0 -00000389: call @malloc with return %0000038b - -0000038b: -0000038e: R8 := 0x20000 -00000396: mem := mem with [R31 + 0x18, el]:u64 <- R8 -0000039e: mem := mem with [R8 + 0x78, el]:u64 <- R0 -000003a5: R8 := mem[R8 + 0x78, el]:u64 -000003ad: mem := mem with [R31 + 8, el]:u64 <- R8 -000003b2: R0 := 0x20000 -000003b8: R0 := R0 + 0x61 -000003c0: mem := mem with [R31, el]:u64 <- R0 -000003c5: R30 := 0x914 -000003c8: call @strlen with return %000003ca - -000003ca: -000003cf: R1 := mem[R31, el]:u64 -000003d5: R2 := R0 -000003dc: R0 := mem[R31 + 8, el]:u64 -000003e1: R30 := 0x924 -000003e4: call @memcpy with return %000003e6 - -000003e6: -000003eb: R8 := mem[R31 + 0x18, el]:u64 -000003f2: R0 := mem[R8 + 0x78, el]:u64 -000003f7: R30 := 0x930 -000003fa: call @puts with return %000003fc - -000003fc: -00000401: R8 := mem[R31 + 0x18, el]:u64 -00000408: R9 := mem[R8 + 0x78, el]:u64 -0000040e: R9 := R9 + 4 -00000416: mem := mem with [R29 - 8, el]:u64 <- R9 -0000041d: R9 := mem[R8 + 0x78, el]:u64 -00000425: mem := mem with [R31 + 0x10, el]:u64 <- R9 -0000042c: R0 := mem[R8 + 0x78, el]:u64 -00000431: R30 := 0x950 -00000433: call @strlen with return %00000435 - -00000435: -00000439: R2 := R0 -00000440: R0 := mem[R31 + 0x10, el]:u64 -00000445: R1 := 1 -0000044a: R30 := 0x960 -0000044d: call @memset with return %0000044f - -0000044f: -00000454: R8 := mem[R31 + 0x18, el]:u64 -0000045b: R0 := mem[R8 + 0x78, el]:u64 -00000460: R30 := 0x96C -00000463: call @free with return %00000465 - -00000465: -00000468: R0 := 0 -0000046e: #5 := R31 + 0x30 -00000473: R29 := mem[#5, el]:u64 -00000478: R30 := mem[#5 + 8, el]:u64 -0000047e: R31 := R31 + 0x40 -00000483: call R30 with noreturn - -000007e6: sub malloc(malloc_size, malloc_result) -00000800: malloc_size :: in u64 = R0 -00000801: malloc_result :: out u64 = R0 - -00000387: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16 + 0x20, el]:u64 -00000663: R16 := R16 + 0x20 -00000668: call R17 with noreturn - -000007e7: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000802: memcpy_dst :: in out u64 = R0 -00000803: memcpy_src :: in out u64 = R1 -00000804: memcpy_n :: in u64 = R2 -00000805: memcpy_result :: out u64 = R0 - -000003e2: -000005fe: R16 := 0x20000 -00000605: R17 := mem[R16, el]:u64 -0000060b: R16 := R16 -00000610: call R17 with noreturn - -000007e8: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000806: memset_buf :: in out u64 = R0 -00000807: memset_c :: in u32 = low:32[R1] -00000808: memset_n :: in u64 = R2 -00000809: memset_result :: out u64 = R0 - -0000044b: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 0x28, el]:u64 -00000679: R16 := R16 + 0x28 -0000067e: call R17 with noreturn - -000007e9: sub puts(puts_s, puts_result) -0000080a: puts_s :: in u64 = R0 -0000080b: puts_result :: out u32 = low:32[R0] - -000003f8: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x40, el]:u64 -000006bb: R16 := R16 + 0x40 -000006c0: call R17 with noreturn - -000007ea: sub register_tm_clones(register_tm_clones_result) -0000080c: register_tm_clones_result :: out u32 = low:32[R0] - -000002b9: -000002bc: R0 := 0x20000 -000002c2: R0 := R0 + 0x70 -000002c7: R1 := 0x20000 -000002cd: R1 := R1 + 0x70 -000002d4: R1 := R1 + ~R0 + 1 -000002da: R2 := 0.63:63[R1] -000002e1: R1 := R2 + (R1 ~>> 3) -000002e7: R1 := extend:64[63:1[R1]] -000002ed: when R1 = 0 goto %000002eb -000007eb: goto %000004c0 - -000004c0: -000004c3: R2 := 0x1F000 -000004ca: R2 := mem[R2 + 0xFE0, el]:u64 -000004cf: when R2 = 0 goto %000002eb -000007ec: goto %000004d3 - -000002eb: -000002f3: call R30 with noreturn - -000004d3: -000004d7: R16 := R2 -000004dc: call R16 with noreturn - -000007ed: sub strlen(strlen_s, strlen_result) -0000080d: strlen_s :: in u64 = R0 -0000080e: strlen_result :: out u64 = R0 - -000003c6: -00000614: R16 := 0x20000 -0000061b: R17 := mem[R16 + 8, el]:u64 -00000621: R16 := R16 + 8 -00000626: call R17 with noreturn +00000bd1: program +00000b31: sub __cxa_finalize(__cxa_finalize_result) +00000bd2: __cxa_finalize_result :: out u32 = low:32[RAX] + +0000086a: +00000b2e: call @__cxa_finalize:external with noreturn + +00000b32: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000bd3: __do_global_dtors_aux_result :: out u32 = low:32[RAX] + +0000050d: +00000525: #12582884 := mem[0x4050] +00000529: CF := mem[0x4050] < 0 +0000052f: OF := high:1[mem[0x4050] & (mem[0x4050] ^ #12582884)] +00000534: AF := 0x10 = (0x10 & (#12582884 ^ mem[0x4050])) +00000539: PF := + ~low:1[let $0 = #12582884 >> 4 ^ #12582884 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +0000053d: SF := high:1[#12582884] +00000541: ZF := 0 = #12582884 +00000548: when ~ZF goto %00000545 +00000bc9: goto %000007bd + +00000545: +00000556: #12582882 := mem[RSP, el]:u64 +0000055a: RSP := RSP + 8 +0000055d: call #12582882 with noreturn + +000007bd: +000007c9: #12582870 := RBP +000007cd: RSP := RSP - 8 +000007d3: mem := mem with [RSP, el]:u64 <- #12582870 +000007eb: #12582869 := mem[0x3FE0, el]:u64 +000007ef: CF := mem[0x3FE0, el]:u64 < 0 +000007f5: OF := high:1[mem[0x3FE0, el]:u64 & + (mem[0x3FE0, el]:u64 ^ #12582869)] +000007fa: AF := 0x10 = (0x10 & (#12582869 ^ mem[0x3FE0, el]:u64)) +000007ff: PF := + ~low:1[let $0 = #12582869 >> 4 ^ #12582869 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000803: SF := high:1[#12582869] +00000807: ZF := 0 = #12582869 +0000080f: RBP := RSP +00000816: when ZF goto %00000813 +00000bca: goto %0000085c + +0000085c: +00000862: RDI := mem[0x4038, el]:u64 +0000086e: RSP := RSP - 8 +00000873: mem := mem with [RSP, el]:u64 <- 0x1167 +00000875: call @__cxa_finalize with return %00000813 + +00000813: +00000822: RSP := RSP - 8 +00000827: mem := mem with [RSP, el]:u64 <- 0x116C +00000829: call @deregister_tm_clones with return %0000082b + +0000082b: +00000831: mem := mem with [0x4050] <- 1 +0000083d: RBP := mem[RSP, el]:u64 +00000841: RSP := RSP + 8 +0000084e: #12582867 := mem[RSP, el]:u64 +00000852: RSP := RSP + 8 +00000855: call #12582867 with noreturn + +00000b35: sub _fini(_fini_result) +00000bd4: _fini_result :: out u32 = low:32[RAX] + +00000015: +00000038: #12582911 := RSP +0000003c: RSP := RSP - 8 +00000040: CF := #12582911 < 8 +00000046: OF := high:1[(#12582911 ^ 8) & (#12582911 ^ RSP)] +0000004b: AF := 0x10 = (0x10 & (RSP ^ #12582911 ^ 8)) +00000050: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000054: SF := high:1[RSP] +00000058: ZF := 0 = RSP +00000075: #12582908 := RSP +00000079: RSP := RSP + 8 +0000007e: CF := RSP < #12582908 +00000086: OF := ~high:1[#12582908] & (high:1[#12582908] | high:1[RSP]) & + ~(high:1[#12582908] & high:1[RSP]) +0000008b: AF := 0x10 = (0x10 & (RSP ^ #12582908 ^ 8)) +00000090: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000094: SF := high:1[RSP] +00000098: ZF := 0 = RSP +000000a5: #12582905 := mem[RSP, el]:u64 +000000a9: RSP := RSP + 8 +000000ac: call #12582905 with noreturn + +00000b36: sub _init(_init_result) +00000bd5: _init_result :: out u32 = low:32[RAX] + +00000a41: +00000a59: #12582855 := RSP +00000a5d: RSP := RSP - 8 +00000a61: CF := #12582855 < 8 +00000a67: OF := high:1[(#12582855 ^ 8) & (#12582855 ^ RSP)] +00000a6c: AF := 0x10 = (0x10 & (RSP ^ #12582855 ^ 8)) +00000a71: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000a75: SF := high:1[RSP] +00000a79: ZF := 0 = RSP +00000a81: RAX := mem[0x3FD0, el]:u64 +00000a93: #12582852 := RAX +00000a96: OF := 0 +00000a99: CF := 0 +00000a9c: AF := unknown[bits]:u1 +00000aa1: PF := + ~low:1[let $0 = #12582852 >> 4 ^ #12582852 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000aa5: SF := high:1[#12582852] +00000aa9: ZF := 0 = #12582852 +00000ab0: when ZF goto %00000aad +00000bcb: goto %00000b07 + +00000b07: +00000b13: #12582846 := RAX +00000b17: RSP := RSP - 8 +00000b1c: mem := mem with [RSP, el]:u64 <- 0x1012 +00000b1f: call #12582846 with return %00000aad + +00000aad: +00000ace: #12582850 := RSP +00000ad2: RSP := RSP + 8 +00000ad7: CF := RSP < #12582850 +00000adf: OF := ~high:1[#12582850] & (high:1[#12582850] | high:1[RSP]) & + ~(high:1[#12582850] & high:1[RSP]) +00000ae4: AF := 0x10 = (0x10 & (RSP ^ #12582850 ^ 8)) +00000ae9: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000aed: SF := high:1[RSP] +00000af1: ZF := 0 = RSP +00000afe: #12582847 := mem[RSP, el]:u64 +00000b02: RSP := RSP + 8 +00000b05: call #12582847 with noreturn + +00000b38: sub _start(_start_result) +00000bd6: _start_result :: out u32 = low:32[RAX] + +0000024a: +00000254: RBP := 0 +00000257: AF := unknown[bits]:u1 +0000025a: ZF := 1 +0000025d: PF := 1 +00000260: OF := 0 +00000263: CF := 0 +00000266: SF := 0 +0000026e: R9 := RDX +0000027a: RSI := mem[RSP, el]:u64 +0000027e: RSP := RSP + 8 +00000286: RDX := RSP +00000298: RSP := RSP & 0xFFFFFFFFFFFFFFF0 +0000029b: OF := 0 +0000029e: CF := 0 +000002a1: AF := unknown[bits]:u1 +000002a6: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000002aa: SF := high:1[RSP] +000002ae: ZF := 0 = RSP +000002bc: #12582903 := RAX +000002c0: RSP := RSP - 8 +000002c6: mem := mem with [RSP, el]:u64 <- #12582903 +000002d4: #12582902 := RSP +000002d8: RSP := RSP - 8 +000002de: mem := mem with [RSP, el]:u64 <- #12582902 +000002ea: R8 := 0 +000002ed: AF := unknown[bits]:u1 +000002f0: ZF := 1 +000002f3: PF := 1 +000002f6: OF := 0 +000002f9: CF := 0 +000002fc: SF := 0 +00000308: RCX := 0 +0000030b: AF := unknown[bits]:u1 +0000030e: ZF := 1 +00000311: PF := 1 +00000314: OF := 0 +00000317: CF := 0 +0000031a: SF := 0 +00000320: RDI := 0x1190 +0000032e: #12582901 := mem[0x3FC0, el]:u64 +00000332: RSP := RSP - 8 +00000337: mem := mem with [RSP, el]:u64 <- 0x10C1 +0000033a: call @__libc_start_main with return %0000033c + +0000033c: +0000033f: call @intrinsic:hlt with return %00000341 + +00000341: +00000bcc: call @deregister_tm_clones with noreturn + +00000b3a: sub deregister_tm_clones(deregister_tm_clones_result) +00000bd7: deregister_tm_clones_result :: out u32 = low:32[RAX] + +0000034b: +0000034f: RDI := 0x4050 +00000355: RAX := 0x4050 +00000372: #12582900 := RAX - RDI +00000377: CF := RAX < RDI +0000037e: OF := high:1[(RAX ^ RDI) & (RAX ^ #12582900)] +00000384: AF := 0x10 = (0x10 & (#12582900 ^ RAX ^ RDI)) +00000389: PF := + ~low:1[let $0 = #12582900 >> 4 ^ #12582900 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +0000038d: SF := high:1[#12582900] +00000391: ZF := 0 = #12582900 +00000398: when ZF goto %00000395 +00000bcd: goto %000008ba + +000008ba: +000008c0: RAX := mem[0x3FC8, el]:u64 +000008d2: #12582864 := RAX +000008d5: OF := 0 +000008d8: CF := 0 +000008db: AF := unknown[bits]:u1 +000008e0: PF := + ~low:1[let $0 = #12582864 >> 4 ^ #12582864 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000008e4: SF := high:1[#12582864] +000008e8: ZF := 0 = #12582864 +000008ee: when ZF goto %00000395 +00000bce: goto %000008f2 + +00000395: +000003a6: #12582898 := mem[RSP, el]:u64 +000003aa: RSP := RSP + 8 +000003ad: call #12582898 with noreturn + +000008f2: +000008f6: call RAX with noreturn + +00000b3d: sub frame_dummy(frame_dummy_result) +00000bd8: frame_dummy_result :: out u32 = low:32[RAX] + +00000564: +00000568: call @register_tm_clones with noreturn + +00000b3e: sub free(free_ptr) +00000bd9: free_ptr :: in out u64 = RDI + +0000072e: +00000995: call @free:external with return %00000997 + +00000997: +000009a0: RSP := RSP - 8 +000009a5: mem := mem with [RSP, el]:u64 <- 0 +000009a9: call @free@plt-0x10 with noreturn + +00000b3f: sub free@plt-0x10(free@plt-0x10_result) +00000bda: free@plt-0x10_result :: out u32 = low:32[RAX] + +0000096f: +0000097b: #12582862 := mem[0x3FF0, el]:u64 +0000097f: RSP := RSP - 8 +00000985: mem := mem with [RSP, el]:u64 <- #12582862 +0000098b: call mem[0x3FF8, el]:u64 with noreturn + +00000b40: sub main(main_argc, main_argv, main_result) +00000bdb: main_argc :: in u32 = low:32[RDI] +00000bdc: main_argv :: in out u64 = RSI +00000bdd: main_result :: out u32 = low:32[RAX] + +0000056f: +0000057b: #12582881 := RBP +0000057f: RSP := RSP - 8 +00000585: mem := mem with [RSP, el]:u64 <- #12582881 +0000058d: RBP := RSP +000005a7: #12582880 := RSP +000005ab: RSP := RSP - 0x20 +000005af: CF := #12582880 < 0x20 +000005b5: OF := high:1[(#12582880 ^ 0x20) & (#12582880 ^ RSP)] +000005ba: AF := 0x10 = (0x10 & (RSP ^ #12582880 ^ 0x20)) +000005bf: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000005c3: SF := high:1[RSP] +000005c7: ZF := 0 = RSP +000005d1: mem := mem with [RBP - 8, el]:u64 <- 0 +000005db: mem := mem with [RBP - 0x10, el]:u64 <- 0 +000005e1: RDI := 0xB +000005ed: RSP := RSP - 8 +000005f2: mem := mem with [RSP, el]:u64 <- 0x11B2 +000005f4: call @malloc with return %000005f6 + +000005f6: +000005fe: mem := mem with [0x4058, el]:u64 <- RAX +00000606: RAX := mem[0x4058, el]:u64 +00000612: mem := mem with [RBP - 0x20, el]:u64 <- RAX +00000618: RDI := 0x4041 +00000624: RSP := RSP - 8 +00000629: mem := mem with [RSP, el]:u64 <- 0x11D0 +0000062b: call @strlen with return %0000062d + +0000062d: +00000635: RDI := mem[RBP - 0x20, el]:u64 +0000063d: RDX := RAX +00000643: RSI := 0x4041 +0000064f: RSP := RSP - 8 +00000654: mem := mem with [RSP, el]:u64 <- 0x11E3 +00000656: call @memcpy with return %00000658 + +00000658: +0000065e: RDI := mem[0x4058, el]:u64 +0000066a: RSP := RSP - 8 +0000066f: mem := mem with [RSP, el]:u64 <- 0x11EF +00000671: call @puts with return %00000673 + +00000673: +00000679: RAX := mem[0x4058, el]:u64 +00000696: #12582877 := RAX +0000069a: RAX := RAX + 4 +0000069f: CF := RAX < #12582877 +000006a7: OF := ~high:1[#12582877] & (high:1[#12582877] | high:1[RAX]) & + ~(high:1[#12582877] & high:1[RAX]) +000006ac: AF := 0x10 = (0x10 & (RAX ^ #12582877 ^ 4)) +000006b1: PF := + ~low:1[let $0 = RAX >> 4 ^ RAX in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000006b5: SF := high:1[RAX] +000006b9: ZF := 0 = RAX +000006c5: mem := mem with [RBP - 8, el]:u64 <- RAX +000006cd: RAX := mem[0x4058, el]:u64 +000006d9: mem := mem with [RBP - 0x18, el]:u64 <- RAX +000006e1: RDI := mem[0x4058, el]:u64 +000006ec: RSP := RSP - 8 +000006f1: mem := mem with [RSP, el]:u64 <- 0x1215 +000006f3: call @strlen with return %000006f5 + +000006f5: +000006fd: RDI := mem[RBP - 0x18, el]:u64 +00000705: RDX := RAX +0000070b: RSI := 1 +00000717: RSP := RSP - 8 +0000071c: mem := mem with [RSP, el]:u64 <- 0x1226 +0000071e: call @memset with return %00000720 + +00000720: +00000726: RDI := mem[0x4058, el]:u64 +00000732: RSP := RSP - 8 +00000737: mem := mem with [RSP, el]:u64 <- 0x1232 +00000739: call @free with return %0000073b + +0000073b: +00000745: RAX := 0 +00000748: AF := unknown[bits]:u1 +0000074b: ZF := 1 +0000074e: PF := 1 +00000751: OF := 0 +00000754: CF := 0 +00000757: SF := 0 +00000774: #12582874 := RSP +00000778: RSP := RSP + 0x20 +0000077d: CF := RSP < #12582874 +00000785: OF := ~high:1[#12582874] & (high:1[#12582874] | high:1[RSP]) & + ~(high:1[#12582874] & high:1[RSP]) +0000078a: AF := 0x10 = (0x10 & (RSP ^ #12582874 ^ 0x20)) +0000078f: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000793: SF := high:1[RSP] +00000797: ZF := 0 = RSP +000007a3: RBP := mem[RSP, el]:u64 +000007a7: RSP := RSP + 8 +000007b4: #12582871 := mem[RSP, el]:u64 +000007b8: RSP := RSP + 8 +000007bb: call #12582871 with noreturn + +00000b41: sub malloc(malloc_size, malloc_result) +00000bde: malloc_size :: in u64 = RDI +00000bdf: malloc_result :: out u64 = RAX + +000005e9: +00000a12: call @malloc:external with return %00000a14 + +00000a14: +00000a1d: RSP := RSP - 8 +00000a22: mem := mem with [RSP, el]:u64 <- 5 +00000a26: call @free@plt-0x10 with noreturn + +00000b42: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000be0: memcpy_dst :: in out u64 = RDI +00000be1: memcpy_src :: in out u64 = RSI +00000be2: memcpy_n :: in u64 = RDX +00000be3: memcpy_result :: out u64 = RAX + +0000064b: +000009f9: call @memcpy:external with return %000009fb + +000009fb: +00000a04: RSP := RSP - 8 +00000a09: mem := mem with [RSP, el]:u64 <- 4 +00000a0d: call @free@plt-0x10 with noreturn + +00000b43: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000be4: memset_buf :: in out u64 = RDI +00000be5: memset_c :: in u32 = low:32[RSI] +00000be6: memset_n :: in u64 = RDX +00000be7: memset_result :: out u64 = RAX + +00000713: +000009e0: call @memset:external with return %000009e2 + +000009e2: +000009eb: RSP := RSP - 8 +000009f0: mem := mem with [RSP, el]:u64 <- 3 +000009f4: call @free@plt-0x10 with noreturn + +00000b44: sub puts(puts_s, puts_result) +00000be8: puts_s :: in u64 = RDI +00000be9: puts_result :: out u32 = low:32[RAX] + +00000666: +000009ae: call @puts:external with return %000009b0 + +000009b0: +000009b9: RSP := RSP - 8 +000009be: mem := mem with [RSP, el]:u64 <- 1 +000009c2: call @free@plt-0x10 with noreturn + +00000b45: sub register_tm_clones(register_tm_clones_result) +00000bea: register_tm_clones_result :: out u32 = low:32[RAX] + +000003b4: +000003b8: RDI := 0x4050 +000003be: RSI := 0x4050 +000003de: #12582897 := RSI +000003e2: #12582896 := RDI +000003e7: RSI := RSI - RDI +000003ec: CF := #12582897 < #12582896 +000003f3: OF := high:1[(#12582897 ^ #12582896) & (#12582897 ^ RSI)] +000003f9: AF := 0x10 = (0x10 & (RSI ^ #12582897 ^ #12582896)) +000003fe: PF := + ~low:1[let $0 = RSI >> 4 ^ RSI in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000402: SF := high:1[RSI] +00000406: ZF := 0 = RSI +0000040e: RAX := RSI +00000423: #12582894 := RSI +00000427: RSI := RSI >> 0x3F +0000042b: CF := high:1[#12582894 << 1] +0000042f: SF := high:1[RSI] +00000433: ZF := 0 = RSI +00000438: PF := + ~low:1[let $0 = RSI >> 4 ^ RSI in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +0000043b: AF := unknown[bits]:u1 +0000043e: OF := unknown[bits]:u1 +00000453: #12582892 := RAX +00000457: RAX := RAX ~>> 3 +0000045b: CF := high:1[#12582892 << 0x3D] +0000045f: SF := high:1[RAX] +00000463: ZF := 0 = RAX +00000468: PF := + ~low:1[let $0 = RAX >> 4 ^ RAX in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +0000046b: AF := unknown[bits]:u1 +0000046e: OF := unknown[bits]:u1 +00000490: #12582890 := RSI +00000494: #12582889 := RAX +00000499: RSI := RSI + #12582889 +0000049e: CF := RSI < #12582890 +000004a7: OF := high:1[#12582890] = high:1[#12582889] & + (high:1[#12582890] | high:1[RSI]) & + ~(high:1[#12582890] & high:1[RSI]) +000004ad: AF := 0x10 = (0x10 & (RSI ^ #12582890 ^ #12582889)) +000004b2: PF := + ~low:1[let $0 = RSI >> 4 ^ RSI in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000004b6: SF := high:1[RSI] +000004ba: ZF := 0 = RSI +000004cf: #12582887 := RSI +000004d3: RSI := RSI ~>> 1 +000004d7: CF := high:1[#12582887 << 0x3F] +000004db: SF := high:1[RSI] +000004df: ZF := 0 = RSI +000004e4: PF := + ~low:1[let $0 = RSI >> 4 ^ RSI in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000004e7: AF := unknown[bits]:u1 +000004ea: OF := 0 +000004f1: when ZF goto %000004ee +00000bcf: goto %00000877 + +00000877: +0000087d: RAX := mem[0x3FD8, el]:u64 +0000088f: #12582866 := RAX +00000892: OF := 0 +00000895: CF := 0 +00000898: AF := unknown[bits]:u1 +0000089d: PF := + ~low:1[let $0 = #12582866 >> 4 ^ #12582866 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000008a1: SF := high:1[#12582866] +000008a5: ZF := 0 = #12582866 +000008ab: when ZF goto %000004ee +00000bd0: goto %000008af + +000004ee: +000004ff: #12582885 := mem[RSP, el]:u64 +00000503: RSP := RSP + 8 +00000506: call #12582885 with noreturn + +000008af: +000008b3: call RAX with noreturn + +00000b48: sub strlen(strlen_s, strlen_result) +00000beb: strlen_s :: in u64 = RDI +00000bec: strlen_result :: out u64 = RAX + +00000620: +000009c7: call @strlen:external with return %000009c9 + +000009c9: +000009d2: RSP := RSP - 8 +000009d7: mem := mem with [RSP, el]:u64 <- 2 +000009db: call @free@plt-0x10 with noreturn + +00000338: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000bed: __libc_start_main_main :: in u64 = RDI +00000bee: __libc_start_main_arg2 :: in u32 = low:32[RSI] +00000bef: __libc_start_main_arg3 :: in out u64 = RDX +00000bf0: __libc_start_main_auxv :: in out u64 = RCX +00000bf1: __libc_start_main_result :: out u32 = low:32[RAX] + +0000033d: sub intrinsic:hlt() + + +00000993: sub free:external(free:external_result) +00000bf2: free:external_result :: out u32 = low:32[RAX] + +000009ac: sub puts:external(puts:external_result) +00000bf3: puts:external_result :: out u32 = low:32[RAX] + +000009c5: sub strlen:external(strlen:external_result) +00000bf4: strlen:external_result :: out u32 = low:32[RAX] + +000009de: sub memset:external(memset:external_result) +00000bf5: memset:external_result :: out u32 = low:32[RAX] + +000009f7: sub memcpy:external(memcpy:external_result) +00000bf6: memcpy:external_result :: out u32 = low:32[RAX] + +00000a10: sub malloc:external(malloc:external_result) +00000bf7: malloc:external_result :: out u32 = low:32[RAX] + +00000b2c: sub __cxa_finalize:external(__cxa_finalize:external_result) +00000bf8: __cxa_finalize:external_result :: out u32 = low:32[RAX] diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf index b8d9040b4..9e6a9a178 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf @@ -1,144 +1,82 @@ -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: +Relocation section '.rela.dyn' at offset 0x600 contains 8 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 -000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 +0000000000003dd0 0000000000000008 R_X86_64_RELATIVE 1180 +0000000000003dd8 0000000000000008 R_X86_64_RELATIVE 1140 +0000000000004038 0000000000000008 R_X86_64_RELATIVE 4038 +0000000000003fc0 0000000200000006 R_X86_64_GLOB_DAT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000003fc8 0000000300000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +0000000000003fd0 0000000700000006 R_X86_64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +0000000000003fd8 0000000a00000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 +0000000000003fe0 0000000b00000006 R_X86_64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.2.5 + 0 -Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: +Relocation section '.rela.plt' at offset 0x6c0 contains 6 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 +0000000000004000 0000000100000007 R_X86_64_JUMP_SLOT 0000000000000000 free@GLIBC_2.2.5 + 0 +0000000000004008 0000000400000007 R_X86_64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.2.5 + 0 +0000000000004010 0000000500000007 R_X86_64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.2.5 + 0 +0000000000004018 0000000600000007 R_X86_64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.2.5 + 0 +0000000000004020 0000000800000007 R_X86_64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.14 + 0 +0000000000004028 0000000900000007 R_X86_64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.2.5 + 0 -Symbol table '.dynsym' contains 15 entries: +Symbol table '.dynsym' contains 12 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 + 1: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.2.5 (2) + 2: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 3: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.2.5 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.2.5 (2) + 6: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.2.5 (2) + 7: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.14 (4) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.2.5 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 11: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 (2) -Symbol table '.symtab' contains 99 entries: +Symbol table '.symtab' contains 44 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: 000000000000097c 0 SECTION LOCAL DEFAULT 14 .fini - 15: 0000000000000990 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 0000000000000994 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009d0 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 00000000000009e4 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 0000000000000990 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 000000000000097c 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 0000000000000988 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 00000000000009f8 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 - 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 - 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 - 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 - 59: 0000000000000a58 0 NOTYPE LOCAL DEFAULT 17 $d.4 - 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 61: 0000000000000a94 0 NOTYPE LOCAL DEFAULT 17 $d - 62: 0000000000000a94 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 65: 0000000000000994 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata - 77: 000000000000097c 0 FUNC GLOBAL HIDDEN 14 _fini - 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 86: 0000000000000990 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end - 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf - 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext - 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 95: 00000000000008d4 168 FUNC GLOBAL DEFAULT 13 main - 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init + 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 2: 000000000000037c 32 OBJECT LOCAL DEFAULT 4 __abi_tag + 3: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 4: 00000000000010d0 0 FUNC LOCAL DEFAULT 15 deregister_tm_clones + 5: 0000000000001100 0 FUNC LOCAL DEFAULT 15 register_tm_clones + 6: 0000000000001140 0 FUNC LOCAL DEFAULT 15 __do_global_dtors_aux + 7: 0000000000004050 1 OBJECT LOCAL DEFAULT 26 completed.0 + 8: 0000000000003dd8 0 OBJECT LOCAL DEFAULT 21 __do_global_dtors_aux_fini_array_entry + 9: 0000000000001180 0 FUNC LOCAL DEFAULT 15 frame_dummy + 10: 0000000000003dd0 0 OBJECT LOCAL DEFAULT 20 __frame_dummy_init_array_entry + 11: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 12: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 13: 00000000000020d8 0 OBJECT LOCAL DEFAULT 19 __FRAME_END__ + 14: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 15: 0000000000003de0 0 OBJECT LOCAL DEFAULT 22 _DYNAMIC + 16: 0000000000002004 0 NOTYPE LOCAL DEFAULT 18 __GNU_EH_FRAME_HDR + 17: 0000000000003fe8 0 OBJECT LOCAL DEFAULT 24 _GLOBAL_OFFSET_TABLE_ + 18: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.2.5 + 19: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 20: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 21: 0000000000004030 0 NOTYPE WEAK DEFAULT 25 data_start + 22: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.2.5 + 23: 000000000000404c 0 NOTYPE GLOBAL DEFAULT 25 _edata + 24: 000000000000123c 0 FUNC GLOBAL HIDDEN 16 _fini + 25: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.2.5 + 26: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.2.5 + 27: 0000000000004040 1 OBJECT GLOBAL DEFAULT 25 password + 28: 0000000000004030 0 NOTYPE GLOBAL DEFAULT 25 __data_start + 29: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 30: 0000000000004038 0 OBJECT GLOBAL HIDDEN 25 __dso_handle + 31: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.14 + 32: 0000000000002000 4 OBJECT GLOBAL DEFAULT 17 _IO_stdin_used + 33: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.2.5 + 34: 0000000000004060 0 NOTYPE GLOBAL DEFAULT 26 _end + 35: 00000000000010a0 34 FUNC GLOBAL DEFAULT 15 _start + 36: 0000000000004058 8 OBJECT GLOBAL DEFAULT 26 buf + 37: 0000000000004041 11 OBJECT GLOBAL DEFAULT 25 stext + 38: 000000000000404c 0 NOTYPE GLOBAL DEFAULT 26 __bss_start + 39: 0000000000001190 170 FUNC GLOBAL DEFAULT 15 main + 40: 0000000000004050 0 OBJECT GLOBAL HIDDEN 25 __TMC_END__ + 41: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 42: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 + 43: 0000000000001000 0 FUNC GLOBAL HIDDEN 12 _init diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/Makefile deleted file mode 100644 index 46de10ac0..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -CC=clang -CFLAGS=-target $(TARGET) -O2 - -include ../../../make/lift.mk - 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 index 82df9a672..fc9650154 100644 --- 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 @@ -67,674 +67,688 @@ Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), Annotation(Region(0x7C0,0x957), Attr("section","\".text\"")), Annotation(Region(0x7C0,0x957), Attr("code-region","()")), Annotation(Region(0x958,0x96B), Attr("code-region","()"))]), -Program(Tid(1_938, "%00000792"), Attrs([]), - Subs([Sub(Tid(1_910, "@__cxa_finalize"), +Program(Tid(2_126, "%0000084e"), Attrs([]), + Subs([Sub(Tid(2_055, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(1_939, "%00000793"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_127, "%0000084f"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_219, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_517, "%000005ed"), Attrs([Attr("address","0x740"), +Defs([Def(Tid(1_639, "%00000667"), Attrs([Attr("address","0x740"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_524, "%000005f4"), Attrs([Attr("address","0x744"), +Def(Tid(1_647, "%0000066f"), 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_530, "%000005fa"), Attrs([Attr("address","0x748"), +Def(Tid(1_654, "%00000676"), 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_535, "%000005ff"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_659, "%0000067b"), Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(1_911, "@__do_global_dtors_aux"), +Sub(Tid(2_056, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(1_940, "%00000794"), + "__do_global_dtors_aux", Args([Arg(Tid(2_128, "%00000850"), 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","0x880")]), Phis([]), Defs([Def(Tid(727, "%000002d7"), +Blks([Blk(Tid(758, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(765, "%000002fd"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(733, "%000002dd"), Attrs([Attr("address","0x880"), +Def(Tid(770, "%00000302"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(739, "%000002e3"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(775, "%00000307"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(749, "%000002ed"), +Var("#34",Imm(64))), Def(Tid(786, "%00000312"), Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(757, "%000002f5"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(794, "%0000031a"), Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x88C"), +Def(Tid(800, "%00000320"), Attrs([Attr("address","0x88C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(769, "%00000301"), Attrs([Attr("address","0x890"), +Def(Tid(809, "%00000329"), Attrs([Attr("address","0x890"), 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","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(773, "%00000305"))), -Goto(Tid(1_912, "%00000778"), Attrs([]), Int(1,1), -Direct(Tid(1_074, "%00000432")))])), Blk(Tid(1_074, "%00000432"), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), +Def(Tid(821, "%00000335"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(815, "%0000032f"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(813, "%0000032d"))), Goto(Tid(2_116, "%00000844"), Attrs([]), + Int(1,1), Direct(Tid(1_153, "%00000481")))])), Blk(Tid(1_153, "%00000481"), Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x898"), +Defs([Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x898"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x89C"), +Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x89C"), Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_090, "%00000442"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_088, "%00000440"))), Goto(Tid(1_913, "%00000779"), Attrs([]), - Int(1,1), Direct(Tid(1_113, "%00000459")))])), Blk(Tid(1_113, "%00000459"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(1_177, "%00000499"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), Var("#85",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_171, "%00000493"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Var("#85",Imm(1)), Direct(Tid(1_169, "%00000491"))), +Goto(Tid(2_117, "%00000845"), Attrs([]), Int(1,1), +Direct(Tid(1_201, "%000004b1")))])), Blk(Tid(1_201, "%000004b1"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x8A8"), Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_131, "%0000046b"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(1_910, "@__cxa_finalize")),Direct(Tid(1_088, "%00000440"))))])), -Blk(Tid(1_088, "%00000440"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x8B0"), +(Direct(Tid(2_055, "@__cxa_finalize")),Direct(Tid(1_169, "%00000491"))))])), +Blk(Tid(1_169, "%00000491"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(1_924, "@deregister_tm_clones")),Direct(Tid(1_100, "%0000044c"))))])), -Blk(Tid(1_100, "%0000044c"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_069, "@deregister_tm_clones")),Direct(Tid(1_186, "%000004a2"))))])), +Blk(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x8B4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x8B8"), 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(1_914, "%0000077a"), Attrs([]), Int(1,1), -Direct(Tid(773, "%00000305")))])), Blk(Tid(773, "%00000305"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(783, "%0000030f"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_118, "%00000846"), Attrs([]), Int(1,1), +Direct(Tid(813, "%0000032d")))])), Blk(Tid(813, "%0000032d"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(829, "%0000033d"), Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(790, "%00000316"), Attrs([Attr("address","0x8C0"), +Def(Tid(839, "%00000347"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(795, "%0000031b"), Attrs([Attr("address","0x8C0"), +Def(Tid(843, "%0000034b"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(799, "%0000031f"), Attrs([Attr("address","0x8C0"), +Def(Tid(846, "%0000034e"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(804, "%00000324"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(851, "%00000353"), Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_915, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_060, "@__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(1_941, "%00000795"), + Args([Arg(Tid(2_129, "%00000851"), 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_942, "%00000796"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_130, "%00000852"), 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_943, "%00000797"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_131, "%00000853"), 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_944, "%00000798"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_132, "%00000854"), 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_945, "%00000799"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_133, "%00000855"), 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"), +Out())]), Blks([Blk(Tid(570, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_495, "%000005d7"), Attrs([Attr("address","0x730"), +Defs([Def(Tid(1_614, "%0000064e"), Attrs([Attr("address","0x730"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_502, "%000005de"), Attrs([Attr("address","0x734"), +Def(Tid(1_622, "%00000656"), 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_508, "%000005e4"), Attrs([Attr("address","0x738"), +Def(Tid(1_629, "%0000065d"), 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_513, "%000005e9"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_634, "%00000662"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_916, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_061, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x958")]), - "_fini", Args([Arg(Tid(1_946, "%0000079a"), + "_fini", Args([Arg(Tid(2_134, "%00000856"), 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","0x958")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x958")]), Phis([]), Defs([Def(Tid(41, "%00000029"), Attrs([Attr("address","0x95C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x95C"), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x95C"), 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","0x95C"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x95C"), 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","0x95C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(55, "%00000037"), Attrs([Attr("address","0x95C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x960"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x960"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x964"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x964"), 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","0x964"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x964"), 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","0x964"), +Def(Tid(79, "%0000004f"), Attrs([Attr("address","0x964"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), Attrs([Attr("address","0x968"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_917, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_062, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(1_947, "%0000079b"), + "_init", Args([Arg(Tid(2_135, "%00000857"), 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_695, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_837, "@_init"), Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_701, "%000006a5"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#8",Imm(64)), +Defs([Def(Tid(1_846, "%00000736"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#116",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_707, "%000006ab"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_851, "%0000073b"), 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_713, "%000006b1"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),Var("#116",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_856, "%00000740"), 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_717, "%000006b5"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#116",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_860, "%00000744"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#8",Imm(64))), Def(Tid(1_723, "%000006bb"), +Var("#116",Imm(64))), Def(Tid(1_867, "%0000074b"), Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_728, "%000006c0"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_872, "%00000750"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_730, "%000006c2"), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_874, "%00000752"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(1_922, "@call_weak_fn")),Direct(Tid(1_732, "%000006c4"))))])), -Blk(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_737, "%000006c9"), Attrs([Attr("address","0x6E8"), +(Direct(Tid(2_067, "@call_weak_fn")),Direct(Tid(1_876, "%00000754"))))])), +Blk(Tid(1_876, "%00000754"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_884, "%0000075c"), 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_742, "%000006ce"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_888, "%00000760"), 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_746, "%000006d2"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_891, "%00000763"), 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_751, "%000006d7"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_896, "%00000768"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_918, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_063, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(1_948, "%0000079c"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_136, "%00000858"), 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","0x7C0")]), Phis([]), Defs([Def(Tid(498, "%000001f2"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(496, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(502, "%000001f6"), Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(503, "%000001f7"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(508, "%000001fc"), Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(509, "%000001fd"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(516, "%00000204"), Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(516, "%00000204"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(524, "%0000020c"), Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(522, "%0000020a"), Attrs([Attr("address","0x7D4"), +Def(Tid(531, "%00000213"), Attrs([Attr("address","0x7D4"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(528, "%00000210"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(538, "%0000021a"), Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(533, "%00000215"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(544, "%00000220"), Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(540, "%0000021c"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(552, "%00000228"), Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(545, "%00000221"), Attrs([Attr("address","0x7E4"), +Def(Tid(558, "%0000022e"), Attrs([Attr("address","0x7E4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(550, "%00000226"), Attrs([Attr("address","0x7E8"), +Def(Tid(564, "%00000234"), Attrs([Attr("address","0x7E8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(555, "%0000022b"), Attrs([Attr("address","0x7EC"), +Def(Tid(569, "%00000239"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(558, "%0000022e"), Attrs([Attr("address","0x7EC"), +Jmps([Call(Tid(572, "%0000023c"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(1_915, "@__libc_start_main")),Direct(Tid(560, "%00000230"))))])), -Blk(Tid(560, "%00000230"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(563, "%00000233"), Attrs([Attr("address","0x7F0"), +(Direct(Tid(2_060, "@__libc_start_main")),Direct(Tid(574, "%0000023e"))))])), +Blk(Tid(574, "%0000023e"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(577, "%00000241"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(566, "%00000236"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(580, "%00000244"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(1_921, "@abort")),Direct(Tid(1_919, "%0000077f"))))])), -Blk(Tid(1_919, "%0000077f"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(1_920, "%00000780"), Attrs([]), Int(1,1), -(Direct(Tid(1_922, "@call_weak_fn")),))]))])), Sub(Tid(1_921, "@abort"), +(Direct(Tid(2_066, "@abort")),Direct(Tid(2_119, "%00000847"))))])), +Blk(Tid(2_119, "%00000847"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_120, "%00000848"), Attrs([]), Int(1,1), +(Direct(Tid(2_067, "@call_weak_fn")),))]))])), Sub(Tid(2_066, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(564, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_605, "%00000645"), Attrs([Attr("address","0x780"), +Blks([Blk(Tid(578, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_739, "%000006cb"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_612, "%0000064c"), Attrs([Attr("address","0x784"), +Def(Tid(1_747, "%000006d3"), 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_618, "%00000652"), Attrs([Attr("address","0x788"), +Def(Tid(1_754, "%000006da"), 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_623, "%00000657"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_759, "%000006df"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_922, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_067, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(1_949, "%0000079d"), + "call_weak_fn", Args([Arg(Tid(2_137, "%00000859"), 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","0x7F4")]), Phis([]), Defs([Def(Tid(571, "%0000023b"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(582, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(586, "%0000024a"), Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(578, "%00000242"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(594, "%00000252"), Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(584, "%00000248"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(582, "%00000246"))), Goto(Tid(1_923, "%00000783"), Attrs([]), - Int(1,1), Direct(Tid(1_193, "%000004a9")))])), Blk(Tid(582, "%00000246"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(606, "%0000025e"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(600, "%00000258"), + Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(598, "%00000256"))), +Goto(Tid(2_121, "%00000849"), Attrs([]), Int(1,1), +Direct(Tid(1_301, "%00000515")))])), Blk(Tid(598, "%00000256"), Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(590, "%0000024e"), Attrs([Attr("address","0x804"), +Jmps([Call(Tid(611, "%00000263"), Attrs([Attr("address","0x804"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x800"), +Blk(Tid(1_301, "%00000515"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_304, "%00000518"), Attrs([Attr("address","0x800"), Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_194, "@__gmon_start__")))])), Blk(Tid(1_194, "@__gmon_start__"), +Direct(Tid(1_302, "@__gmon_start__")))])), Blk(Tid(1_302, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_583, "%0000062f"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_714, "%000006b2"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_590, "%00000636"), Attrs([Attr("address","0x774"), +Def(Tid(1_722, "%000006ba"), 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_596, "%0000063c"), Attrs([Attr("address","0x778"), +Def(Tid(1_729, "%000006c1"), 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_601, "%00000641"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_734, "%000006c6"), Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(1_924, "@deregister_tm_clones"), +Sub(Tid(2_069, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(1_950, "%0000079e"), + "deregister_tm_clones", Args([Arg(Tid(2_138, "%0000085a"), 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","0x810")]), Phis([]), Defs([Def(Tid(599, "%00000257"), +Blks([Blk(Tid(617, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(605, "%0000025d"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(628, "%00000274"), Attrs([Attr("address","0x814"), 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","0x818"), +Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x818"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(616, "%00000268"), Attrs([Attr("address","0x81C"), +Def(Tid(641, "%00000281"), Attrs([Attr("address","0x81C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(622, "%0000026e"), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(649, "%00000289"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(627, "%00000273"), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(656, "%00000290"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(633, "%00000279"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), -NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), -NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(643, "%00000283"), Attrs([Attr("address","0x820"), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(659, "%00000293"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(647, "%00000287"), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(662, "%00000296"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(653, "%0000028d"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(651, "%0000028b"))), Goto(Tid(1_925, "%00000785"), Attrs([]), - Int(1,1), Direct(Tid(1_163, "%0000048b")))])), Blk(Tid(1_163, "%0000048b"), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(676, "%000002a4"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(670, "%0000029e"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(668, "%0000029c"))), Goto(Tid(2_122, "%0000084a"), Attrs([]), + Int(1,1), Direct(Tid(1_262, "%000004ee")))])), Blk(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x828"), +Defs([Def(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x828"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x82C"), +Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x82C"), Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_178, "%0000049a"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(651, "%0000028b"))), Goto(Tid(1_926, "%00000786"), Attrs([]), - Int(1,1), Direct(Tid(1_182, "%0000049e")))])), Blk(Tid(651, "%0000028b"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), Var("#93",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_279, "%000004ff"), + Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Var("#93",Imm(1)), Direct(Tid(668, "%0000029c"))), +Goto(Tid(2_123, "%0000084b"), Attrs([]), Int(1,1), +Direct(Tid(1_288, "%00000508")))])), Blk(Tid(668, "%0000029c"), Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(659, "%00000293"), Attrs([Attr("address","0x83C"), +Jmps([Call(Tid(681, "%000002a9"), Attrs([Attr("address","0x83C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x834"), +Blk(Tid(1_288, "%00000508"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x834"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_299, "%00000513"), Attrs([Attr("address","0x838"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(1_927, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(1_951, "%0000079f"), +Sub(Tid(2_072, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_139, "%0000085b"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(857, "@frame_dummy"), Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(812, "%0000032c"), Attrs([Attr("address","0x8D0"), +Jmps([Call(Tid(859, "%0000035b"), Attrs([Attr("address","0x8D0"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(1_934, "@register_tm_clones")),))]))])), Sub(Tid(1_928, "@free"), +(Direct(Tid(2_079, "@register_tm_clones")),))]))])), Sub(Tid(2_073, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(1_952, "%000007a0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_140, "%0000085c"), 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","0x7A0")]), - Phis([]), Defs([Def(Tid(1_649, "%00000671"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_097, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_789, "%000006fd"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_656, "%00000678"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_797, "%00000705"), 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_662, "%0000067e"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_804, "%0000070c"), 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_667, "%00000683"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_809, "%00000711"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_929, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_074, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(1_953, "%000007a1"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_141, "%0000085d"), 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_954, "%000007a2"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_142, "%0000085e"), 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_955, "%000007a3"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_143, "%0000085f"), 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","0x8D4")]), Phis([]), Defs([Def(Tid(818, "%00000332"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(861, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(868, "%00000364"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(824, "%00000338"), Attrs([Attr("address","0x8D4"), +Def(Tid(873, "%00000369"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(830, "%0000033e"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(878, "%0000036e"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(834, "%00000342"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(882, "%00000372"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#4",Imm(64))), Def(Tid(842, "%0000034a"), +Var("#42",Imm(64))), Def(Tid(890, "%0000037a"), Attrs([Attr("address","0x8D8"), 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","0x8DC"), -Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#5",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(854, "%00000356"), +Def(Tid(898, "%00000382"), Attrs([Attr("address","0x8DC"), +Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#47",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(903, "%00000387"), Attrs([Attr("address","0x8DC"), 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","0x8DC"), +Store(Var("mem",Mem(64,8)),Var("#47",Imm(64)),Var("R20",Imm(64)),LittleEndian(),64)), +Def(Tid(908, "%0000038c"), Attrs([Attr("address","0x8DC"), 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","0x8E0"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#47",Imm(64)),Int(8,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(915, "%00000393"), Attrs([Attr("address","0x8E0"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(871, "%00000367"), Attrs([Attr("address","0x8E4"), +Def(Tid(922, "%0000039a"), Attrs([Attr("address","0x8E4"), Attr("insn","mov w0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x8E8"), +Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x8E8"), Attr("insn","bl #-0x198")]), Var("R30",Imm(64)), Int(2284,64))]), -Jmps([Call(Tid(879, "%0000036f"), Attrs([Attr("address","0x8E8"), +Jmps([Call(Tid(930, "%000003a2"), Attrs([Attr("address","0x8E8"), Attr("insn","bl #-0x198")]), Int(1,1), -(Direct(Tid(1_930, "@malloc")),Direct(Tid(881, "%00000371"))))])), -Blk(Tid(881, "%00000371"), Attrs([Attr("address","0x8EC")]), Phis([]), -Defs([Def(Tid(884, "%00000374"), Attrs([Attr("address","0x8EC"), +(Direct(Tid(2_075, "@malloc")),Direct(Tid(932, "%000003a4"))))])), +Blk(Tid(932, "%000003a4"), Attrs([Attr("address","0x8EC")]), Phis([]), +Defs([Def(Tid(936, "%000003a8"), Attrs([Attr("address","0x8EC"), Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), -Def(Tid(889, "%00000379"), Attrs([Attr("address","0x8F0"), +Def(Tid(942, "%000003ae"), Attrs([Attr("address","0x8F0"), Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), -Def(Tid(895, "%0000037f"), Attrs([Attr("address","0x8F4"), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8F4"), Attr("insn","add x20, x20, #0x61")]), Var("R20",Imm(64)), -PLUS(Var("R20",Imm(64)),Int(97,64))), Def(Tid(901, "%00000385"), +PLUS(Var("R20",Imm(64)),Int(97,64))), Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8F8"), Attr("insn","mov x19, x0")]), - Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(909, "%0000038d"), + Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x8FC"), 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","0x900"), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x900"), Attr("insn","mov x0, x20")]), Var("R0",Imm(64)), Var("R20",Imm(64))), -Def(Tid(920, "%00000398"), Attrs([Attr("address","0x904"), +Def(Tid(978, "%000003d2"), Attrs([Attr("address","0x904"), Attr("insn","bl #-0x1e4")]), Var("R30",Imm(64)), Int(2312,64))]), -Jmps([Call(Tid(923, "%0000039b"), Attrs([Attr("address","0x904"), +Jmps([Call(Tid(981, "%000003d5"), Attrs([Attr("address","0x904"), Attr("insn","bl #-0x1e4")]), Int(1,1), -(Direct(Tid(1_937, "@strlen")),Direct(Tid(925, "%0000039d"))))])), -Blk(Tid(925, "%0000039d"), Attrs([Attr("address","0x908")]), Phis([]), -Defs([Def(Tid(929, "%000003a1"), Attrs([Attr("address","0x908"), +(Direct(Tid(2_082, "@strlen")),Direct(Tid(983, "%000003d7"))))])), +Blk(Tid(983, "%000003d7"), Attrs([Attr("address","0x908")]), Phis([]), +Defs([Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x908"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x90C"), +Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x90C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x910"), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x910"), Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), -Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x914"), +Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2328,64))]), -Jmps([Call(Tid(949, "%000003b5"), Attrs([Attr("address","0x914"), +Jmps([Call(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x204")]), Int(1,1), -(Direct(Tid(1_931, "@memcpy")),Direct(Tid(951, "%000003b7"))))])), -Blk(Tid(951, "%000003b7"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(955, "%000003bb"), Attrs([Attr("address","0x918"), +(Direct(Tid(2_076, "@memcpy")),Direct(Tid(1_015, "%000003f7"))))])), +Blk(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x918"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x91C"), +Def(Tid(1_026, "%00000402"), Attrs([Attr("address","0x91C"), Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2336,64))]), -Jmps([Call(Tid(963, "%000003c3"), Attrs([Attr("address","0x91C"), +Jmps([Call(Tid(1_029, "%00000405"), Attrs([Attr("address","0x91C"), Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(1_933, "@puts")),Direct(Tid(965, "%000003c5"))))])), -Blk(Tid(965, "%000003c5"), Attrs([Attr("address","0x920")]), Phis([]), -Defs([Def(Tid(970, "%000003ca"), Attrs([Attr("address","0x920"), +(Direct(Tid(2_078, "@puts")),Direct(Tid(1_031, "%00000407"))))])), +Blk(Tid(1_031, "%00000407"), Attrs([Attr("address","0x920")]), Phis([]), +Defs([Def(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x920"), 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","0x924"), +Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x928"), +Def(Tid(1_050, "%0000041a"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x208")]), Var("R30",Imm(64)), Int(2348,64))]), -Jmps([Call(Tid(983, "%000003d7"), Attrs([Attr("address","0x928"), +Jmps([Call(Tid(1_052, "%0000041c"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x208")]), Int(1,1), -(Direct(Tid(1_937, "@strlen")),Direct(Tid(985, "%000003d9"))))])), -Blk(Tid(985, "%000003d9"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x92C"), +(Direct(Tid(2_082, "@strlen")),Direct(Tid(1_054, "%0000041e"))))])), +Blk(Tid(1_054, "%0000041e"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_060, "%00000424"), Attrs([Attr("address","0x92C"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x930"), +Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x930"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x934"), +Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x934"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x938"), +Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1d8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x938"), +Jmps([Call(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1d8")]), Int(1,1), -(Direct(Tid(1_932, "@memset")),Direct(Tid(1_010, "%000003f2"))))])), -Blk(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x93C"), +(Direct(Tid(2_077, "@memset")),Direct(Tid(1_085, "%0000043d"))))])), +Blk(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x93C"), 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","0x940"), +Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x940"), Attr("insn","bl #-0x1a0")]), Var("R30",Imm(64)), Int(2372,64))]), -Jmps([Call(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x940"), +Jmps([Call(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x940"), Attr("insn","bl #-0x1a0")]), Int(1,1), -(Direct(Tid(1_928, "@free")),Direct(Tid(1_025, "%00000401"))))])), -Blk(Tid(1_025, "%00000401"), Attrs([Attr("address","0x944")]), Phis([]), -Defs([Def(Tid(1_028, "%00000404"), Attrs([Attr("address","0x944"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x948"), -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","0x948"), 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","0x948"), +(Direct(Tid(2_073, "@free")),Direct(Tid(1_101, "%0000044d"))))])), +Blk(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x944")]), Phis([]), +Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x944"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), +Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x948"), +Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R20",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),LittleEndian(),64)), +Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x948"), 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","0x94C"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), +Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x94C"), 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","0x950"), +Def(Tid(1_139, "%00000473"), Attrs([Attr("address","0x950"), 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","0x950"), +Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x950"), 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","0x950"), +Def(Tid(1_146, "%0000047a"), Attrs([Attr("address","0x950"), 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"), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x954"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_930, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_075, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(1_956, "%000007a4"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_144, "%00000860"), 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(1_957, "%000007a5"), +Var("R0",Imm(64)), In()), Arg(Tid(2_145, "%00000861"), 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","0x750")]), Phis([]), -Defs([Def(Tid(1_539, "%00000603"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(928, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_664, "%00000680"), Attrs([Attr("address","0x750"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_546, "%0000060a"), Attrs([Attr("address","0x754"), +Def(Tid(1_672, "%00000688"), 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_552, "%00000610"), Attrs([Attr("address","0x758"), +Def(Tid(1_679, "%0000068f"), 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_557, "%00000615"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_684, "%00000694"), Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_931, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_076, "@memcpy"), Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), Attr("address","0x710"), Attr("stub","()")]), "memcpy", - Args([Arg(Tid(1_958, "%000007a6"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_146, "%00000862"), 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_959, "%000007a7"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_147, "%00000863"), 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_960, "%000007a8"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_148, "%00000864"), 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_961, "%000007a9"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_149, "%00000865"), 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","0x710")]), Phis([]), -Defs([Def(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_011, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_564, "%0000061c"), Attrs([Attr("address","0x710"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_458, "%000005b2"), Attrs([Attr("address","0x714"), +Def(Tid(1_572, "%00000624"), 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_464, "%000005b8"), Attrs([Attr("address","0x718"), +Def(Tid(1_579, "%0000062b"), Attrs([Attr("address","0x718"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_469, "%000005bd"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_584, "%00000630"), Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_932, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_077, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(1_962, "%000007aa"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_150, "%00000866"), 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(1_963, "%000007ab"), +Both()), Arg(Tid(2_151, "%00000867"), 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(1_964, "%000007ac"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_152, "%00000868"), 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(1_965, "%000007ad"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_153, "%00000869"), 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","0x760")]), Phis([]), -Defs([Def(Tid(1_561, "%00000619"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_081, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_689, "%00000699"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_568, "%00000620"), Attrs([Attr("address","0x764"), +Def(Tid(1_697, "%000006a1"), 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_574, "%00000626"), Attrs([Attr("address","0x768"), +Def(Tid(1_704, "%000006a8"), 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_579, "%0000062b"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_709, "%000006ad"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_933, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_078, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(1_966, "%000007ae"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_154, "%0000086a"), 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(1_967, "%000007af"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_155, "%0000086b"), 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","0x790")]), Phis([]), -Defs([Def(Tid(1_627, "%0000065b"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_027, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_764, "%000006e4"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_634, "%00000662"), Attrs([Attr("address","0x794"), +Def(Tid(1_772, "%000006ec"), 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_640, "%00000668"), Attrs([Attr("address","0x798"), +Def(Tid(1_779, "%000006f3"), 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_645, "%0000066d"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_784, "%000006f8"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(1_934, "@register_tm_clones"), +Sub(Tid(2_079, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(1_968, "%000007b0"), + "register_tm_clones", Args([Arg(Tid(2_156, "%0000086c"), 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","0x840")]), - Phis([]), Defs([Def(Tid(664, "%00000298"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(683, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(687, "%000002af"), Attrs([Attr("address","0x840"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x844"), +Def(Tid(694, "%000002b6"), Attrs([Attr("address","0x844"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(675, "%000002a3"), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x84C"), 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","0x850"), +Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x850"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(694, "%000002b6"), Attrs([Attr("address","0x854"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x858"), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(722, "%000002d2"), + Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(730, "%000002da"), Attrs([Attr("address","0x858"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x85C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(737, "%000002e1"), Attrs([Attr("address","0x85C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(713, "%000002c9"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(711, "%000002c7"))), Goto(Tid(1_935, "%0000078f"), Attrs([]), - Int(1,1), Direct(Tid(1_133, "%0000046d")))])), Blk(Tid(1_133, "%0000046d"), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(749, "%000002ed"), + Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(743, "%000002e7"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(741, "%000002e5"))), Goto(Tid(2_124, "%0000084c"), Attrs([]), + Int(1,1), Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_136, "%00000470"), Attrs([Attr("address","0x864"), +Defs([Def(Tid(1_227, "%000004cb"), Attrs([Attr("address","0x864"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x868"), +Def(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x868"), Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(711, "%000002c7"))), Goto(Tid(1_936, "%00000790"), Attrs([]), - Int(1,1), Direct(Tid(1_152, "%00000480")))])), Blk(Tid(711, "%000002c7"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), +Def(Tid(1_246, "%000004de"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), Var("#88",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_240, "%000004d8"), + Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Var("#88",Imm(1)), Direct(Tid(741, "%000002e5"))), +Goto(Tid(2_125, "%0000084d"), Attrs([]), Int(1,1), +Direct(Tid(1_249, "%000004e1")))])), Blk(Tid(741, "%000002e5"), Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(719, "%000002cf"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(754, "%000002f2"), Attrs([Attr("address","0x878"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_152, "%00000480"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x870"), +Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x870"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_161, "%00000489"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_260, "%000004ec"), Attrs([Attr("address","0x874"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(1_937, "@strlen"), +Sub(Tid(2_082, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(1_969, "%000007b1"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_157, "%0000086d"), 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(1_970, "%000007b2"), +In()), Arg(Tid(2_158, "%0000086e"), 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"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(979, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_473, "%000005c1"), Attrs([Attr("address","0x720"), +Defs([Def(Tid(1_589, "%00000635"), Attrs([Attr("address","0x720"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_480, "%000005c8"), Attrs([Attr("address","0x724"), +Def(Tid(1_597, "%0000063d"), 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_486, "%000005ce"), Attrs([Attr("address","0x728"), +Def(Tid(1_604, "%00000644"), 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_491, "%000005d3"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_609, "%00000649"), 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/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 index 7a2981d48..9148a7ae9 100644 --- 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 @@ -1,348 +1,355 @@ -00000792: program -00000776: sub __cxa_finalize(__cxa_finalize_result) -00000793: __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 - -00000777: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000794: __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 -00000778: goto %00000432 - -00000432: -00000435: R0 := 0x1F000 -0000043c: R0 := mem[R0 + 0xFC8, el]:u64 -00000442: when R0 = 0 goto %00000440 -00000779: goto %00000459 - -00000459: -0000045c: R0 := 0x20000 -00000463: R0 := mem[R0 + 0x58, el]:u64 -00000468: R30 := 0x8B0 -0000046b: call @__cxa_finalize with return %00000440 - -00000440: -00000448: R30 := 0x8B4 -0000044a: call @deregister_tm_clones with return %0000044c - -0000044c: -0000044f: R0 := 1 -00000457: mem := mem with [R19 + 0x70] <- 7:0[R0] -0000077a: 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 - -0000077b: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000795: __libc_start_main_main :: in u64 = R0 -00000796: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000797: __libc_start_main_arg3 :: in out u64 = R2 -00000798: __libc_start_main_auxv :: in out u64 = R3 -00000799: __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 - -0000077c: sub _fini(_fini_result) -0000079a: _fini_result :: out u32 = low:32[R0] +0000084e: program +00000807: sub __cxa_finalize(__cxa_finalize_result) +0000084f: __cxa_finalize_result :: out u32 = low:32[R0] + +000004c3: +00000667: R16 := 0x20000 +0000066f: R17 := mem[R16 + 0x18, el]:u64 +00000676: R16 := R16 + 0x18 +0000067b: call R17 with noreturn + +00000808: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000850: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002f6: +000002fd: #34 := R31 - 0x20 +00000302: mem := mem with [#34, el]:u64 <- R29 +00000307: mem := mem with [#34 + 8, el]:u64 <- R30 +0000030b: R31 := #34 +00000312: R29 := R31 +0000031a: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000320: R19 := 0x20000 +00000329: R0 := pad:32[mem[R19 + 0x70]] +00000335: #36 := ~~0:0[R0] +0000032f: when #36 goto %0000032d +00000844: goto %00000481 + +00000481: +00000485: R0 := 0x1F000 +0000048d: R0 := mem[R0 + 0xFC8, el]:u64 +00000499: #85 := R0 = 0 +00000493: when #85 goto %00000491 +00000845: goto %000004b1 + +000004b1: +000004b5: R0 := 0x20000 +000004bd: R0 := mem[R0 + 0x58, el]:u64 +000004c2: R30 := 0x8B0 +000004c5: call @__cxa_finalize with return %00000491 + +00000491: +0000049e: R30 := 0x8B4 +000004a0: call @deregister_tm_clones with return %000004a2 + +000004a2: +000004a7: R0 := 1 +000004af: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] +00000846: goto %0000032d + +0000032d: +0000033d: R19 := mem[R31 + 0x10, el]:u64 +00000347: R29 := mem[R31, el]:u64 +0000034b: R30 := mem[R31 + 8, el]:u64 +0000034e: R31 := R31 + 0x20 +00000353: call R30 with noreturn + +0000080c: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000851: __libc_start_main_main :: in u64 = R0 +00000852: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000853: __libc_start_main_arg3 :: in out u64 = R2 +00000854: __libc_start_main_auxv :: in out u64 = R3 +00000855: __libc_start_main_result :: out u32 = low:32[R0] + +0000023a: +0000064e: R16 := 0x20000 +00000656: R17 := mem[R16 + 0x10, el]:u64 +0000065d: R16 := R16 + 0x10 +00000662: call R17 with noreturn + +0000080d: sub _fini(_fini_result) +00000856: _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 - -0000077d: sub _init(_init_result) -0000079b: _init_result :: out u32 = low:32[R0] - -0000069f: -000006a5: #8 := R31 - 0x10 -000006ab: mem := mem with [#8, el]:u64 <- R29 -000006b1: mem := mem with [#8 + 8, el]:u64 <- R30 -000006b5: R31 := #8 -000006bb: R29 := R31 -000006c0: R30 := 0x6E8 -000006c2: call @call_weak_fn with return %000006c4 - -000006c4: -000006c9: R29 := mem[R31, el]:u64 -000006ce: R30 := mem[R31 + 8, el]:u64 -000006d2: R31 := R31 + 0x10 -000006d7: call R30 with noreturn - -0000077e: sub _start(_start_result) -0000079c: _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 := 0x7F0 -0000022e: call @__libc_start_main with return %00000230 - -00000230: -00000233: R30 := 0x7F4 -00000236: call @abort with return %0000077f - -0000077f: -00000780: call @call_weak_fn with noreturn - -00000781: sub abort() - - -00000234: -00000645: R16 := 0x20000 -0000064c: R17 := mem[R16 + 0x38, el]:u64 -00000652: R16 := R16 + 0x38 -00000657: call R17 with noreturn - -00000782: sub call_weak_fn(call_weak_fn_result) -0000079d: 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 -00000783: goto %000004a9 +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +0000080e: sub _init(_init_result) +00000857: _init_result :: out u32 = low:32[R0] + +0000072d: +00000736: #116 := R31 - 0x10 +0000073b: mem := mem with [#116, el]:u64 <- R29 +00000740: mem := mem with [#116 + 8, el]:u64 <- R30 +00000744: R31 := #116 +0000074b: R29 := R31 +00000750: R30 := 0x6E8 +00000752: call @call_weak_fn with return %00000754 + +00000754: +0000075c: R29 := mem[R31, el]:u64 +00000760: R30 := mem[R31 + 8, el]:u64 +00000763: R31 := R31 + 0x10 +00000768: call R30 with noreturn + +0000080f: sub _start(_start_result) +00000858: _start_result :: out u32 = low:32[R0] + +000001f0: +000001f6: R29 := 0 +000001fc: R30 := 0 +00000204: R5 := R0 +0000020c: R1 := mem[R31, el]:u64 +00000213: R2 := R31 + 8 +0000021a: R6 := R31 +00000220: R0 := 0x1F000 +00000228: R0 := mem[R0 + 0xFD8, el]:u64 +0000022e: R3 := 0 +00000234: R4 := 0 +00000239: R30 := 0x7F0 +0000023c: call @__libc_start_main with return %0000023e + +0000023e: +00000241: R30 := 0x7F4 +00000244: call @abort with return %00000847 + +00000847: +00000848: call @call_weak_fn with noreturn + +00000812: sub abort() + + +00000242: +000006cb: R16 := 0x20000 +000006d3: R17 := mem[R16 + 0x38, el]:u64 +000006da: R16 := R16 + 0x38 +000006df: call R17 with noreturn + +00000813: sub call_weak_fn(call_weak_fn_result) +00000859: call_weak_fn_result :: out u32 = low:32[R0] 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 - -00000784: sub deregister_tm_clones(deregister_tm_clones_result) -0000079e: 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 -00000785: goto %0000048b - -0000048b: -0000048e: R1 := 0x1F000 -00000495: R1 := mem[R1 + 0xFC0, el]:u64 -0000049a: when R1 = 0 goto %0000028b -00000786: goto %0000049e - -0000028b: -00000293: call R30 with noreturn - -0000049e: -000004a2: R16 := R1 -000004a7: call R16 with noreturn - -00000787: sub frame_dummy(frame_dummy_result) -0000079f: frame_dummy_result :: out u32 = low:32[R0] - -0000032a: -0000032c: call @register_tm_clones with noreturn - -00000788: sub free(free_ptr) -000007a0: 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 - -00000789: sub main(main_argc, main_argv, main_result) -000007a1: main_argc :: in u32 = low:32[R0] -000007a2: main_argv :: in out u64 = R1 -000007a3: 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 := 0x8EC -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 := 0x908 -0000039b: call @strlen with return %0000039d - -0000039d: -000003a1: R2 := R0 -000003a7: R0 := R19 -000003ad: R1 := R20 -000003b2: R30 := 0x918 -000003b5: call @memcpy with return %000003b7 - -000003b7: -000003bb: R0 := R19 -000003c0: R30 := 0x920 -000003c3: call @puts with return %000003c5 - -000003c5: -000003ca: R19 := mem[R21 + 0x78, el]:u64 -000003d0: R0 := R19 -000003d5: R30 := 0x92C -000003d7: call @strlen with return %000003d9 - -000003d9: +0000024a: R0 := 0x1F000 +00000252: R0 := mem[R0 + 0xFD0, el]:u64 +0000025e: #12 := R0 = 0 +00000258: when #12 goto %00000256 +00000849: goto %00000515 + +00000256: +00000263: call R30 with noreturn + +00000515: +00000518: goto @__gmon_start__ + +00000516: +000006b2: R16 := 0x20000 +000006ba: R17 := mem[R16 + 0x30, el]:u64 +000006c1: R16 := R16 + 0x30 +000006c6: call R17 with noreturn + +00000815: sub deregister_tm_clones(deregister_tm_clones_result) +0000085a: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000269: +0000026d: R0 := 0x20000 +00000274: R0 := R0 + 0x70 +0000027a: R1 := 0x20000 +00000281: R1 := R1 + 0x70 +00000289: #16 := 1 + ~R0 + R1 +0000028d: NF := 63:63[#16] +00000290: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +00000293: ZF := #16 = 0 +00000296: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002a4: #21 := ZF +0000029e: when #21 goto %0000029c +0000084a: goto %000004ee + +000004ee: +000004f2: R1 := 0x1F000 +000004fa: R1 := mem[R1 + 0xFC0, el]:u64 +00000505: #93 := R1 = 0 +000004ff: when #93 goto %0000029c +0000084b: goto %00000508 + +0000029c: +000002a9: call R30 with noreturn + +00000508: +0000050e: R16 := R1 +00000513: call R16 with noreturn + +00000818: sub frame_dummy(frame_dummy_result) +0000085b: frame_dummy_result :: out u32 = low:32[R0] + +00000359: +0000035b: call @register_tm_clones with noreturn + +00000819: sub free(free_ptr) +0000085c: free_ptr :: in out u64 = R0 + +00000449: +000006fd: R16 := 0x20000 +00000705: R17 := mem[R16 + 0x48, el]:u64 +0000070c: R16 := R16 + 0x48 +00000711: call R17 with noreturn + +0000081a: sub main(main_argc, main_argv, main_result) +0000085d: main_argc :: in u32 = low:32[R0] +0000085e: main_argv :: in out u64 = R1 +0000085f: main_result :: out u32 = low:32[R0] + +0000035d: +00000364: #42 := R31 - 0x30 +00000369: mem := mem with [#42, el]:u64 <- R29 +0000036e: mem := mem with [#42 + 8, el]:u64 <- R30 +00000372: R31 := #42 +0000037a: mem := mem with [R31 + 0x10, el]:u64 <- R21 +00000382: #47 := R31 + 0x20 +00000387: mem := mem with [#47, el]:u64 <- R20 +0000038c: mem := mem with [#47 + 8, el]:u64 <- R19 +00000393: R29 := R31 +0000039a: R0 := 0xB +0000039f: R30 := 0x8EC +000003a2: call @malloc with return %000003a4 + +000003a4: +000003a8: R21 := 0x20000 +000003ae: R20 := 0x20000 +000003b5: R20 := R20 + 0x61 +000003bd: R19 := R0 +000003c5: mem := mem with [R21 + 0x78, el]:u64 <- R0 +000003cd: R0 := R20 +000003d2: R30 := 0x908 +000003d5: call @strlen with return %000003d7 + +000003d7: 000003dd: R2 := R0 -000003e3: R0 := R19 -000003e8: R1 := 1 -000003ed: R30 := 0x93C -000003f0: call @memset with return %000003f2 - -000003f2: -000003f7: R0 := mem[R21 + 0x78, el]:u64 -000003fc: R30 := 0x944 -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 - -0000078a: sub malloc(malloc_size, malloc_result) -000007a4: malloc_size :: in u64 = R0 -000007a5: 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 - -0000078b: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000007a6: memcpy_dst :: in out u64 = R0 -000007a7: memcpy_src :: in out u64 = R1 -000007a8: memcpy_n :: in u64 = R2 -000007a9: memcpy_result :: out u64 = R0 - -000003b3: -000005ab: R16 := 0x20000 -000005b2: R17 := mem[R16, el]:u64 -000005b8: R16 := R16 -000005bd: call R17 with noreturn - -0000078c: sub memset(memset_buf, memset_c, memset_n, memset_result) -000007aa: memset_buf :: in out u64 = R0 -000007ab: memset_c :: in u32 = low:32[R1] -000007ac: memset_n :: in u64 = R2 -000007ad: 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 - -0000078d: sub puts(puts_s, puts_result) -000007ae: puts_s :: in u64 = R0 -000007af: 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 - -0000078e: sub register_tm_clones(register_tm_clones_result) -000007b0: 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 -0000078f: goto %0000046d - -0000046d: -00000470: R2 := 0x1F000 -00000477: R2 := mem[R2 + 0xFE0, el]:u64 -0000047c: when R2 = 0 goto %000002c7 -00000790: goto %00000480 - -000002c7: -000002cf: call R30 with noreturn - -00000480: -00000484: R16 := R2 -00000489: call R16 with noreturn - -00000791: sub strlen(strlen_s, strlen_result) -000007b1: strlen_s :: in u64 = R0 -000007b2: 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 +000003e5: R0 := R19 +000003ed: R1 := R20 +000003f2: R30 := 0x918 +000003f5: call @memcpy with return %000003f7 + +000003f7: +000003fd: R0 := R19 +00000402: R30 := 0x920 +00000405: call @puts with return %00000407 + +00000407: +0000040d: R19 := mem[R21 + 0x78, el]:u64 +00000415: R0 := R19 +0000041a: R30 := 0x92C +0000041c: call @strlen with return %0000041e + +0000041e: +00000424: R2 := R0 +0000042c: R0 := R19 +00000433: R1 := 1 +00000438: R30 := 0x93C +0000043b: call @memset with return %0000043d + +0000043d: +00000443: R0 := mem[R21 + 0x78, el]:u64 +00000448: R30 := 0x944 +0000044b: call @free with return %0000044d + +0000044d: +00000454: R0 := 0 +0000045d: R20 := mem[R31 + 0x20, el]:u64 +00000461: R19 := mem[R31 + 0x28, el]:u64 +00000469: R21 := mem[R31 + 0x10, el]:u64 +00000473: R29 := mem[R31, el]:u64 +00000477: R30 := mem[R31 + 8, el]:u64 +0000047a: R31 := R31 + 0x30 +0000047f: call R30 with noreturn + +0000081b: sub malloc(malloc_size, malloc_result) +00000860: malloc_size :: in u64 = R0 +00000861: malloc_result :: out u64 = R0 + +000003a0: +00000680: R16 := 0x20000 +00000688: R17 := mem[R16 + 0x20, el]:u64 +0000068f: R16 := R16 + 0x20 +00000694: call R17 with noreturn + +0000081c: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000862: memcpy_dst :: in out u64 = R0 +00000863: memcpy_src :: in out u64 = R1 +00000864: memcpy_n :: in u64 = R2 +00000865: memcpy_result :: out u64 = R0 + +000003f3: +0000061c: R16 := 0x20000 +00000624: R17 := mem[R16, el]:u64 +0000062b: R16 := R16 +00000630: call R17 with noreturn + +0000081d: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000866: memset_buf :: in out u64 = R0 +00000867: memset_c :: in u32 = low:32[R1] +00000868: memset_n :: in u64 = R2 +00000869: memset_result :: out u64 = R0 + +00000439: +00000699: R16 := 0x20000 +000006a1: R17 := mem[R16 + 0x28, el]:u64 +000006a8: R16 := R16 + 0x28 +000006ad: call R17 with noreturn + +0000081e: sub puts(puts_s, puts_result) +0000086a: puts_s :: in u64 = R0 +0000086b: puts_result :: out u32 = low:32[R0] + +00000403: +000006e4: R16 := 0x20000 +000006ec: R17 := mem[R16 + 0x40, el]:u64 +000006f3: R16 := R16 + 0x40 +000006f8: call R17 with noreturn + +0000081f: sub register_tm_clones(register_tm_clones_result) +0000086c: register_tm_clones_result :: out u32 = low:32[R0] + +000002ab: +000002af: R0 := 0x20000 +000002b6: R0 := R0 + 0x70 +000002bc: R1 := 0x20000 +000002c3: R1 := R1 + 0x70 +000002cb: R1 := R1 - R0 +000002d2: R2 := R1 >> 0x3F +000002da: R1 := R2 + (R1 ~>> 3) +000002e1: R1 := R1 >> 1 +000002ed: #30 := R1 = 0 +000002e7: when #30 goto %000002e5 +0000084c: goto %000004c7 + +000004c7: +000004cb: R2 := 0x1F000 +000004d3: R2 := mem[R2 + 0xFE0, el]:u64 +000004de: #88 := R2 = 0 +000004d8: when #88 goto %000002e5 +0000084d: goto %000004e1 + +000002e5: +000002f2: call R30 with noreturn + +000004e1: +000004e7: R16 := R2 +000004ec: call R16 with noreturn + +00000822: sub strlen(strlen_s, strlen_result) +0000086d: strlen_s :: in u64 = R0 +0000086e: strlen_result :: out u64 = R0 + +000003d3: +00000635: R16 := 0x20000 +0000063d: R17 := mem[R16 + 8, el]:u64 +00000644: R16 := R16 + 8 +00000649: 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 deleted file mode 100644 index b55cad018..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected +++ /dev/null @@ -1,812 +0,0 @@ -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, 2412bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 2414bv64) == 2bv8); - free requires (memory_load8_le(mem, 2415bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 2414bv64) == 2bv8); - free requires (memory_load8_le(mem, 2415bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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 := 2284bv64, 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 := 2312bv64, 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 := 2328bv64, true; - call memcpy(); - goto l000003b7; - l000003b7: - assume {:captureState "l000003b7"} true; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2336bv64, 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 := 2348bv64, 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 := 2364bv64, 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 := 2372bv64, 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, 2412bv64) == 1bv8); - free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 2414bv64) == 2bv8); - free requires (memory_load8_le(mem, 2415bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 2414bv64) == 2bv8); - free requires (memory_load8_le(mem, 2415bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 2414bv64) == 2bv8); - free requires (memory_load8_le(mem, 2415bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 2414bv64) == 2bv8); - free requires (memory_load8_le(mem, 2415bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 2414bv64) == 2bv8); - free requires (memory_load8_le(mem, 2415bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2412bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2414bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2415bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..a5fe0545d --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,773 @@ +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 2428 20 2428)\n(code-region 1984 444 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 168)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2428 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2428 20)\n(llvm:code-entry .text 1984 444)\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 2452 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 2712)\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 2452 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 2712)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2512 200 2512)\n(llvm:section-entry .eh_frame_hdr 2452 60 2452)\n(llvm:section-entry .rodata 2448 4 2448)\n(llvm:section-entry .fini 2428 20 2428)\n(llvm:section-entry .text 1984 444 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 168 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2428 0 2428 2428)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2712 0)\n(mapped 130504 676 64968)\n(named-region 0 2712 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 444 .text)\n(named-region 2428 20 .fini)\n(named-region 2448 4 .rodata)\n(named-region 2452 60 .eh_frame_hdr)\n(named-region 2512 200 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2428 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 444)\n(section 2428 20)\n(section 2448 4)\n(section 2452 60)\n(section 2512 200)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2712 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 168 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2428 2428)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\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"), +Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x97C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x990, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x994, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x2c\xfe\xff\xff\x50\x00\x00\x00\x7c\xfe\xff\xff\x64\x00\x00\x00\xac\xfe\xff\xff\x78\x00\x00\x00\xec\xfe\xff\xff\x8c\x00\x00\x00\x3c\xff\xff\xff\xb0\x00\x00\x00\x40\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0x9D0, "\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\xd4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x10\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x2c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x58\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\x84\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\x24\x00\x00\x00\x18\x00\x00\x00\x60\xfe\xff\xff\xa8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x90\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x75\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x81\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x8e\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xA97), Attr("segment","02 0 2712")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), +Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), +Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), +Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), +Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), +Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), +Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), +Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), +Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x97B), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x97B), Attr("symbol-info","main 0x8D4 168")), +Annotation(Region(0x97C,0x98F), Attr("section","\".fini\"")), +Annotation(Region(0x990,0x993), Attr("section","\".rodata\"")), +Annotation(Region(0x994,0x9CF), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9D0,0xA97), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x97B), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x97B), Attr("code-region","()")), +Annotation(Region(0x97C,0x98F), Attr("code-region","()"))]), +Program(Tid(2_215, "%000008a7"), Attrs([]), + Subs([Sub(Tid(2_144, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_216, "%000008a8"), + 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_299, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_727, "%000006bf"), 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_734, "%000006c6"), 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_739, "%000006cb"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_145, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_217, "%000008a9"), + 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(794, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(801, "%00000321"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(806, "%00000326"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#34",Imm(64))), Def(Tid(822, "%00000336"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(830, "%0000033e"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(836, "%00000344"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x890"), +Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), +Def(Tid(857, "%00000359"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(849, "%00000351"))), Goto(Tid(2_205, "%0000089d"), Attrs([]), + Int(1,1), Direct(Tid(1_233, "%000004d1")))])), Blk(Tid(1_233, "%000004d1"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_251, "%000004e3"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Var("#67",Imm(1)), Direct(Tid(1_249, "%000004e1"))), +Goto(Tid(2_206, "%0000089e"), Attrs([]), Int(1,1), +Direct(Tid(1_281, "%00000501")))])), Blk(Tid(1_281, "%00000501"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_293, "%0000050d"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_298, "%00000512"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_301, "%00000515"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_144, "@__cxa_finalize")),Direct(Tid(1_249, "%000004e1"))))])), +Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_158, "@deregister_tm_clones")),Direct(Tid(1_266, "%000004f2"))))])), +Blk(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x8B8"), +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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_207, "%0000089f"), Attrs([]), Int(1,1), +Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(865, "%00000361"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(875, "%0000036b"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(879, "%0000036f"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(882, "%00000372"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(887, "%00000377"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_149, "@__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_218, "%000008aa"), + 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_219, "%000008ab"), 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_220, "%000008ac"), 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_221, "%000008ad"), 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_222, "%000008ae"), 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(606, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_694, "%0000069e"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_702, "%000006a6"), 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_709, "%000006ad"), 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_714, "%000006b2"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_150, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x97C")]), + "_fini", Args([Arg(Tid(2_223, "%000008af"), + 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","0x97C")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x980"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x980"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x980"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x980"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x984"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x988"), +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(76, "%0000004c"), Attrs([Attr("address","0x988"), +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(79, "%0000004f"), Attrs([Attr("address","0x988"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0x98C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_151, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_224, "%000008b0"), + 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_917, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#98",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_931, "%0000078b"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#98",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_936, "%00000790"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#98",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_940, "%00000794"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#98",Imm(64))), Def(Tid(1_947, "%0000079b"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_952, "%000007a0"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_954, "%000007a2"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_156, "@call_weak_fn")),Direct(Tid(1_956, "%000007a4"))))])), +Blk(Tid(1_956, "%000007a4"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_964, "%000007ac"), 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_968, "%000007b0"), 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_971, "%000007b3"), 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_976, "%000007b8"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_152, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_225, "%000008b1"), + 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(532, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(538, "%0000021a"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(544, "%00000220"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(552, "%00000228"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(560, "%00000230"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(567, "%00000237"), Attrs([Attr("address","0x7D4"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(574, "%0000023e"), + Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(580, "%00000244"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(588, "%0000024c"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(594, "%00000252"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(600, "%00000258"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(605, "%0000025d"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(608, "%00000260"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_149, "@__libc_start_main")),Direct(Tid(610, "%00000262"))))])), +Blk(Tid(610, "%00000262"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(613, "%00000265"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_155, "@abort")),Direct(Tid(2_208, "%000008a0"))))])), +Blk(Tid(2_208, "%000008a0"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_209, "%000008a1"), Attrs([]), Int(1,1), +(Direct(Tid(2_156, "@call_weak_fn")),))]))])), Sub(Tid(2_155, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(614, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_827, "%00000723"), 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_834, "%0000072a"), 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_839, "%0000072f"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_156, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(2_226, "%000008b2"), + 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(618, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(622, "%0000026e"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(630, "%00000276"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(642, "%00000282"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(636, "%0000027c"), + Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(634, "%0000027a"))), +Goto(Tid(2_210, "%000008a2"), Attrs([]), Int(1,1), +Direct(Tid(1_381, "%00000565")))])), Blk(Tid(634, "%0000027a"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(647, "%00000287"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_381, "%00000565"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_384, "%00000568"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_382, "@__gmon_start__")))])), Blk(Tid(1_382, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_802, "%0000070a"), 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_809, "%00000711"), 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_814, "%00000716"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_158, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(2_227, "%000008b3"), + 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(653, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(657, "%00000291"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(664, "%00000298"), + Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(677, "%000002a5"), Attrs([Attr("address","0x81C"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(685, "%000002ad"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(689, "%000002b1"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(692, "%000002b4"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(698, "%000002ba"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(712, "%000002c8"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(706, "%000002c2"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(704, "%000002c0"))), Goto(Tid(2_211, "%000008a3"), Attrs([]), + Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(1_342, "%0000053e"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_346, "%00000542"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(1_365, "%00000555"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_359, "%0000054f"), + Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Var("#75",Imm(1)), Direct(Tid(704, "%000002c0"))), +Goto(Tid(2_212, "%000008a4"), Attrs([]), Int(1,1), +Direct(Tid(1_368, "%00000558")))])), Blk(Tid(704, "%000002c0"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(717, "%000002cd"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_368, "%00000558"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_374, "%0000055e"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_379, "%00000563"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_161, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_228, "%000008b4"), + 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(893, "@frame_dummy"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(895, "%0000037f"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_168, "@register_tm_clones")),))]))])), Sub(Tid(2_162, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_229, "%000008b5"), + 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_195, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_877, "%00000755"), 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_884, "%0000075c"), 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_889, "%00000761"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_163, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_230, "%000008b6"), + 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_231, "%000008b7"), + 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_232, "%000008b8"), + 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(897, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(902, "%00000386"), + Attrs([Attr("address","0x8D4"), Attr("insn","sub sp, sp, #0x40")]), + Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), +Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8D8"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(915, "%00000393"), + Attrs([Attr("address","0x8D8"), Attr("insn","stp x29, x30, [sp, #0x30]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(920, "%00000398"), Attrs([Attr("address","0x8D8"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x8DC"), +Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(935, "%000003a7"), + Attrs([Attr("address","0x8E0"), Attr("insn","stur xzr, [x29, #-0x8]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(943, "%000003af"), Attrs([Attr("address","0x8E4"), +Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8E8"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(957, "%000003bd"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_164, "@malloc")),Direct(Tid(959, "%000003bf"))))])), +Blk(Tid(959, "%000003bf"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x8F0"), +Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), +Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x8F4"), +Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x8F8"), +Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x8FC"), +Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x900"), +Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x904"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x908"), +Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(1_016, "%000003f8"), + Attrs([Attr("address","0x90C"), Attr("insn","str x0, [sp]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x910"), +Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2324,64))]), +Jmps([Call(Tid(1_024, "%00000400"), Attrs([Attr("address","0x910"), +Attr("insn","bl #-0x1f0")]), Int(1,1), +(Direct(Tid(2_171, "@strlen")),Direct(Tid(1_026, "%00000402"))))])), +Blk(Tid(1_026, "%00000402"), Attrs([Attr("address","0x914")]), Phis([]), +Defs([Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x914"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x918"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x91C"), +Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x920"), +Attr("insn","bl #-0x210")]), Var("R30",Imm(64)), Int(2340,64))]), +Jmps([Call(Tid(1_056, "%00000420"), Attrs([Attr("address","0x920"), +Attr("insn","bl #-0x210")]), Int(1,1), +(Direct(Tid(2_165, "@memcpy")),Direct(Tid(1_058, "%00000422"))))])), +Blk(Tid(1_058, "%00000422"), Attrs([Attr("address","0x924")]), Phis([]), +Defs([Def(Tid(1_064, "%00000428"), Attrs([Attr("address","0x924"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x928"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(1_080, "%00000438"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_167, "@puts")),Direct(Tid(1_082, "%0000043a"))))])), +Blk(Tid(1_082, "%0000043a"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x930"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x934"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x938"), +Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_111, "%00000457"), + Attrs([Attr("address","0x93C"), Attr("insn","stur x9, [x29, #-0x8]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x940"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x944"), +Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x948"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_140, "%00000474"), Attrs([Attr("address","0x94C"), +Attr("insn","bl #-0x22c")]), Var("R30",Imm(64)), Int(2384,64))]), +Jmps([Call(Tid(1_142, "%00000476"), Attrs([Attr("address","0x94C"), +Attr("insn","bl #-0x22c")]), Int(1,1), +(Direct(Tid(2_171, "@strlen")),Direct(Tid(1_144, "%00000478"))))])), +Blk(Tid(1_144, "%00000478"), Attrs([Attr("address","0x950")]), Phis([]), +Defs([Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x950"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_158, "%00000486"), Attrs([Attr("address","0x954"), +Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x958"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x1fc")]), Var("R30",Imm(64)), Int(2400,64))]), +Jmps([Call(Tid(1_173, "%00000495"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x1fc")]), Int(1,1), +(Direct(Tid(2_166, "@memset")),Direct(Tid(1_175, "%00000497"))))])), +Blk(Tid(1_175, "%00000497"), Attrs([Attr("address","0x960")]), Phis([]), +Defs([Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x960"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x964"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x1c8")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x1c8")]), Int(1,1), +(Direct(Tid(2_162, "@free")),Direct(Tid(1_199, "%000004af"))))])), +Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x96C"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), +Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x970"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), +Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x970"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), +Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x974"), +Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_231, "%000004cf"), + Attrs([Attr("address","0x978"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_164, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_233, "%000008b9"), 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_234, "%000008ba"), + 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(955, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_752, "%000006d8"), 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_759, "%000006df"), 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_764, "%000006e4"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_165, "@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_235, "%000008bb"), 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_236, "%000008bc"), + 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_237, "%000008bd"), 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_238, "%000008be"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_054, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_652, "%00000674"), 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_659, "%0000067b"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_664, "%00000680"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_166, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_239, "%000008bf"), 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_240, "%000008c0"), + 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_241, "%000008c1"), + 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_242, "%000008c2"), 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_171, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_777, "%000006f1"), 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_784, "%000006f8"), 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_789, "%000006fd"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_167, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_243, "%000008c3"), 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_244, "%000008c4"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_078, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_852, "%0000073c"), 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_859, "%00000743"), 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_864, "%00000748"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_168, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(2_245, "%000008c5"), + 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(719, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(730, "%000002da"), Attrs([Attr("address","0x844"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(736, "%000002e0"), + Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(743, "%000002e7"), + Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(758, "%000002f6"), + Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(766, "%000002fe"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(773, "%00000305"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(785, "%00000311"), + Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(779, "%0000030b"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(777, "%00000309"))), Goto(Tid(2_213, "%000008a5"), Attrs([]), + Int(1,1), Direct(Tid(1_303, "%00000517")))])), Blk(Tid(1_303, "%00000517"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_315, "%00000523"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), +Def(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_320, "%00000528"), + Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Var("#70",Imm(1)), Direct(Tid(777, "%00000309"))), +Goto(Tid(2_214, "%000008a6"), Attrs([]), Int(1,1), +Direct(Tid(1_329, "%00000531")))])), Blk(Tid(777, "%00000309"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(790, "%00000316"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_329, "%00000531"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_171, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_246, "%000008c6"), 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_247, "%000008c7"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_022, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_669, "%00000685"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_677, "%0000068d"), 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_684, "%00000694"), 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_689, "%00000699"), + 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/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..3d28f222f --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,359 @@ +000008a7: program +00000860: sub __cxa_finalize(__cxa_finalize_result) +000008a8: __cxa_finalize_result :: out u32 = low:32[R0] + +00000513: +000006b7: R16 := 0x20000 +000006bf: R17 := mem[R16 + 0x18, el]:u64 +000006c6: R16 := R16 + 0x18 +000006cb: call R17 with noreturn + +00000861: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008a9: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000031a: +00000321: #34 := R31 - 0x20 +00000326: mem := mem with [#34, el]:u64 <- R29 +0000032b: mem := mem with [#34 + 8, el]:u64 <- R30 +0000032f: R31 := #34 +00000336: R29 := R31 +0000033e: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000344: R19 := 0x20000 +0000034d: R0 := pad:32[mem[R19 + 0x70]] +00000359: #36 := ~~0:0[R0] +00000353: when #36 goto %00000351 +0000089d: goto %000004d1 + +000004d1: +000004d5: R0 := 0x1F000 +000004dd: R0 := mem[R0 + 0xFC8, el]:u64 +000004e9: #67 := R0 = 0 +000004e3: when #67 goto %000004e1 +0000089e: goto %00000501 + +00000501: +00000505: R0 := 0x20000 +0000050d: R0 := mem[R0 + 0x58, el]:u64 +00000512: R30 := 0x8B0 +00000515: call @__cxa_finalize with return %000004e1 + +000004e1: +000004ee: R30 := 0x8B4 +000004f0: call @deregister_tm_clones with return %000004f2 + +000004f2: +000004f7: R0 := 1 +000004ff: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] +0000089f: goto %00000351 + +00000351: +00000361: R19 := mem[R31 + 0x10, el]:u64 +0000036b: R29 := mem[R31, el]:u64 +0000036f: R30 := mem[R31 + 8, el]:u64 +00000372: R31 := R31 + 0x20 +00000377: call R30 with noreturn + +00000865: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008aa: __libc_start_main_main :: in u64 = R0 +000008ab: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008ac: __libc_start_main_arg3 :: in out u64 = R2 +000008ad: __libc_start_main_auxv :: in out u64 = R3 +000008ae: __libc_start_main_result :: out u32 = low:32[R0] + +0000025e: +0000069e: R16 := 0x20000 +000006a6: R17 := mem[R16 + 0x10, el]:u64 +000006ad: R16 := R16 + 0x10 +000006b2: call R17 with noreturn + +00000866: sub _fini(_fini_result) +000008af: _fini_result :: out u32 = low:32[R0] + +00000020: +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +00000867: sub _init(_init_result) +000008b0: _init_result :: out u32 = low:32[R0] + +0000077d: +00000786: #98 := R31 - 0x10 +0000078b: mem := mem with [#98, el]:u64 <- R29 +00000790: mem := mem with [#98 + 8, el]:u64 <- R30 +00000794: R31 := #98 +0000079b: R29 := R31 +000007a0: R30 := 0x6E8 +000007a2: call @call_weak_fn with return %000007a4 + +000007a4: +000007ac: R29 := mem[R31, el]:u64 +000007b0: R30 := mem[R31 + 8, el]:u64 +000007b3: R31 := R31 + 0x10 +000007b8: call R30 with noreturn + +00000868: sub _start(_start_result) +000008b1: _start_result :: out u32 = low:32[R0] + +00000214: +0000021a: R29 := 0 +00000220: R30 := 0 +00000228: R5 := R0 +00000230: R1 := mem[R31, el]:u64 +00000237: R2 := R31 + 8 +0000023e: R6 := R31 +00000244: R0 := 0x1F000 +0000024c: R0 := mem[R0 + 0xFD8, el]:u64 +00000252: R3 := 0 +00000258: R4 := 0 +0000025d: R30 := 0x7F0 +00000260: call @__libc_start_main with return %00000262 + +00000262: +00000265: R30 := 0x7F4 +00000268: call @abort with return %000008a0 + +000008a0: +000008a1: call @call_weak_fn with noreturn + +0000086b: sub abort() + + +00000266: +0000071b: R16 := 0x20000 +00000723: R17 := mem[R16 + 0x38, el]:u64 +0000072a: R16 := R16 + 0x38 +0000072f: call R17 with noreturn + +0000086c: sub call_weak_fn(call_weak_fn_result) +000008b2: call_weak_fn_result :: out u32 = low:32[R0] + +0000026a: +0000026e: R0 := 0x1F000 +00000276: R0 := mem[R0 + 0xFD0, el]:u64 +00000282: #12 := R0 = 0 +0000027c: when #12 goto %0000027a +000008a2: goto %00000565 + +0000027a: +00000287: call R30 with noreturn + +00000565: +00000568: goto @__gmon_start__ + +00000566: +00000702: R16 := 0x20000 +0000070a: R17 := mem[R16 + 0x30, el]:u64 +00000711: R16 := R16 + 0x30 +00000716: call R17 with noreturn + +0000086e: sub deregister_tm_clones(deregister_tm_clones_result) +000008b3: deregister_tm_clones_result :: out u32 = low:32[R0] + +0000028d: +00000291: R0 := 0x20000 +00000298: R0 := R0 + 0x70 +0000029e: R1 := 0x20000 +000002a5: R1 := R1 + 0x70 +000002ad: #16 := 1 + ~R0 + R1 +000002b1: NF := 63:63[#16] +000002b4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002b7: ZF := #16 = 0 +000002ba: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002c8: #21 := ZF +000002c2: when #21 goto %000002c0 +000008a3: goto %0000053e + +0000053e: +00000542: R1 := 0x1F000 +0000054a: R1 := mem[R1 + 0xFC0, el]:u64 +00000555: #75 := R1 = 0 +0000054f: when #75 goto %000002c0 +000008a4: goto %00000558 + +000002c0: +000002cd: call R30 with noreturn + +00000558: +0000055e: R16 := R1 +00000563: call R16 with noreturn + +00000871: sub frame_dummy(frame_dummy_result) +000008b4: frame_dummy_result :: out u32 = low:32[R0] + +0000037d: +0000037f: call @register_tm_clones with noreturn + +00000872: sub free(free_ptr) +000008b5: free_ptr :: in out u64 = R0 + +000004ab: +0000074d: R16 := 0x20000 +00000755: R17 := mem[R16 + 0x48, el]:u64 +0000075c: R16 := R16 + 0x48 +00000761: call R17 with noreturn + +00000873: sub main(main_argc, main_argv, main_result) +000008b6: main_argc :: in u32 = low:32[R0] +000008b7: main_argv :: in out u64 = R1 +000008b8: main_result :: out u32 = low:32[R0] + +00000381: +00000386: R31 := R31 - 0x40 +0000038e: #42 := R31 + 0x30 +00000393: mem := mem with [#42, el]:u64 <- R29 +00000398: mem := mem with [#42 + 8, el]:u64 <- R30 +0000039f: R29 := R31 + 0x30 +000003a7: mem := mem with [R29 - 8, el]:u64 <- 0 +000003af: mem := mem with [R29 - 0x10, el]:u64 <- 0 +000003b5: R0 := 0xB +000003ba: R30 := 0x8F0 +000003bd: call @malloc with return %000003bf + +000003bf: +000003c3: R8 := 0x20000 +000003cb: mem := mem with [R31 + 0x18, el]:u64 <- R8 +000003d3: mem := mem with [R8 + 0x78, el]:u64 <- R0 +000003db: R8 := mem[R8 + 0x78, el]:u64 +000003e3: mem := mem with [R31 + 8, el]:u64 <- R8 +000003e9: R0 := 0x20000 +000003f0: R0 := R0 + 0x61 +000003f8: mem := mem with [R31, el]:u64 <- R0 +000003fd: R30 := 0x914 +00000400: call @strlen with return %00000402 + +00000402: +00000408: R1 := mem[R31, el]:u64 +00000410: R2 := R0 +00000418: R0 := mem[R31 + 8, el]:u64 +0000041d: R30 := 0x924 +00000420: call @memcpy with return %00000422 + +00000422: +00000428: R8 := mem[R31 + 0x18, el]:u64 +00000430: R0 := mem[R8 + 0x78, el]:u64 +00000435: R30 := 0x930 +00000438: call @puts with return %0000043a + +0000043a: +00000440: R8 := mem[R31 + 0x18, el]:u64 +00000448: R9 := mem[R8 + 0x78, el]:u64 +0000044f: R9 := R9 + 4 +00000457: mem := mem with [R29 - 8, el]:u64 <- R9 +0000045f: R9 := mem[R8 + 0x78, el]:u64 +00000467: mem := mem with [R31 + 0x10, el]:u64 <- R9 +0000046f: R0 := mem[R8 + 0x78, el]:u64 +00000474: R30 := 0x950 +00000476: call @strlen with return %00000478 + +00000478: +0000047e: R2 := R0 +00000486: R0 := mem[R31 + 0x10, el]:u64 +0000048d: R1 := 1 +00000492: R30 := 0x960 +00000495: call @memset with return %00000497 + +00000497: +0000049d: R8 := mem[R31 + 0x18, el]:u64 +000004a5: R0 := mem[R8 + 0x78, el]:u64 +000004aa: R30 := 0x96C +000004ad: call @free with return %000004af + +000004af: +000004b6: R0 := 0 +000004bf: R29 := mem[R31 + 0x30, el]:u64 +000004c3: R30 := mem[R31 + 0x38, el]:u64 +000004ca: R31 := R31 + 0x40 +000004cf: call R30 with noreturn + +00000874: sub malloc(malloc_size, malloc_result) +000008b9: malloc_size :: in u64 = R0 +000008ba: malloc_result :: out u64 = R0 + +000003bb: +000006d0: R16 := 0x20000 +000006d8: R17 := mem[R16 + 0x20, el]:u64 +000006df: R16 := R16 + 0x20 +000006e4: call R17 with noreturn + +00000875: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008bb: memcpy_dst :: in out u64 = R0 +000008bc: memcpy_src :: in out u64 = R1 +000008bd: memcpy_n :: in u64 = R2 +000008be: memcpy_result :: out u64 = R0 + +0000041e: +0000066c: R16 := 0x20000 +00000674: R17 := mem[R16, el]:u64 +0000067b: R16 := R16 +00000680: call R17 with noreturn + +00000876: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008bf: memset_buf :: in out u64 = R0 +000008c0: memset_c :: in u32 = low:32[R1] +000008c1: memset_n :: in u64 = R2 +000008c2: memset_result :: out u64 = R0 + +00000493: +000006e9: R16 := 0x20000 +000006f1: R17 := mem[R16 + 0x28, el]:u64 +000006f8: R16 := R16 + 0x28 +000006fd: call R17 with noreturn + +00000877: sub puts(puts_s, puts_result) +000008c3: puts_s :: in u64 = R0 +000008c4: puts_result :: out u32 = low:32[R0] + +00000436: +00000734: R16 := 0x20000 +0000073c: R17 := mem[R16 + 0x40, el]:u64 +00000743: R16 := R16 + 0x40 +00000748: call R17 with noreturn + +00000878: sub register_tm_clones(register_tm_clones_result) +000008c5: register_tm_clones_result :: out u32 = low:32[R0] + +000002cf: +000002d3: R0 := 0x20000 +000002da: R0 := R0 + 0x70 +000002e0: R1 := 0x20000 +000002e7: R1 := R1 + 0x70 +000002ef: R1 := R1 - R0 +000002f6: R2 := R1 >> 0x3F +000002fe: R1 := R2 + (R1 ~>> 3) +00000305: R1 := R1 >> 1 +00000311: #30 := R1 = 0 +0000030b: when #30 goto %00000309 +000008a5: goto %00000517 + +00000517: +0000051b: R2 := 0x1F000 +00000523: R2 := mem[R2 + 0xFE0, el]:u64 +0000052e: #70 := R2 = 0 +00000528: when #70 goto %00000309 +000008a6: goto %00000531 + +00000309: +00000316: call R30 with noreturn + +00000531: +00000537: R16 := R2 +0000053c: call R16 with noreturn + +0000087b: sub strlen(strlen_s, strlen_result) +000008c6: strlen_s :: in u64 = R0 +000008c7: strlen_result :: out u64 = R0 + +000003fe: +00000685: R16 := 0x20000 +0000068d: R17 := mem[R16 + 8, el]:u64 +00000694: R16 := R16 + 8 +00000699: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..b8d9040b4 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,144 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 99 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: 000000000000097c 0 SECTION LOCAL DEFAULT 14 .fini + 15: 0000000000000990 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 0000000000000994 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009d0 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 00000000000009e4 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 0000000000000990 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 000000000000097c 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 0000000000000988 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 00000000000009f8 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 + 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 + 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 + 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 + 59: 0000000000000a58 0 NOTYPE LOCAL DEFAULT 17 $d.4 + 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 61: 0000000000000a94 0 NOTYPE LOCAL DEFAULT 17 $d + 62: 0000000000000a94 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 65: 0000000000000994 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata + 77: 000000000000097c 0 FUNC GLOBAL HIDDEN 14 _fini + 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 86: 0000000000000990 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end + 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf + 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext + 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 95: 00000000000008d4 168 FUNC GLOBAL DEFAULT 13 main + 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..df285eb3e --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,779 @@ +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 2500 20 2500)\n(code-region 2048 452 2048)\n(code-region 1824 192 1824)\n(code-region 1800 24 1800)\n(code-start 2100)\n(code-start 2048)\n(code-start 2324)\n(entry-point 2048)\n(external-reference 130992 _ITM_deregisterTMCloneTable)\n(external-reference 131000 __cxa_finalize)\n(external-reference 131008 __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 1800 0)\n(llvm:code-entry main 2324 176)\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 2500 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 2500 20)\n(llvm:code-entry .text 2048 452)\n(llvm:code-entry .plt 1824 192)\n(llvm:code-entry .init 1800 24)\n(llvm:elf-program-header 08 64952 584)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2524 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64968 480)\n(llvm:elf-program-header 03 64952 692)\n(llvm:elf-program-header 02 0 2784)\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 2524 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130504 480)\n(llvm:elf-virtual-program-header 03 130488 712)\n(llvm:elf-virtual-program-header 02 0 2784)\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 131008 __gmon_start__)\n(llvm:name-reference 131000 __cxa_finalize)\n(llvm:name-reference 130992 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 130984 64 65448)\n(llvm:section-entry .dynamic 130504 480 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 2584 200 2584)\n(llvm:section-entry .eh_frame_hdr 2524 60 2524)\n(llvm:section-entry .rodata 2520 4 2520)\n(llvm:section-entry .fini 2500 20 2500)\n(llvm:section-entry .text 2048 452 2048)\n(llvm:section-entry .plt 1824 192 1824)\n(llvm:section-entry .init 1800 24 1800)\n(llvm:section-entry .rela.plt 1560 240 1560)\n(llvm:section-entry .rela.dyn 1320 240 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 1800 0 1800 1800)\n(llvm:symbol-entry main 2324 176 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 2500 0 2500 2500)\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 2784 0)\n(mapped 130488 692 64952)\n(named-region 0 2784 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 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 240 .rela.dyn)\n(named-region 1560 240 .rela.plt)\n(named-region 1800 24 .init)\n(named-region 1824 192 .plt)\n(named-region 2048 452 .text)\n(named-region 2500 20 .fini)\n(named-region 2520 4 .rodata)\n(named-region 2524 60 .eh_frame_hdr)\n(named-region 2584 200 .eh_frame)\n(named-region 130488 8 .init_array)\n(named-region 130496 8 .fini_array)\n(named-region 130504 480 .dynamic)\n(named-region 130984 64 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 28 .data)\n(named-region 131184 16 .bss)\n(named-region 0 63 .comment)\n(named-region 0 2376 .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 2500 _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 1800 _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 240)\n(section 1560 240)\n(section 1800 24)\n(section 1824 192)\n(section 2048 452)\n(section 2500 20)\n(section 2520 4)\n(section 2524 60)\n(section 2584 200)\n(section 130488 8)\n(section 130496 8)\n(section 130504 480)\n(section 130984 64)\n(section 131048 104)\n(section 131152 28)\n(section 131184 16)\n(section 0 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2784 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 176 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 2500 2500)\n(symbol-value 2048 2048)\n(symbol-value 2324 2324)\n(symbol-value 1800 1800)\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\xc8\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xc8\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x8b\x6d\x5f\x3c\x12\xd3\x18\x02\x5c\xee\xe8\x90\xc3\x4b\x9a\x38\xce\x17\x9d\x68\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"), +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\xc8\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x8b\x6d\x5f\x3c\x12\xd3\x18\x02\x5c\xee\xe8\x90\xc3\x4b\x9a\x38\xce\x17\x9d\x68\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\x08\x07\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\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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\x48\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\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\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xe8\x00\x00\xf0\x08\xe5\x47\xf9\xe8\x0f\x00\xf9\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x92\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x00\xf9\x08\x01\x40\xf9"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\x8b\x6d\x5f\x3c\x12\xd3\x18\x02\x5c\xee\xe8\x90\xc3\x4b\x9a\x38\xce\x17\x9d\x68"), +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\x08\x07\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, "\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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", 0x618, "\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", 0x708, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x48\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x720, "\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", 0x9C4, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9D8, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9DC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x24\xfe\xff\xff\x50\x00\x00\x00\x74\xfe\xff\xff\x64\x00\x00\x00\xa4\xfe\xff\xff\x78\x00\x00\x00\xe4\xfe\xff\xff\x8c\x00\x00\x00\x34\xff\xff\xff\xb0\x00\x00\x00\x38\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0xA18, "\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\xcc\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x08\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x24\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x50\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\x7c\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\x24\x00\x00\x00\x18\x00\x00\x00\x58\xfe\xff\xff\xb0\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x98\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\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\x08\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xc4\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\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\x18\x06\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\xf0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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", 0x1FFA8, "\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\x78\x00\x02\x00\x00\x00\x00\x00\x61\x00\x02\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\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\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\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\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\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xe8\x00\x00\xf0\x08\xe5\x47\xf9\xe8\x0f\x00\xf9\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x92\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x00\xf9\x08\x01\x40\xf9\xe8\x07\x00\xf9\xe0\x00\x00\xf0\x00\xe8\x47\xf9\xe0\x03\x00\xf9\x7e\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x76\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x93\xff\xff\x97\xe8\x0f\x40\xf9\x09\x01\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x01\x40\xf9\xe9\x0b\x00\xf9\x00\x01\x40\xf9\x6f\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x7b\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x88\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xADF), Attr("segment","02 0 2784")), +Annotation(Region(0x800,0x833), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x3E), 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,0x617), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x618,0x707), Attr("section","\".rela.plt\"")), +Annotation(Region(0x708,0x71F), Attr("section","\".init\"")), +Annotation(Region(0x720,0x7DF), Attr("section","\".plt\"")), +Annotation(Region(0x708,0x71F), Attr("code-region","()")), +Annotation(Region(0x720,0x7DF), 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,0x9C3), Attr("symbol","\"main\"")), +Annotation(Region(0x914,0x9C3), Attr("symbol-info","main 0x914 176")), +Annotation(Region(0x9C4,0x9D7), Attr("section","\".fini\"")), +Annotation(Region(0x9D8,0x9DB), Attr("section","\".rodata\"")), +Annotation(Region(0x9DC,0xA17), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA18,0xADF), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDB8,0x2006B), Attr("segment","03 0x1FDB8 712")), +Annotation(Region(0x1FDC0,0x1FDC7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDC8,0x1FFA7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDB8,0x1FDBF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFA8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x800,0x9C3), Attr("section","\".text\"")), +Annotation(Region(0x800,0x9C3), Attr("code-region","()")), +Annotation(Region(0x9C4,0x9D7), Attr("code-region","()"))]), +Program(Tid(2_242, "%000008c2"), Attrs([]), + Subs([Sub(Tid(2_171, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x770"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_243, "%000008c3"), + 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_324, "@__cxa_finalize"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x774"), +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_759, "%000006df"), Attrs([Attr("address","0x778"), +Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_764, "%000006e4"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_172, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_244, "%000008c4"), + 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(802, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(809, "%00000329"), + Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(819, "%00000333"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(823, "%00000337"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#34",Imm(64))), Def(Tid(830, "%0000033e"), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(838, "%00000346"), + 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(844, "%0000034c"), Attrs([Attr("address","0x8CC"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(853, "%00000355"), Attrs([Attr("address","0x8D0"), +Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), +Def(Tid(865, "%00000361"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(859, "%0000035b"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(857, "%00000359"))), Goto(Tid(2_232, "%000008b8"), Attrs([]), + Int(1,1), Direct(Tid(1_258, "%000004ea")))])), Blk(Tid(1_258, "%000004ea"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8D8"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x8DC"), +Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64)), +Def(Tid(1_282, "%00000502"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), Var("#70",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_276, "%000004fc"), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), + Var("#70",Imm(1)), Direct(Tid(1_274, "%000004fa"))), +Goto(Tid(2_233, "%000008b9"), Attrs([]), Int(1,1), +Direct(Tid(1_306, "%0000051a")))])), Blk(Tid(1_306, "%0000051a"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x8E4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_318, "%00000526"), 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_323, "%0000052b"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x17c")]), Int(1,1), +(Direct(Tid(2_171, "@__cxa_finalize")),Direct(Tid(1_274, "%000004fa"))))])), +Blk(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_287, "%00000507"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_289, "%00000509"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_185, "@deregister_tm_clones")),Direct(Tid(1_291, "%0000050b"))))])), +Blk(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_296, "%00000510"), Attrs([Attr("address","0x8F4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_304, "%00000518"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_234, "%000008ba"), Attrs([]), Int(1,1), +Direct(Tid(857, "%00000359")))])), Blk(Tid(857, "%00000359"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(873, "%00000369"), + 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(883, "%00000373"), 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(887, "%00000377"), 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(890, "%0000037a"), 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(895, "%0000037f"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_176, "@__libc_start_main"), + Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), +Attr("address","0x760"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_245, "%000008c5"), + 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_246, "%000008c6"), 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_247, "%000008c7"), 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_248, "%000008c8"), 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_249, "%000008c9"), 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(614, "@__libc_start_main"), + Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x764"), +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_734, "%000006c6"), Attrs([Attr("address","0x768"), +Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_739, "%000006cb"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_177, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9C4")]), + "_fini", Args([Arg(Tid(2_250, "%000008ca"), + 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","0x9C4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9C8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9C8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9C8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9C8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9CC"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9D0"), +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(76, "%0000004c"), Attrs([Attr("address","0x9D0"), +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(79, "%0000004f"), Attrs([Attr("address","0x9D0"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0x9D4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_178, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x708")]), + "_init", Args([Arg(Tid(2_251, "%000008cb"), + 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_942, "@_init"), + Attrs([Attr("address","0x708")]), Phis([]), +Defs([Def(Tid(1_951, "%0000079f"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#101",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_956, "%000007a4"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#101",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_961, "%000007a9"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#101",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_965, "%000007ad"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#101",Imm(64))), Def(Tid(1_972, "%000007b4"), + Attrs([Attr("address","0x710"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_977, "%000007b9"), + Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), + Var("R30",Imm(64)), Int(1816,64))]), Jmps([Call(Tid(1_979, "%000007bb"), + Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), Int(1,1), +(Direct(Tid(2_183, "@call_weak_fn")),Direct(Tid(1_981, "%000007bd"))))])), +Blk(Tid(1_981, "%000007bd"), Attrs([Attr("address","0x718")]), Phis([]), +Defs([Def(Tid(1_989, "%000007c5"), Attrs([Attr("address","0x718"), +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_993, "%000007c9"), Attrs([Attr("address","0x718"), +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_996, "%000007cc"), Attrs([Attr("address","0x718"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_001, "%000007d1"), + Attrs([Attr("address","0x71C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_179, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_252, "%000008cc"), + 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(540, "@_start"), + Attrs([Attr("address","0x800")]), Phis([]), Defs([Def(Tid(546, "%00000222"), + Attrs([Attr("address","0x804"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(552, "%00000228"), + Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(560, "%00000230"), + Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(568, "%00000238"), + 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(575, "%0000023f"), Attrs([Attr("address","0x814"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(582, "%00000246"), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(588, "%0000024c"), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(596, "%00000254"), + 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(602, "%0000025a"), Attrs([Attr("address","0x824"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(608, "%00000260"), Attrs([Attr("address","0x828"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(613, "%00000265"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xcc")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xcc")]), Int(1,1), +(Direct(Tid(2_176, "@__libc_start_main")),Direct(Tid(618, "%0000026a"))))])), +Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x80")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x80")]), Int(1,1), +(Direct(Tid(2_182, "@abort")),Direct(Tid(2_235, "%000008bb"))))])), +Blk(Tid(2_235, "%000008bb"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_236, "%000008bc"), Attrs([]), Int(1,1), +(Direct(Tid(2_183, "@call_weak_fn")),))]))])), Sub(Tid(2_182, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x7B0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(622, "@abort"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x7B0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x7B4"), +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_859, "%00000743"), Attrs([Attr("address","0x7B8"), +Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_864, "%00000748"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_183, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_253, "%000008cd"), + 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(626, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(630, "%00000276"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(638, "%0000027e"), + Attrs([Attr("address","0x838"), Attr("insn","ldr x0, [x0, #0xfc0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(650, "%0000028a"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(644, "%00000284"), + Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(642, "%00000282"))), +Goto(Tid(2_237, "%000008bd"), Attrs([]), Int(1,1), +Direct(Tid(1_406, "%0000057e")))])), Blk(Tid(642, "%00000282"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(655, "%0000028f"), Attrs([Attr("address","0x844"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_406, "%0000057e"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_409, "%00000581"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0xa0")]), Int(1,1), +Direct(Tid(1_407, "@__gmon_start__")))])), Blk(Tid(1_407, "@__gmon_start__"), + Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x7A4"), +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_834, "%0000072a"), Attrs([Attr("address","0x7A8"), +Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_839, "%0000072f"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_185, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_254, "%000008ce"), + 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(661, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(665, "%00000299"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(672, "%000002a0"), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x858"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x85C"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(693, "%000002b5"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(700, "%000002bc"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(706, "%000002c2"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(714, "%000002ca"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(712, "%000002c8"))), Goto(Tid(2_238, "%000008be"), Attrs([]), + Int(1,1), Direct(Tid(1_367, "%00000557")))])), Blk(Tid(1_367, "%00000557"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x868"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_379, "%00000563"), Attrs([Attr("address","0x86C"), +Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64)), +Def(Tid(1_390, "%0000056e"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), Var("#78",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_384, "%00000568"), + Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), + Var("#78",Imm(1)), Direct(Tid(712, "%000002c8"))), +Goto(Tid(2_239, "%000008bf"), Attrs([]), Int(1,1), +Direct(Tid(1_393, "%00000571")))])), Blk(Tid(712, "%000002c8"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(725, "%000002d5"), Attrs([Attr("address","0x87C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_393, "%00000571"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_399, "%00000577"), Attrs([Attr("address","0x874"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_404, "%0000057c"), Attrs([Attr("address","0x878"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_188, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_255, "%000008cf"), + 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(901, "@frame_dummy"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(903, "%00000387"), Attrs([Attr("address","0x910"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_195, "@register_tm_clones")),))]))])), Sub(Tid(2_189, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7D0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_256, "%000008d0"), + 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_220, "@free"), Attrs([Attr("address","0x7D0")]), + Phis([]), Defs([Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x7D4"), +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_909, "%00000775"), Attrs([Attr("address","0x7D8"), +Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_914, "%0000077a"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_190, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_257, "%000008d1"), + 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_258, "%000008d2"), + 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_259, "%000008d3"), + 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(905, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(910, "%0000038e"), + Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), + Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), +Def(Tid(918, "%00000396"), Attrs([Attr("address","0x918"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(923, "%0000039b"), + Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x918"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x91C"), +Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(941, "%000003ad"), + Attrs([Attr("address","0x920"), Attr("insn","adrp x8, #0x1f000")]), + Var("R8",Imm(64)), Int(126976,64)), Def(Tid(949, "%000003b5"), + Attrs([Attr("address","0x924"), Attr("insn","ldr x8, [x8, #0xfc8]")]), + Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x928"), +Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x92C"), +Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x930"), +Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x934"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(984, "%000003d8"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2364,64))]), +Jmps([Call(Tid(987, "%000003db"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1b8")]), Int(1,1), +(Direct(Tid(2_191, "@malloc")),Direct(Tid(989, "%000003dd"))))])), +Blk(Tid(989, "%000003dd"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x93C"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x940"), +Attr("insn","str x0, [x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R8",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x944"), +Attr("insn","ldr x8, [x8]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x948"), +Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x94C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x950"), +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)), +Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x954"), +Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x958"), +Attr("insn","bl #-0x208")]), Var("R30",Imm(64)), Int(2396,64))]), +Jmps([Call(Tid(1_049, "%00000419"), Attrs([Attr("address","0x958"), +Attr("insn","bl #-0x208")]), Int(1,1), +(Direct(Tid(2_198, "@strlen")),Direct(Tid(1_051, "%0000041b"))))])), +Blk(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x95C")]), Phis([]), +Defs([Def(Tid(1_057, "%00000421"), Attrs([Attr("address","0x95C"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(1_065, "%00000429"), Attrs([Attr("address","0x960"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x964"), +Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_078, "%00000436"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x228")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(1_081, "%00000439"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x228")]), Int(1,1), +(Direct(Tid(2_192, "@memcpy")),Direct(Tid(1_083, "%0000043b"))))])), +Blk(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_089, "%00000441"), Attrs([Attr("address","0x96C"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_097, "%00000449"), Attrs([Attr("address","0x970"), +Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_102, "%0000044e"), Attrs([Attr("address","0x974"), +Attr("insn","bl #-0x1b4")]), Var("R30",Imm(64)), Int(2424,64))]), +Jmps([Call(Tid(1_105, "%00000451"), Attrs([Attr("address","0x974"), +Attr("insn","bl #-0x1b4")]), Int(1,1), +(Direct(Tid(2_194, "@puts")),Direct(Tid(1_107, "%00000453"))))])), +Blk(Tid(1_107, "%00000453"), Attrs([Attr("address","0x978")]), Phis([]), +Defs([Def(Tid(1_113, "%00000459"), Attrs([Attr("address","0x978"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x97C"), +Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x980"), +Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_136, "%00000470"), + Attrs([Attr("address","0x984"), Attr("insn","stur x9, [x29, #-0x8]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x988"), +Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_152, "%00000480"), Attrs([Attr("address","0x98C"), +Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x990"), +Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x994"), +Attr("insn","bl #-0x244")]), Var("R30",Imm(64)), Int(2456,64))]), +Jmps([Call(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x994"), +Attr("insn","bl #-0x244")]), Int(1,1), +(Direct(Tid(2_198, "@strlen")),Direct(Tid(1_169, "%00000491"))))])), +Blk(Tid(1_169, "%00000491"), Attrs([Attr("address","0x998")]), Phis([]), +Defs([Def(Tid(1_175, "%00000497"), Attrs([Attr("address","0x998"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x99C"), +Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x9A0"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x9A4"), +Attr("insn","bl #-0x214")]), Var("R30",Imm(64)), Int(2472,64))]), +Jmps([Call(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x9A4"), +Attr("insn","bl #-0x214")]), Int(1,1), +(Direct(Tid(2_193, "@memset")),Direct(Tid(1_200, "%000004b0"))))])), +Blk(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x9A8")]), Phis([]), +Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x9A8"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_214, "%000004be"), Attrs([Attr("address","0x9AC"), +Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x9B0"), +Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2484,64))]), +Jmps([Call(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x9B0"), +Attr("insn","bl #-0x1e0")]), Int(1,1), +(Direct(Tid(2_189, "@free")),Direct(Tid(1_224, "%000004c8"))))])), +Blk(Tid(1_224, "%000004c8"), Attrs([Attr("address","0x9B4")]), Phis([]), +Defs([Def(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x9B4"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), +Def(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x9B8"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), +Def(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x9B8"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), +Def(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x9BC"), +Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_256, "%000004e8"), + Attrs([Attr("address","0x9C0"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_191, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x780"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_260, "%000008d4"), 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_261, "%000008d5"), + 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(985, "@malloc"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x784"), +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_784, "%000006f8"), Attrs([Attr("address","0x788"), +Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_789, "%000006fd"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_192, "@memcpy"), + Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), +Attr("address","0x740"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_262, "%000008d6"), 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_263, "%000008d7"), + 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_264, "%000008d8"), 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_265, "%000008d9"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_079, "@memcpy"), Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_669, "%00000685"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_677, "%0000068d"), Attrs([Attr("address","0x744"), +Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), +Def(Tid(1_684, "%00000694"), Attrs([Attr("address","0x748"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_689, "%00000699"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_193, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x790"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_266, "%000008da"), 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_267, "%000008db"), + 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_268, "%000008dc"), + 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_269, "%000008dd"), 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_196, "@memset"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x794"), +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_809, "%00000711"), Attrs([Attr("address","0x798"), +Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_814, "%00000716"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_194, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x7C0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_270, "%000008de"), 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_271, "%000008df"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_103, "@puts"), Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x7C0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x7C4"), +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_884, "%0000075c"), Attrs([Attr("address","0x7C8"), +Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_889, "%00000761"), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_195, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_272, "%000008e0"), + 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(727, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x880"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x884"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(744, "%000002e8"), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(751, "%000002ef"), + Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x890"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(766, "%000002fe"), + Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(774, "%00000306"), 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,64)))), +Def(Tid(781, "%0000030d"), Attrs([Attr("address","0x89C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(793, "%00000319"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(787, "%00000313"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(785, "%00000311"))), Goto(Tid(2_240, "%000008c0"), Attrs([]), + Int(1,1), Direct(Tid(1_328, "%00000530")))])), Blk(Tid(1_328, "%00000530"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_332, "%00000534"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_340, "%0000053c"), 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)), +Def(Tid(1_351, "%00000547"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), Var("#73",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_345, "%00000541"), + Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), + Var("#73",Imm(1)), Direct(Tid(785, "%00000311"))), +Goto(Tid(2_241, "%000008c1"), Attrs([]), Int(1,1), +Direct(Tid(1_354, "%0000054a")))])), Blk(Tid(785, "%00000311"), + Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), +Jmps([Call(Tid(798, "%0000031e"), Attrs([Attr("address","0x8B8"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_360, "%00000550"), Attrs([Attr("address","0x8B0"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_365, "%00000555"), Attrs([Attr("address","0x8B4"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_198, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x750"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_273, "%000008e1"), 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_274, "%000008e2"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_047, "@strlen"), + Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_694, "%0000069e"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_702, "%000006a6"), Attrs([Attr("address","0x754"), +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_709, "%000006ad"), Attrs([Attr("address","0x758"), +Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_714, "%000006b2"), + Attrs([Attr("address","0x75C"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..9101af90e --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,361 @@ +000008c2: program +0000087b: sub __cxa_finalize(__cxa_finalize_result) +000008c3: __cxa_finalize_result :: out u32 = low:32[R0] + +0000052c: +000006d0: R16 := 0x20000 +000006d8: R17 := mem[R16 + 0x18, el]:u64 +000006df: R16 := R16 + 0x18 +000006e4: call R17 with noreturn + +0000087c: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008c4: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000322: +00000329: #34 := R31 - 0x20 +0000032e: mem := mem with [#34, el]:u64 <- R29 +00000333: mem := mem with [#34 + 8, el]:u64 <- R30 +00000337: R31 := #34 +0000033e: R29 := R31 +00000346: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000034c: R19 := 0x20000 +00000355: R0 := pad:32[mem[R19 + 0x70]] +00000361: #36 := ~~0:0[R0] +0000035b: when #36 goto %00000359 +000008b8: goto %000004ea + +000004ea: +000004ee: R0 := 0x1F000 +000004f6: R0 := mem[R0 + 0xFB8, el]:u64 +00000502: #70 := R0 = 0 +000004fc: when #70 goto %000004fa +000008b9: goto %0000051a + +0000051a: +0000051e: R0 := 0x20000 +00000526: R0 := mem[R0 + 0x58, el]:u64 +0000052b: R30 := 0x8F0 +0000052e: call @__cxa_finalize with return %000004fa + +000004fa: +00000507: R30 := 0x8F4 +00000509: call @deregister_tm_clones with return %0000050b + +0000050b: +00000510: R0 := 1 +00000518: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] +000008ba: goto %00000359 + +00000359: +00000369: R19 := mem[R31 + 0x10, el]:u64 +00000373: R29 := mem[R31, el]:u64 +00000377: R30 := mem[R31 + 8, el]:u64 +0000037a: R31 := R31 + 0x20 +0000037f: call R30 with noreturn + +00000880: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008c5: __libc_start_main_main :: in u64 = R0 +000008c6: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008c7: __libc_start_main_arg3 :: in out u64 = R2 +000008c8: __libc_start_main_auxv :: in out u64 = R3 +000008c9: __libc_start_main_result :: out u32 = low:32[R0] + +00000266: +000006b7: R16 := 0x20000 +000006bf: R17 := mem[R16 + 0x10, el]:u64 +000006c6: R16 := R16 + 0x10 +000006cb: call R17 with noreturn + +00000881: sub _fini(_fini_result) +000008ca: _fini_result :: out u32 = low:32[R0] + +00000020: +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +00000882: sub _init(_init_result) +000008cb: _init_result :: out u32 = low:32[R0] + +00000796: +0000079f: #101 := R31 - 0x10 +000007a4: mem := mem with [#101, el]:u64 <- R29 +000007a9: mem := mem with [#101 + 8, el]:u64 <- R30 +000007ad: R31 := #101 +000007b4: R29 := R31 +000007b9: R30 := 0x718 +000007bb: call @call_weak_fn with return %000007bd + +000007bd: +000007c5: R29 := mem[R31, el]:u64 +000007c9: R30 := mem[R31 + 8, el]:u64 +000007cc: R31 := R31 + 0x10 +000007d1: call R30 with noreturn + +00000883: sub _start(_start_result) +000008cc: _start_result :: out u32 = low:32[R0] + +0000021c: +00000222: R29 := 0 +00000228: R30 := 0 +00000230: R5 := R0 +00000238: R1 := mem[R31, el]:u64 +0000023f: R2 := R31 + 8 +00000246: R6 := R31 +0000024c: R0 := 0x1F000 +00000254: R0 := mem[R0 + 0xFD8, el]:u64 +0000025a: R3 := 0 +00000260: R4 := 0 +00000265: R30 := 0x830 +00000268: call @__libc_start_main with return %0000026a + +0000026a: +0000026d: R30 := 0x834 +00000270: call @abort with return %000008bb + +000008bb: +000008bc: call @call_weak_fn with noreturn + +00000886: sub abort() + + +0000026e: +00000734: R16 := 0x20000 +0000073c: R17 := mem[R16 + 0x38, el]:u64 +00000743: R16 := R16 + 0x38 +00000748: call R17 with noreturn + +00000887: sub call_weak_fn(call_weak_fn_result) +000008cd: call_weak_fn_result :: out u32 = low:32[R0] + +00000272: +00000276: R0 := 0x1F000 +0000027e: R0 := mem[R0 + 0xFC0, el]:u64 +0000028a: #12 := R0 = 0 +00000284: when #12 goto %00000282 +000008bd: goto %0000057e + +00000282: +0000028f: call R30 with noreturn + +0000057e: +00000581: goto @__gmon_start__ + +0000057f: +0000071b: R16 := 0x20000 +00000723: R17 := mem[R16 + 0x30, el]:u64 +0000072a: R16 := R16 + 0x30 +0000072f: call R17 with noreturn + +00000889: sub deregister_tm_clones(deregister_tm_clones_result) +000008ce: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000295: +00000299: R0 := 0x20000 +000002a0: R0 := R0 + 0x70 +000002a6: R1 := 0x20000 +000002ad: R1 := R1 + 0x70 +000002b5: #16 := 1 + ~R0 + R1 +000002b9: NF := 63:63[#16] +000002bc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002bf: ZF := #16 = 0 +000002c2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002d0: #21 := ZF +000002ca: when #21 goto %000002c8 +000008be: goto %00000557 + +00000557: +0000055b: R1 := 0x1F000 +00000563: R1 := mem[R1 + 0xFB0, el]:u64 +0000056e: #78 := R1 = 0 +00000568: when #78 goto %000002c8 +000008bf: goto %00000571 + +000002c8: +000002d5: call R30 with noreturn + +00000571: +00000577: R16 := R1 +0000057c: call R16 with noreturn + +0000088c: sub frame_dummy(frame_dummy_result) +000008cf: frame_dummy_result :: out u32 = low:32[R0] + +00000385: +00000387: call @register_tm_clones with noreturn + +0000088d: sub free(free_ptr) +000008d0: free_ptr :: in out u64 = R0 + +000004c4: +00000766: R16 := 0x20000 +0000076e: R17 := mem[R16 + 0x48, el]:u64 +00000775: R16 := R16 + 0x48 +0000077a: call R17 with noreturn + +0000088e: sub main(main_argc, main_argv, main_result) +000008d1: main_argc :: in u32 = low:32[R0] +000008d2: main_argv :: in out u64 = R1 +000008d3: main_result :: out u32 = low:32[R0] + +00000389: +0000038e: R31 := R31 - 0x40 +00000396: #42 := R31 + 0x30 +0000039b: mem := mem with [#42, el]:u64 <- R29 +000003a0: mem := mem with [#42 + 8, el]:u64 <- R30 +000003a7: R29 := R31 + 0x30 +000003ad: R8 := 0x1F000 +000003b5: R8 := mem[R8 + 0xFC8, el]:u64 +000003bd: mem := mem with [R31 + 0x18, el]:u64 <- R8 +000003c5: mem := mem with [R29 - 8, el]:u64 <- 0 +000003cd: mem := mem with [R29 - 0x10, el]:u64 <- 0 +000003d3: R0 := 0xB +000003d8: R30 := 0x93C +000003db: call @malloc with return %000003dd + +000003dd: +000003e3: R8 := mem[R31 + 0x18, el]:u64 +000003eb: mem := mem with [R8, el]:u64 <- R0 +000003f3: R8 := mem[R8, el]:u64 +000003fb: mem := mem with [R31 + 8, el]:u64 <- R8 +00000401: R0 := 0x1F000 +00000409: R0 := mem[R0 + 0xFD0, el]:u64 +00000411: mem := mem with [R31, el]:u64 <- R0 +00000416: R30 := 0x95C +00000419: call @strlen with return %0000041b + +0000041b: +00000421: R1 := mem[R31, el]:u64 +00000429: R2 := R0 +00000431: R0 := mem[R31 + 8, el]:u64 +00000436: R30 := 0x96C +00000439: call @memcpy with return %0000043b + +0000043b: +00000441: R8 := mem[R31 + 0x18, el]:u64 +00000449: R0 := mem[R8, el]:u64 +0000044e: R30 := 0x978 +00000451: call @puts with return %00000453 + +00000453: +00000459: R8 := mem[R31 + 0x18, el]:u64 +00000461: R9 := mem[R8, el]:u64 +00000468: R9 := R9 + 4 +00000470: mem := mem with [R29 - 8, el]:u64 <- R9 +00000478: R9 := mem[R8, el]:u64 +00000480: mem := mem with [R31 + 0x10, el]:u64 <- R9 +00000488: R0 := mem[R8, el]:u64 +0000048d: R30 := 0x998 +0000048f: call @strlen with return %00000491 + +00000491: +00000497: R2 := R0 +0000049f: R0 := mem[R31 + 0x10, el]:u64 +000004a6: R1 := 1 +000004ab: R30 := 0x9A8 +000004ae: call @memset with return %000004b0 + +000004b0: +000004b6: R8 := mem[R31 + 0x18, el]:u64 +000004be: R0 := mem[R8, el]:u64 +000004c3: R30 := 0x9B4 +000004c6: call @free with return %000004c8 + +000004c8: +000004cf: R0 := 0 +000004d8: R29 := mem[R31 + 0x30, el]:u64 +000004dc: R30 := mem[R31 + 0x38, el]:u64 +000004e3: R31 := R31 + 0x40 +000004e8: call R30 with noreturn + +0000088f: sub malloc(malloc_size, malloc_result) +000008d4: malloc_size :: in u64 = R0 +000008d5: malloc_result :: out u64 = R0 + +000003d9: +000006e9: R16 := 0x20000 +000006f1: R17 := mem[R16 + 0x20, el]:u64 +000006f8: R16 := R16 + 0x20 +000006fd: call R17 with noreturn + +00000890: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008d6: memcpy_dst :: in out u64 = R0 +000008d7: memcpy_src :: in out u64 = R1 +000008d8: memcpy_n :: in u64 = R2 +000008d9: memcpy_result :: out u64 = R0 + +00000437: +00000685: R16 := 0x20000 +0000068d: R17 := mem[R16, el]:u64 +00000694: R16 := R16 +00000699: call R17 with noreturn + +00000891: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008da: memset_buf :: in out u64 = R0 +000008db: memset_c :: in u32 = low:32[R1] +000008dc: memset_n :: in u64 = R2 +000008dd: memset_result :: out u64 = R0 + +000004ac: +00000702: R16 := 0x20000 +0000070a: R17 := mem[R16 + 0x28, el]:u64 +00000711: R16 := R16 + 0x28 +00000716: call R17 with noreturn + +00000892: sub puts(puts_s, puts_result) +000008de: puts_s :: in u64 = R0 +000008df: puts_result :: out u32 = low:32[R0] + +0000044f: +0000074d: R16 := 0x20000 +00000755: R17 := mem[R16 + 0x40, el]:u64 +0000075c: R16 := R16 + 0x40 +00000761: call R17 with noreturn + +00000893: sub register_tm_clones(register_tm_clones_result) +000008e0: register_tm_clones_result :: out u32 = low:32[R0] + +000002d7: +000002db: R0 := 0x20000 +000002e2: R0 := R0 + 0x70 +000002e8: R1 := 0x20000 +000002ef: R1 := R1 + 0x70 +000002f7: R1 := R1 - R0 +000002fe: R2 := R1 >> 0x3F +00000306: R1 := R2 + (R1 ~>> 3) +0000030d: R1 := R1 >> 1 +00000319: #30 := R1 = 0 +00000313: when #30 goto %00000311 +000008c0: goto %00000530 + +00000530: +00000534: R2 := 0x1F000 +0000053c: R2 := mem[R2 + 0xFE0, el]:u64 +00000547: #73 := R2 = 0 +00000541: when #73 goto %00000311 +000008c1: goto %0000054a + +00000311: +0000031e: call R30 with noreturn + +0000054a: +00000550: R16 := R2 +00000555: call R16 with noreturn + +00000896: sub strlen(strlen_s, strlen_result) +000008e1: strlen_s :: in u64 = R0 +000008e2: strlen_result :: out u64 = R0 + +00000417: +0000069e: R16 := 0x20000 +000006a6: R17 := mem[R16 + 8, el]:u64 +000006ad: R16 := R16 + 8 +000006b2: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..0e1254ec5 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,146 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdb8 0000000000000403 R_AARCH64_RELATIVE 910 +000000000001fdc0 0000000000000403 R_AARCH64_RELATIVE 8c0 +000000000001ffc8 0000000000000403 R_AARCH64_RELATIVE 20078 +000000000001ffd0 0000000000000403 R_AARCH64_RELATIVE 20061 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 914 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffb0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffb8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffc0 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 0x618 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: 0000000000000708 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 99 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: 0000000000000618 0 SECTION LOCAL DEFAULT 10 .rela.plt + 11: 0000000000000708 0 SECTION LOCAL DEFAULT 11 .init + 12: 0000000000000720 0 SECTION LOCAL DEFAULT 12 .plt + 13: 0000000000000800 0 SECTION LOCAL DEFAULT 13 .text + 14: 00000000000009c4 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009d8 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009dc 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 0000000000000a18 0 SECTION LOCAL DEFAULT 17 .eh_frame + 18: 000000000001fdb8 0 SECTION LOCAL DEFAULT 18 .init_array + 19: 000000000001fdc0 0 SECTION LOCAL DEFAULT 19 .fini_array + 20: 000000000001fdc8 0 SECTION LOCAL DEFAULT 20 .dynamic + 21: 000000000001ffa8 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: 0000000000000800 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 0000000000000a2c 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009d8 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 0000000000000834 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 0000000000000834 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 0000000000000708 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 00000000000009c4 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 0000000000000718 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009d0 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000850 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000850 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000880 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 00000000000008c0 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdc0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdc0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 0000000000000910 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdb8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdb8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 0000000000000a40 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 0000000000000914 0 NOTYPE LOCAL DEFAULT 13 $x.0 + 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 + 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 + 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 + 59: 0000000000000aa0 0 NOTYPE LOCAL DEFAULT 17 $d.4 + 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 61: 0000000000000adc 0 NOTYPE LOCAL DEFAULT 17 $d + 62: 0000000000000adc 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 64: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 65: 00000000000009dc 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 66: 000000000001ffa8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 67: 0000000000000720 0 NOTYPE LOCAL DEFAULT 12 $x + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata + 77: 00000000000009c4 0 FUNC GLOBAL HIDDEN 14 _fini + 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 86: 00000000000009d8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end + 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 90: 0000000000000800 52 FUNC GLOBAL DEFAULT 13 _start + 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf + 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext + 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 95: 0000000000000914 176 FUNC GLOBAL DEFAULT 13 main + 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 98: 0000000000000708 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/Makefile deleted file mode 100644 index aed00c0f5..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -CC=aarch64-linux-gnu-gcc - -include ../../../make/lift.mk diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt index 9c344b119..b97fefcf3 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt @@ -67,708 +67,725 @@ Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), Annotation(Region(0x7C0,0x99B), Attr("section","\".text\"")), Annotation(Region(0x7C0,0x99B), Attr("code-region","()")), Annotation(Region(0x99C,0x9AF), Attr("code-region","()"))]), -Program(Tid(2_104, "%00000838"), Attrs([]), - Subs([Sub(Tid(2_076, "@__cxa_finalize"), +Program(Tid(2_306, "%00000902"), Attrs([]), + Subs([Sub(Tid(2_235, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_105, "%00000839"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_307, "%00000903"), 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_278, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_382, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x740"), +Defs([Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x740"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), Attrs([Attr("address","0x744"), +Def(Tid(1_810, "%00000712"), 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_679, "%0000068f"), Attrs([Attr("address","0x748"), +Def(Tid(1_817, "%00000719"), 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_684, "%00000694"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_822, "%0000071e"), Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_077, "@__do_global_dtors_aux"), +Sub(Tid(2_236, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_106, "%0000083a"), + "__do_global_dtors_aux", Args([Arg(Tid(2_308, "%00000904"), 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(791, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(795, "%0000031b"), +Blks([Blk(Tid(826, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(833, "%00000341"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(801, "%00000321"), Attrs([Attr("address","0x880"), +Def(Tid(838, "%00000346"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(807, "%00000327"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(843, "%0000034b"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(847, "%0000034f"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(817, "%00000331"), +Var("#34",Imm(64))), Def(Tid(854, "%00000356"), Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(825, "%00000339"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(862, "%0000035e"), Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(830, "%0000033e"), Attrs([Attr("address","0x88C"), +Def(Tid(868, "%00000364"), Attrs([Attr("address","0x88C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(837, "%00000345"), Attrs([Attr("address","0x890"), +Def(Tid(877, "%0000036d"), Attrs([Attr("address","0x890"), Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), -Jmps([Goto(Tid(843, "%0000034b"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(841, "%00000349"))), -Goto(Tid(2_078, "%0000081e"), Attrs([]), Int(1,1), -Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), +Def(Tid(889, "%00000379"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(883, "%00000373"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(881, "%00000371"))), Goto(Tid(2_296, "%000008f8"), Attrs([]), + Int(1,1), Direct(Tid(1_316, "%00000524")))])), Blk(Tid(1_316, "%00000524"), Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x898"), +Defs([Def(Tid(1_320, "%00000528"), Attrs([Attr("address","0x898"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x89C"), +Def(Tid(1_328, "%00000530"), Attrs([Attr("address","0x89C"), Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_237, "%000004d5"))), Goto(Tid(2_079, "%0000081f"), Attrs([]), - Int(1,1), Direct(Tid(1_262, "%000004ee")))])), Blk(Tid(1_262, "%000004ee"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), Var("#68",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_334, "%00000536"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Var("#68",Imm(1)), Direct(Tid(1_332, "%00000534"))), +Goto(Tid(2_297, "%000008f9"), Attrs([]), Int(1,1), +Direct(Tid(1_364, "%00000554")))])), Blk(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_368, "%00000558"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_376, "%00000560"), Attrs([Attr("address","0x8A8"), Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_381, "%00000565"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_280, "%00000500"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_076, "@__cxa_finalize")),Direct(Tid(1_237, "%000004d5"))))])), -Blk(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8B0"), +(Direct(Tid(2_235, "@__cxa_finalize")),Direct(Tid(1_332, "%00000534"))))])), +Blk(Tid(1_332, "%00000534"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_345, "%00000541"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_247, "%000004df"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(1_347, "%00000543"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_090, "@deregister_tm_clones")),Direct(Tid(1_249, "%000004e1"))))])), -Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_252, "%000004e4"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_249, "@deregister_tm_clones")),Direct(Tid(1_349, "%00000545"))))])), +Blk(Tid(1_349, "%00000545"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x8B4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_260, "%000004ec"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_362, "%00000552"), Attrs([Attr("address","0x8B8"), Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), -Jmps([Goto(Tid(2_080, "%00000820"), Attrs([]), Int(1,1), -Direct(Tid(841, "%00000349")))])), Blk(Tid(841, "%00000349"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(851, "%00000353"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_298, "%000008fa"), Attrs([]), Int(1,1), +Direct(Tid(881, "%00000371")))])), Blk(Tid(881, "%00000371"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(897, "%00000381"), Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(858, "%0000035a"), Attrs([Attr("address","0x8C0"), +Def(Tid(907, "%0000038b"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(863, "%0000035f"), Attrs([Attr("address","0x8C0"), +Def(Tid(911, "%0000038f"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(867, "%00000363"), Attrs([Attr("address","0x8C0"), +Def(Tid(914, "%00000392"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(872, "%00000368"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(919, "%00000397"), Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_081, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_240, "@__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_107, "%0000083b"), + Args([Arg(Tid(2_309, "%00000905"), 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_108, "%0000083c"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_310, "%00000906"), 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_109, "%0000083d"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_311, "%00000907"), 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_110, "%0000083e"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_312, "%00000908"), 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_111, "%0000083f"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_313, "%00000909"), 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(624, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(638, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x730"), +Defs([Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x730"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), Attrs([Attr("address","0x734"), +Def(Tid(1_785, "%000006f9"), 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_657, "%00000679"), Attrs([Attr("address","0x738"), +Def(Tid(1_792, "%00000700"), 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_662, "%0000067e"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_797, "%00000705"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_082, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_241, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x99C")]), - "_fini", Args([Arg(Tid(2_112, "%00000840"), + "_fini", Args([Arg(Tid(2_314, "%0000090a"), 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","0x99C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x99C")]), Phis([]), Defs([Def(Tid(41, "%00000029"), Attrs([Attr("address","0x9A0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x9A0"), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9A0"), 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","0x9A0"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9A0"), 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","0x9A0"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(55, "%00000037"), Attrs([Attr("address","0x9A0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9A4"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9A4"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9A8"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9A8"), 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","0x9A8"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x9A8"), 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","0x9A8"), +Def(Tid(79, "%0000004f"), Attrs([Attr("address","0x9A8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), Attrs([Attr("address","0x9AC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_083, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_242, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_113, "%00000841"), + "_init", Args([Arg(Tid(2_315, "%0000090b"), 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_844, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(2_000, "@_init"), Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_850, "%0000073a"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), +Defs([Def(Tid(2_009, "%000007d9"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#99",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_856, "%00000740"), Attrs([Attr("address","0x6DC"), +Def(Tid(2_014, "%000007de"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_862, "%00000746"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),Var("#99",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(2_019, "%000007e3"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_866, "%0000074a"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#99",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(2_023, "%000007e7"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#6",Imm(64))), Def(Tid(1_872, "%00000750"), +Var("#99",Imm(64))), Def(Tid(2_030, "%000007ee"), Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_877, "%00000755"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_035, "%000007f3"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_879, "%00000757"), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(2_037, "%000007f5"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_088, "@call_weak_fn")),Direct(Tid(1_881, "%00000759"))))])), -Blk(Tid(1_881, "%00000759"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_886, "%0000075e"), Attrs([Attr("address","0x6E8"), +(Direct(Tid(2_247, "@call_weak_fn")),Direct(Tid(2_039, "%000007f7"))))])), +Blk(Tid(2_039, "%000007f7"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(2_047, "%000007ff"), 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_891, "%00000763"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_051, "%00000803"), 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_895, "%00000767"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_054, "%00000806"), 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_900, "%0000076c"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_059, "%0000080b"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_084, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_243, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_114, "%00000842"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_316, "%0000090c"), 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(561, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(566, "%00000236"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(564, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(570, "%0000023a"), Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(571, "%0000023b"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(576, "%00000240"), Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(577, "%00000241"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(584, "%00000248"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(590, "%0000024e"), Attrs([Attr("address","0x7D4"), +Def(Tid(599, "%00000257"), Attrs([Attr("address","0x7D4"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(596, "%00000254"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(606, "%0000025e"), Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(601, "%00000259"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(612, "%00000264"), Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(608, "%00000260"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(620, "%0000026c"), Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(613, "%00000265"), Attrs([Attr("address","0x7E4"), +Def(Tid(626, "%00000272"), Attrs([Attr("address","0x7E4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(618, "%0000026a"), Attrs([Attr("address","0x7E8"), +Def(Tid(632, "%00000278"), Attrs([Attr("address","0x7E8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(623, "%0000026f"), Attrs([Attr("address","0x7EC"), +Def(Tid(637, "%0000027d"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x7EC"), +Jmps([Call(Tid(640, "%00000280"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_081, "@__libc_start_main")),Direct(Tid(628, "%00000274"))))])), -Blk(Tid(628, "%00000274"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7F0"), +(Direct(Tid(2_240, "@__libc_start_main")),Direct(Tid(642, "%00000282"))))])), +Blk(Tid(642, "%00000282"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(645, "%00000285"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_087, "@abort")),Direct(Tid(2_085, "%00000825"))))])), -Blk(Tid(2_085, "%00000825"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_086, "%00000826"), Attrs([]), Int(1,1), -(Direct(Tid(2_088, "@call_weak_fn")),))]))])), Sub(Tid(2_087, "@abort"), +(Direct(Tid(2_246, "@abort")),Direct(Tid(2_299, "%000008fb"))))])), +Blk(Tid(2_299, "%000008fb"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_300, "%000008fc"), Attrs([]), Int(1,1), +(Direct(Tid(2_247, "@call_weak_fn")),))]))])), Sub(Tid(2_246, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(632, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x780"), +Blks([Blk(Tid(646, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_761, "%000006e1"), Attrs([Attr("address","0x784"), +Def(Tid(1_910, "%00000776"), 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_767, "%000006e7"), Attrs([Attr("address","0x788"), +Def(Tid(1_917, "%0000077d"), 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_772, "%000006ec"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_922, "%00000782"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_088, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_247, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_115, "%00000843"), + "call_weak_fn", Args([Arg(Tid(2_317, "%0000090d"), 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(636, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(639, "%0000027f"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(650, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(654, "%0000028e"), Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(646, "%00000286"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(662, "%00000296"), Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(652, "%0000028c"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(650, "%0000028a"))), Goto(Tid(2_089, "%00000829"), Attrs([]), - Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(650, "%0000028a"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(668, "%0000029c"), + Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(666, "%0000029a"))), +Goto(Tid(2_301, "%000008fd"), Attrs([]), Int(1,1), +Direct(Tid(1_464, "%000005b8")))])), Blk(Tid(666, "%0000029a"), Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(658, "%00000292"), Attrs([Attr("address","0x804"), +Jmps([Call(Tid(679, "%000002a7"), Attrs([Attr("address","0x804"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_342, "%0000053e"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_345, "%00000541"), Attrs([Attr("address","0x800"), +Blk(Tid(1_464, "%000005b8"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_467, "%000005bb"), Attrs([Attr("address","0x800"), Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_343, "@__gmon_start__")))])), Blk(Tid(1_343, "@__gmon_start__"), +Direct(Tid(1_465, "@__gmon_start__")))])), Blk(Tid(1_465, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), Attrs([Attr("address","0x774"), +Def(Tid(1_885, "%0000075d"), 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_745, "%000006d1"), Attrs([Attr("address","0x778"), +Def(Tid(1_892, "%00000764"), 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_750, "%000006d6"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_897, "%00000769"), Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_090, "@deregister_tm_clones"), +Sub(Tid(2_249, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_116, "%00000844"), + "deregister_tm_clones", Args([Arg(Tid(2_318, "%0000090e"), 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(664, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(667, "%0000029b"), +Blks([Blk(Tid(685, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(689, "%000002b1"), Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(673, "%000002a1"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(696, "%000002b8"), Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x818"), +Def(Tid(702, "%000002be"), Attrs([Attr("address","0x818"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(684, "%000002ac"), Attrs([Attr("address","0x81C"), +Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x81C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(690, "%000002b2"), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(717, "%000002cd"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(695, "%000002b7"), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(721, "%000002d1"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(724, "%000002d4"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), -NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), -NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x820"), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(727, "%000002d7"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(715, "%000002cb"), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(730, "%000002da"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(721, "%000002d1"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(719, "%000002cf"))), Goto(Tid(2_091, "%0000082b"), Attrs([]), - Int(1,1), Direct(Tid(1_312, "%00000520")))])), Blk(Tid(1_312, "%00000520"), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(744, "%000002e8"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(738, "%000002e2"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(736, "%000002e0"))), Goto(Tid(2_302, "%000008fe"), Attrs([]), + Int(1,1), Direct(Tid(1_425, "%00000591")))])), Blk(Tid(1_425, "%00000591"), Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_315, "%00000523"), Attrs([Attr("address","0x828"), +Defs([Def(Tid(1_429, "%00000595"), Attrs([Attr("address","0x828"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_322, "%0000052a"), Attrs([Attr("address","0x82C"), +Def(Tid(1_437, "%0000059d"), Attrs([Attr("address","0x82C"), Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(719, "%000002cf"))), Goto(Tid(2_092, "%0000082c"), Attrs([]), - Int(1,1), Direct(Tid(1_331, "%00000533")))])), Blk(Tid(719, "%000002cf"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(1_448, "%000005a8"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), Var("#76",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_442, "%000005a2"), + Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Var("#76",Imm(1)), Direct(Tid(736, "%000002e0"))), +Goto(Tid(2_303, "%000008ff"), Attrs([]), Int(1,1), +Direct(Tid(1_451, "%000005ab")))])), Blk(Tid(736, "%000002e0"), Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(727, "%000002d7"), Attrs([Attr("address","0x83C"), +Jmps([Call(Tid(749, "%000002ed"), Attrs([Attr("address","0x83C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_331, "%00000533"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x834"), +Blk(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_457, "%000005b1"), Attrs([Attr("address","0x834"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_462, "%000005b6"), Attrs([Attr("address","0x838"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_093, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_117, "%00000845"), +Sub(Tid(2_252, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_319, "%0000090f"), 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(878, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(925, "@frame_dummy"), Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(880, "%00000370"), Attrs([Attr("address","0x8D0"), +Jmps([Call(Tid(927, "%0000039f"), Attrs([Attr("address","0x8D0"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_100, "@register_tm_clones")),))]))])), Sub(Tid(2_094, "@free"), +(Direct(Tid(2_259, "@register_tm_clones")),))]))])), Sub(Tid(2_253, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_118, "%00000846"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_320, "%00000910"), 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_186, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_275, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_952, "%000007a0"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_805, "%0000070d"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_960, "%000007a8"), 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_811, "%00000713"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_967, "%000007af"), 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_816, "%00000718"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_972, "%000007b4"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_095, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_254, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_119, "%00000847"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_321, "%00000911"), 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_120, "%00000848"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_322, "%00000912"), 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_121, "%00000849"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_323, "%00000913"), 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(882, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(886, "%00000376"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(929, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(936, "%000003a8"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x8D4"), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(898, "%00000382"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(950, "%000003b6"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#4",Imm(64))), Def(Tid(908, "%0000038c"), +Var("#42",Imm(64))), Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(916, "%00000394"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x8E0"), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x8E0"), Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x8E4"), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x8E4"), Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x8E8"), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x8E8"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(940, "%000003ac"), Attrs([Attr("address","0x8EC"), +Def(Tid(992, "%000003e0"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(943, "%000003af"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(995, "%000003e3"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_096, "@malloc")),Direct(Tid(945, "%000003b1"))))])), -Blk(Tid(945, "%000003b1"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8F0"), +(Direct(Tid(2_255, "@malloc")),Direct(Tid(997, "%000003e5"))))])), +Blk(Tid(997, "%000003e5"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8F0"), Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8F4"), +Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x8F4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x8F8"), +Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x8F8"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(968, "%000003c8"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x900"), +Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x900"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x904"), +Def(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x904"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(986, "%000003da"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(991, "%000003df"), Attrs([Attr("address","0x90C"), +Def(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x90C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x910"), +Def(Tid(1_058, "%00000422"), Attrs([Attr("address","0x910"), Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_002, "%000003ea"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_063, "%00000427"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), - Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_005, "%000003ed"), + Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_007, "%000003ef"))))])), -Blk(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x918"), +(Direct(Tid(2_262, "@strlen")),Direct(Tid(1_068, "%0000042c"))))])), +Blk(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x918"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x91C"), +Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x91C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x920"), +Def(Tid(1_087, "%0000043f"), Attrs([Attr("address","0x920"), Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_028, "%00000404"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_095, "%00000447"), Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_033, "%00000409"), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_100, "%0000044c"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_036, "%0000040c"), + Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_097, "@memcpy")),Direct(Tid(1_038, "%0000040e"))))])), -Blk(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x92C"), +(Direct(Tid(2_256, "@memcpy")),Direct(Tid(1_105, "%00000451"))))])), +Blk(Tid(1_105, "%00000451"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x92C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x930"), +Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x930"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_054, "%0000041e"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_124, "%00000464"), Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x938"), +Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_062, "%00000426"), Attrs([Attr("address","0x938"), +Jmps([Call(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_099, "@puts")),Direct(Tid(1_064, "%00000428"))))])), -Blk(Tid(1_064, "%00000428"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x93C"), +(Direct(Tid(2_258, "@puts")),Direct(Tid(1_134, "%0000046e"))))])), +Blk(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x93C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x940"), +Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x940"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_080, "%00000438"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x948"), +Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_094, "%00000446"), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_168, "%00000490"), Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x950"), +Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x950"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_105, "%00000451"), Attrs([Attr("address","0x954"), +Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x954"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_112, "%00000458"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x958"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x95C"), +Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x95C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x960"), +Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x960"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_130, "%0000046a"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x964"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x968"), +Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x968"), Attr("insn","bl #-0x248")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_137, "%00000471"), Attrs([Attr("address","0x968"), +Jmps([Call(Tid(1_217, "%000004c1"), Attrs([Attr("address","0x968"), Attr("insn","bl #-0x248")]), Int(1,1), -(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_139, "%00000473"))))])), -Blk(Tid(1_139, "%00000473"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x96C"), +(Direct(Tid(2_262, "@strlen")),Direct(Tid(1_219, "%000004c3"))))])), +Blk(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_225, "%000004c9"), Attrs([Attr("address","0x96C"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x970"), +Def(Tid(1_232, "%000004d0"), Attrs([Attr("address","0x970"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_154, "%00000482"), Attrs([Attr("address","0x974"), +Def(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x974"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x978"), +Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x978"), Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(1_162, "%0000048a"), Attrs([Attr("address","0x978"), +Jmps([Call(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x978"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_098, "@memset")),Direct(Tid(1_164, "%0000048c"))))])), -Blk(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x97C"), +(Direct(Tid(2_257, "@memset")),Direct(Tid(1_250, "%000004e2"))))])), +Blk(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_254, "%000004e6"), Attrs([Attr("address","0x97C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x980"), +Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x980"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_180, "%0000049c"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x984"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_185, "%000004a1"), Attrs([Attr("address","0x988"), +Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x988"), Attr("insn","bl #-0x1e8")]), Var("R30",Imm(64)), Int(2444,64))]), -Jmps([Call(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x988"), +Jmps([Call(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x988"), Attr("insn","bl #-0x1e8")]), Int(1,1), -(Direct(Tid(2_094, "@free")),Direct(Tid(1_190, "%000004a6"))))])), -Blk(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x98C")]), Phis([]), -Defs([Def(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x98C"), +(Direct(Tid(2_253, "@free")),Direct(Tid(1_279, "%000004ff"))))])), +Blk(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x98C")]), Phis([]), +Defs([Def(Tid(1_284, "%00000504"), Attrs([Attr("address","0x98C"), Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x990"), +Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x990"), 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_207, "%000004b7"), Attrs([Attr("address","0x994"), +Def(Tid(1_302, "%00000516"), Attrs([Attr("address","0x994"), 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_212, "%000004bc"), Attrs([Attr("address","0x994"), +Def(Tid(1_306, "%0000051a"), Attrs([Attr("address","0x994"), 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_216, "%000004c0"), Attrs([Attr("address","0x994"), +Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x994"), Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_221, "%000004c5"), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_314, "%00000522"), Attrs([Attr("address","0x998"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_096, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_255, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_122, "%0000084a"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_324, "%00000914"), 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_123, "%0000084b"), +Var("R0",Imm(64)), In()), Arg(Tid(2_325, "%00000915"), 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(941, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(993, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x750"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), Attrs([Attr("address","0x754"), +Def(Tid(1_835, "%0000072b"), 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_701, "%000006a5"), Attrs([Attr("address","0x758"), +Def(Tid(1_842, "%00000732"), 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_706, "%000006aa"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_847, "%00000737"), Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_097, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_256, "@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_124, "%0000084c"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_326, "%00000916"), 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_125, "%0000084d"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_327, "%00000917"), 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_126, "%0000084e"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_328, "%00000918"), 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_127, "%0000084f"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_329, "%00000919"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_034, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_101, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x710"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_607, "%00000647"), Attrs([Attr("address","0x714"), +Def(Tid(1_735, "%000006c7"), 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_613, "%0000064d"), Attrs([Attr("address","0x718"), +Def(Tid(1_742, "%000006ce"), Attrs([Attr("address","0x718"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_618, "%00000652"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_747, "%000006d3"), Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_098, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_257, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_128, "%00000850"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_330, "%0000091a"), 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_129, "%00000851"), +Both()), Arg(Tid(2_331, "%0000091b"), 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_130, "%00000852"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_332, "%0000091c"), 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_131, "%00000853"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_333, "%0000091d"), 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_160, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_246, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), Attrs([Attr("address","0x764"), +Def(Tid(1_860, "%00000744"), 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_723, "%000006bb"), Attrs([Attr("address","0x768"), +Def(Tid(1_867, "%0000074b"), 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_728, "%000006c0"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_872, "%00000750"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_099, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_258, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_132, "%00000854"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_334, "%0000091e"), 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_133, "%00000855"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_335, "%0000091f"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_060, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_130, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_927, "%00000787"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_783, "%000006f7"), Attrs([Attr("address","0x794"), +Def(Tid(1_935, "%0000078f"), 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_789, "%000006fd"), Attrs([Attr("address","0x798"), +Def(Tid(1_942, "%00000796"), 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_794, "%00000702"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_947, "%0000079b"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_100, "@register_tm_clones"), +Sub(Tid(2_259, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_134, "%00000856"), + "register_tm_clones", Args([Arg(Tid(2_336, "%00000920"), 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(729, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(751, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x840"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x844"), +Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x844"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(743, "%000002e7"), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(768, "%00000300"), Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(749, "%000002ed"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(775, "%00000307"), Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(756, "%000002f4"), Attrs([Attr("address","0x850"), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x850"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x854"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(769, "%00000301"), Attrs([Attr("address","0x858"), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(790, "%00000316"), + Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(798, "%0000031e"), Attrs([Attr("address","0x858"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(775, "%00000307"), Attrs([Attr("address","0x85C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(805, "%00000325"), Attrs([Attr("address","0x85C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(781, "%0000030d"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(779, "%0000030b"))), Goto(Tid(2_101, "%00000835"), Attrs([]), - Int(1,1), Direct(Tid(1_282, "%00000502")))])), Blk(Tid(1_282, "%00000502"), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(817, "%00000331"), + Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(811, "%0000032b"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(809, "%00000329"))), Goto(Tid(2_304, "%00000900"), Attrs([]), + Int(1,1), Direct(Tid(1_386, "%0000056a")))])), Blk(Tid(1_386, "%0000056a"), Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x864"), +Defs([Def(Tid(1_390, "%0000056e"), Attrs([Attr("address","0x864"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x868"), +Def(Tid(1_398, "%00000576"), Attrs([Attr("address","0x868"), Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_297, "%00000511"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(779, "%0000030b"))), Goto(Tid(2_102, "%00000836"), Attrs([]), - Int(1,1), Direct(Tid(1_301, "%00000515")))])), Blk(Tid(779, "%0000030b"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), +Def(Tid(1_409, "%00000581"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), Var("#71",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_403, "%0000057b"), + Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Var("#71",Imm(1)), Direct(Tid(809, "%00000329"))), +Goto(Tid(2_305, "%00000901"), Attrs([]), Int(1,1), +Direct(Tid(1_412, "%00000584")))])), Blk(Tid(809, "%00000329"), Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(787, "%00000313"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(822, "%00000336"), Attrs([Attr("address","0x878"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_301, "%00000515"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_305, "%00000519"), Attrs([Attr("address","0x870"), +Blk(Tid(1_412, "%00000584"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_418, "%0000058a"), Attrs([Attr("address","0x870"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_423, "%0000058f"), Attrs([Attr("address","0x874"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_103, "@strlen"), +Sub(Tid(2_262, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_135, "%00000857"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_337, "%00000921"), 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_136, "%00000858"), +In()), Arg(Tid(2_338, "%00000922"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_003, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_064, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x720"), +Defs([Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x720"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), Attrs([Attr("address","0x724"), +Def(Tid(1_760, "%000006e0"), 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_635, "%00000663"), Attrs([Attr("address","0x728"), +Def(Tid(1_767, "%000006e7"), 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_640, "%00000668"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_772, "%000006ec"), 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/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir index 8afe8544a..fd154ed39 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir @@ -1,361 +1,369 @@ -00000838: program -0000081c: sub __cxa_finalize(__cxa_finalize_result) -00000839: __cxa_finalize_result :: out u32 = low:32[R0] - -000004fe: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x18, el]:u64 -0000068f: R16 := R16 + 0x18 -00000694: call R17 with noreturn - -0000081d: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000083a: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000317: -0000031b: #3 := R31 - 0x20 -00000321: mem := mem with [#3, el]:u64 <- R29 -00000327: mem := mem with [#3 + 8, el]:u64 <- R30 -0000032b: R31 := #3 -00000331: R29 := R31 -00000339: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000033e: R19 := 0x20000 -00000345: R0 := pad:64[mem[R19 + 0x78]] -0000034b: when 0:0[R0] goto %00000349 -0000081e: goto %000004c7 - -000004c7: -000004ca: R0 := 0x1F000 -000004d1: R0 := mem[R0 + 0xFC8, el]:u64 -000004d7: when R0 = 0 goto %000004d5 -0000081f: goto %000004ee - -000004ee: -000004f1: R0 := 0x20000 -000004f8: R0 := mem[R0 + 0x58, el]:u64 -000004fd: R30 := 0x8B0 -00000500: call @__cxa_finalize with return %000004d5 - -000004d5: -000004dd: R30 := 0x8B4 -000004df: call @deregister_tm_clones with return %000004e1 - -000004e1: -000004e4: R0 := 1 -000004ec: mem := mem with [R19 + 0x78] <- 7:0[R0] -00000820: goto %00000349 - -00000349: -00000353: R19 := mem[R31 + 0x10, el]:u64 -0000035a: R29 := mem[R31, el]:u64 -0000035f: R30 := mem[R31 + 8, el]:u64 -00000363: R31 := R31 + 0x20 -00000368: call R30 with noreturn - -00000821: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -0000083b: __libc_start_main_main :: in u64 = R0 -0000083c: __libc_start_main_arg2 :: in u32 = low:32[R1] -0000083d: __libc_start_main_arg3 :: in out u64 = R2 -0000083e: __libc_start_main_auxv :: in out u64 = R3 -0000083f: __libc_start_main_result :: out u32 = low:32[R0] - -00000270: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 0x10, el]:u64 -00000679: R16 := R16 + 0x10 -0000067e: call R17 with noreturn - -00000822: sub _fini(_fini_result) -00000840: _fini_result :: out u32 = low:32[R0] +00000902: program +000008bb: sub __cxa_finalize(__cxa_finalize_result) +00000903: __cxa_finalize_result :: out u32 = low:32[R0] + +00000566: +0000070a: R16 := 0x20000 +00000712: R17 := mem[R16 + 0x18, el]:u64 +00000719: R16 := R16 + 0x18 +0000071e: call R17 with noreturn + +000008bc: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000904: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000033a: +00000341: #34 := R31 - 0x20 +00000346: mem := mem with [#34, el]:u64 <- R29 +0000034b: mem := mem with [#34 + 8, el]:u64 <- R30 +0000034f: R31 := #34 +00000356: R29 := R31 +0000035e: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000364: R19 := 0x20000 +0000036d: R0 := pad:32[mem[R19 + 0x78]] +00000379: #36 := ~~0:0[R0] +00000373: when #36 goto %00000371 +000008f8: goto %00000524 + +00000524: +00000528: R0 := 0x1F000 +00000530: R0 := mem[R0 + 0xFC8, el]:u64 +0000053c: #68 := R0 = 0 +00000536: when #68 goto %00000534 +000008f9: goto %00000554 + +00000554: +00000558: R0 := 0x20000 +00000560: R0 := mem[R0 + 0x58, el]:u64 +00000565: R30 := 0x8B0 +00000568: call @__cxa_finalize with return %00000534 + +00000534: +00000541: R30 := 0x8B4 +00000543: call @deregister_tm_clones with return %00000545 + +00000545: +0000054a: R0 := 1 +00000552: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] +000008fa: goto %00000371 + +00000371: +00000381: R19 := mem[R31 + 0x10, el]:u64 +0000038b: R29 := mem[R31, el]:u64 +0000038f: R30 := mem[R31 + 8, el]:u64 +00000392: R31 := R31 + 0x20 +00000397: call R30 with noreturn + +000008c0: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000905: __libc_start_main_main :: in u64 = R0 +00000906: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000907: __libc_start_main_arg3 :: in out u64 = R2 +00000908: __libc_start_main_auxv :: in out u64 = R3 +00000909: __libc_start_main_result :: out u32 = low:32[R0] + +0000027e: +000006f1: R16 := 0x20000 +000006f9: R17 := mem[R16 + 0x10, el]:u64 +00000700: R16 := R16 + 0x10 +00000705: call R17 with noreturn + +000008c1: sub _fini(_fini_result) +0000090a: _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 - -00000823: sub _init(_init_result) -00000841: _init_result :: out u32 = low:32[R0] - -00000734: -0000073a: #6 := R31 - 0x10 -00000740: mem := mem with [#6, el]:u64 <- R29 -00000746: mem := mem with [#6 + 8, el]:u64 <- R30 -0000074a: R31 := #6 -00000750: R29 := R31 -00000755: R30 := 0x6E8 -00000757: call @call_weak_fn with return %00000759 - -00000759: -0000075e: R29 := mem[R31, el]:u64 -00000763: R30 := mem[R31 + 8, el]:u64 -00000767: R31 := R31 + 0x10 -0000076c: call R30 with noreturn - -00000824: sub _start(_start_result) -00000842: _start_result :: out u32 = low:32[R0] - -00000231: -00000236: R29 := 0 -0000023b: R30 := 0 -00000241: R5 := R0 -00000248: R1 := mem[R31, el]:u64 -0000024e: R2 := R31 + 8 -00000254: R6 := R31 -00000259: R0 := 0x1F000 -00000260: R0 := mem[R0 + 0xFD8, el]:u64 -00000265: R3 := 0 -0000026a: R4 := 0 -0000026f: R30 := 0x7F0 -00000272: call @__libc_start_main with return %00000274 - -00000274: -00000277: R30 := 0x7F4 -0000027a: call @abort with return %00000825 - -00000825: -00000826: call @call_weak_fn with noreturn - -00000827: sub abort() - - -00000278: -000006da: R16 := 0x20000 -000006e1: R17 := mem[R16 + 0x38, el]:u64 -000006e7: R16 := R16 + 0x38 -000006ec: call R17 with noreturn - -00000828: sub call_weak_fn(call_weak_fn_result) -00000843: call_weak_fn_result :: out u32 = low:32[R0] - -0000027c: -0000027f: R0 := 0x1F000 -00000286: R0 := mem[R0 + 0xFD0, el]:u64 -0000028c: when R0 = 0 goto %0000028a -00000829: goto %0000053e +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +000008c2: sub _init(_init_result) +0000090b: _init_result :: out u32 = low:32[R0] + +000007d0: +000007d9: #99 := R31 - 0x10 +000007de: mem := mem with [#99, el]:u64 <- R29 +000007e3: mem := mem with [#99 + 8, el]:u64 <- R30 +000007e7: R31 := #99 +000007ee: R29 := R31 +000007f3: R30 := 0x6E8 +000007f5: call @call_weak_fn with return %000007f7 + +000007f7: +000007ff: R29 := mem[R31, el]:u64 +00000803: R30 := mem[R31 + 8, el]:u64 +00000806: R31 := R31 + 0x10 +0000080b: call R30 with noreturn + +000008c3: sub _start(_start_result) +0000090c: _start_result :: out u32 = low:32[R0] + +00000234: +0000023a: R29 := 0 +00000240: R30 := 0 +00000248: R5 := R0 +00000250: R1 := mem[R31, el]:u64 +00000257: R2 := R31 + 8 +0000025e: R6 := R31 +00000264: R0 := 0x1F000 +0000026c: R0 := mem[R0 + 0xFD8, el]:u64 +00000272: R3 := 0 +00000278: R4 := 0 +0000027d: R30 := 0x7F0 +00000280: call @__libc_start_main with return %00000282 + +00000282: +00000285: R30 := 0x7F4 +00000288: call @abort with return %000008fb + +000008fb: +000008fc: call @call_weak_fn with noreturn + +000008c6: sub abort() + + +00000286: +0000076e: R16 := 0x20000 +00000776: R17 := mem[R16 + 0x38, el]:u64 +0000077d: R16 := R16 + 0x38 +00000782: call R17 with noreturn + +000008c7: sub call_weak_fn(call_weak_fn_result) +0000090d: call_weak_fn_result :: out u32 = low:32[R0] 0000028a: -00000292: call R30 with noreturn - -0000053e: -00000541: goto @__gmon_start__ - -0000053f: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x30, el]:u64 -000006d1: R16 := R16 + 0x30 -000006d6: call R17 with noreturn - -0000082a: sub deregister_tm_clones(deregister_tm_clones_result) -00000844: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000298: -0000029b: R0 := 0x20000 -000002a1: R0 := R0 + 0x78 -000002a6: R1 := 0x20000 -000002ac: R1 := R1 + 0x78 -000002b2: #1 := ~R0 -000002b7: #2 := R1 + ~R0 -000002bd: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002c3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002c7: ZF := #2 + 1 = 0 -000002cb: NF := 63:63[#2 + 1] -000002d1: when ZF goto %000002cf -0000082b: goto %00000520 - -00000520: -00000523: R1 := 0x1F000 -0000052a: R1 := mem[R1 + 0xFC0, el]:u64 -0000052f: when R1 = 0 goto %000002cf -0000082c: goto %00000533 - -000002cf: -000002d7: call R30 with noreturn - -00000533: -00000537: R16 := R1 -0000053c: call R16 with noreturn - -0000082d: sub frame_dummy(frame_dummy_result) -00000845: frame_dummy_result :: out u32 = low:32[R0] - -0000036e: -00000370: call @register_tm_clones with noreturn - -0000082e: sub free(free_ptr) -00000846: free_ptr :: in out u64 = R0 - -000004a2: -00000706: R16 := 0x20000 -0000070d: R17 := mem[R16 + 0x48, el]:u64 -00000713: R16 := R16 + 0x48 -00000718: call R17 with noreturn - -0000082f: sub main(main_argc, main_argv, main_result) -00000847: main_argc :: in u32 = low:32[R0] -00000848: main_argv :: in out u64 = R1 -00000849: main_result :: out u32 = low:32[R0] - -00000372: -00000376: #4 := R31 - 0x30 -0000037c: mem := mem with [#4, el]:u64 <- R29 -00000382: mem := mem with [#4 + 8, el]:u64 <- R30 -00000386: R31 := #4 -0000038c: R29 := R31 -00000394: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000039b: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003a2: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003a7: R0 := 0xB -000003ac: R30 := 0x8F0 -000003af: call @malloc with return %000003b1 - -000003b1: -000003b5: R1 := R0 -000003ba: R0 := 0x20000 -000003c0: R0 := R0 + 0x80 -000003c8: mem := mem with [R0, el]:u64 <- R1 -000003cd: R0 := 0x20000 -000003d3: R0 := R0 + 0x80 -000003da: R19 := mem[R0, el]:u64 -000003df: R0 := 0x20000 -000003e5: R0 := R0 + 0x68 -000003ea: R30 := 0x918 -000003ed: call @strlen with return %000003ef - -000003ef: -000003f3: R2 := R0 -000003f8: R0 := 0x20000 -000003fe: R1 := R0 + 0x68 -00000404: R0 := R19 -00000409: R30 := 0x92C -0000040c: call @memcpy with return %0000040e - -0000040e: -00000411: R0 := 0x20000 -00000417: R0 := R0 + 0x80 -0000041e: R0 := mem[R0, el]:u64 -00000423: R30 := 0x93C -00000426: call @puts with return %00000428 +0000028e: R0 := 0x1F000 +00000296: R0 := mem[R0 + 0xFD0, el]:u64 +000002a2: #12 := R0 = 0 +0000029c: when #12 goto %0000029a +000008fd: goto %000005b8 + +0000029a: +000002a7: call R30 with noreturn + +000005b8: +000005bb: goto @__gmon_start__ + +000005b9: +00000755: R16 := 0x20000 +0000075d: R17 := mem[R16 + 0x30, el]:u64 +00000764: R16 := R16 + 0x30 +00000769: call R17 with noreturn + +000008c9: sub deregister_tm_clones(deregister_tm_clones_result) +0000090e: deregister_tm_clones_result :: out u32 = low:32[R0] + +000002ad: +000002b1: R0 := 0x20000 +000002b8: R0 := R0 + 0x78 +000002be: R1 := 0x20000 +000002c5: R1 := R1 + 0x78 +000002cd: #16 := 1 + ~R0 + R1 +000002d1: NF := 63:63[#16] +000002d4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002d7: ZF := #16 = 0 +000002da: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002e8: #21 := ZF +000002e2: when #21 goto %000002e0 +000008fe: goto %00000591 + +00000591: +00000595: R1 := 0x1F000 +0000059d: R1 := mem[R1 + 0xFC0, el]:u64 +000005a8: #76 := R1 = 0 +000005a2: when #76 goto %000002e0 +000008ff: goto %000005ab + +000002e0: +000002ed: call R30 with noreturn + +000005ab: +000005b1: R16 := R1 +000005b6: call R16 with noreturn + +000008cc: sub frame_dummy(frame_dummy_result) +0000090f: frame_dummy_result :: out u32 = low:32[R0] + +0000039d: +0000039f: call @register_tm_clones with noreturn + +000008cd: sub free(free_ptr) +00000910: free_ptr :: in out u64 = R0 + +000004fb: +000007a0: R16 := 0x20000 +000007a8: R17 := mem[R16 + 0x48, el]:u64 +000007af: R16 := R16 + 0x48 +000007b4: call R17 with noreturn + +000008ce: sub main(main_argc, main_argv, main_result) +00000911: main_argc :: in u32 = low:32[R0] +00000912: main_argv :: in out u64 = R1 +00000913: main_result :: out u32 = low:32[R0] + +000003a1: +000003a8: #42 := R31 - 0x30 +000003ad: mem := mem with [#42, el]:u64 <- R29 +000003b2: mem := mem with [#42 + 8, el]:u64 <- R30 +000003b6: R31 := #42 +000003bd: R29 := R31 +000003c5: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003cd: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003d5: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003db: R0 := 0xB +000003e0: R30 := 0x8F0 +000003e3: call @malloc with return %000003e5 + +000003e5: +000003eb: R1 := R0 +000003f1: R0 := 0x20000 +000003f8: R0 := R0 + 0x80 +00000400: mem := mem with [R0, el]:u64 <- R1 +00000406: R0 := 0x20000 +0000040d: R0 := R0 + 0x80 +00000415: R19 := mem[R0, el]:u64 +0000041b: R0 := 0x20000 +00000422: R0 := R0 + 0x68 +00000427: R30 := 0x918 +0000042a: call @strlen with return %0000042c + +0000042c: +00000432: R2 := R0 +00000438: R0 := 0x20000 +0000043f: R1 := R0 + 0x68 +00000447: R0 := R19 +0000044c: R30 := 0x92C +0000044f: call @memcpy with return %00000451 + +00000451: +00000455: R0 := 0x20000 +0000045c: R0 := R0 + 0x80 +00000464: R0 := mem[R0, el]:u64 +00000469: R30 := 0x93C +0000046c: call @puts with return %0000046e + +0000046e: +00000472: R0 := 0x20000 +00000479: R0 := R0 + 0x80 +00000481: R0 := mem[R0, el]:u64 +00000488: R0 := R0 + 4 +00000490: mem := mem with [R31 + 0x28, el]:u64 <- R0 +00000496: R0 := 0x20000 +0000049d: R0 := R0 + 0x80 +000004a5: R19 := mem[R0, el]:u64 +000004ab: R0 := 0x20000 +000004b2: R0 := R0 + 0x80 +000004ba: R0 := mem[R0, el]:u64 +000004bf: R30 := 0x96C +000004c1: call @strlen with return %000004c3 + +000004c3: +000004c9: R2 := R0 +000004d0: R1 := 1 +000004d8: R0 := R19 +000004dd: R30 := 0x97C +000004e0: call @memset with return %000004e2 + +000004e2: +000004e6: R0 := 0x20000 +000004ed: R0 := R0 + 0x80 +000004f5: R0 := mem[R0, el]:u64 +000004fa: R30 := 0x98C +000004fd: call @free with return %000004ff + +000004ff: +00000504: R0 := 0 +0000050c: R19 := mem[R31 + 0x10, el]:u64 +00000516: R29 := mem[R31, el]:u64 +0000051a: R30 := mem[R31 + 8, el]:u64 +0000051d: R31 := R31 + 0x30 +00000522: call R30 with noreturn + +000008cf: sub malloc(malloc_size, malloc_result) +00000914: malloc_size :: in u64 = R0 +00000915: malloc_result :: out u64 = R0 + +000003e1: +00000723: R16 := 0x20000 +0000072b: R17 := mem[R16 + 0x20, el]:u64 +00000732: R16 := R16 + 0x20 +00000737: call R17 with noreturn + +000008d0: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000916: memcpy_dst :: in out u64 = R0 +00000917: memcpy_src :: in out u64 = R1 +00000918: memcpy_n :: in u64 = R2 +00000919: memcpy_result :: out u64 = R0 + +0000044d: +000006bf: R16 := 0x20000 +000006c7: R17 := mem[R16, el]:u64 +000006ce: R16 := R16 +000006d3: call R17 with noreturn + +000008d1: sub memset(memset_buf, memset_c, memset_n, memset_result) +0000091a: memset_buf :: in out u64 = R0 +0000091b: memset_c :: in u32 = low:32[R1] +0000091c: memset_n :: in u64 = R2 +0000091d: memset_result :: out u64 = R0 + +000004de: +0000073c: R16 := 0x20000 +00000744: R17 := mem[R16 + 0x28, el]:u64 +0000074b: R16 := R16 + 0x28 +00000750: call R17 with noreturn + +000008d2: sub puts(puts_s, puts_result) +0000091e: puts_s :: in u64 = R0 +0000091f: puts_result :: out u32 = low:32[R0] + +0000046a: +00000787: R16 := 0x20000 +0000078f: R17 := mem[R16 + 0x40, el]:u64 +00000796: R16 := R16 + 0x40 +0000079b: call R17 with noreturn + +000008d3: sub register_tm_clones(register_tm_clones_result) +00000920: register_tm_clones_result :: out u32 = low:32[R0] + +000002ef: +000002f3: R0 := 0x20000 +000002fa: R0 := R0 + 0x78 +00000300: R1 := 0x20000 +00000307: R1 := R1 + 0x78 +0000030f: R1 := R1 - R0 +00000316: R2 := R1 >> 0x3F +0000031e: R1 := R2 + (R1 ~>> 3) +00000325: R1 := R1 >> 1 +00000331: #30 := R1 = 0 +0000032b: when #30 goto %00000329 +00000900: goto %0000056a + +0000056a: +0000056e: R2 := 0x1F000 +00000576: R2 := mem[R2 + 0xFE0, el]:u64 +00000581: #71 := R2 = 0 +0000057b: when #71 goto %00000329 +00000901: goto %00000584 + +00000329: +00000336: call R30 with noreturn + +00000584: +0000058a: R16 := R2 +0000058f: call R16 with noreturn + +000008d6: sub strlen(strlen_s, strlen_result) +00000921: strlen_s :: in u64 = R0 +00000922: strlen_result :: out u64 = R0 00000428: -0000042b: R0 := 0x20000 -00000431: R0 := R0 + 0x80 -00000438: R0 := mem[R0, el]:u64 -0000043e: R0 := R0 + 4 -00000446: mem := mem with [R31 + 0x28, el]:u64 <- R0 -0000044b: R0 := 0x20000 -00000451: R0 := R0 + 0x80 -00000458: R19 := mem[R0, el]:u64 -0000045d: R0 := 0x20000 -00000463: R0 := R0 + 0x80 -0000046a: R0 := mem[R0, el]:u64 -0000046f: R30 := 0x96C -00000471: call @strlen with return %00000473 - -00000473: -00000477: R2 := R0 -0000047c: R1 := 1 -00000482: R0 := R19 -00000487: R30 := 0x97C -0000048a: call @memset with return %0000048c - -0000048c: -0000048f: R0 := 0x20000 -00000495: R0 := R0 + 0x80 -0000049c: R0 := mem[R0, el]:u64 -000004a1: R30 := 0x98C -000004a4: call @free with return %000004a6 - -000004a6: -000004a9: R0 := 0 -000004b0: R19 := mem[R31 + 0x10, el]:u64 -000004b7: R29 := mem[R31, el]:u64 -000004bc: R30 := mem[R31 + 8, el]:u64 -000004c0: R31 := R31 + 0x30 -000004c5: call R30 with noreturn - -00000830: sub malloc(malloc_size, malloc_result) -0000084a: malloc_size :: in u64 = R0 -0000084b: malloc_result :: out u64 = R0 - -000003ad: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x20, el]:u64 -000006a5: R16 := R16 + 0x20 -000006aa: call R17 with noreturn - -00000831: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -0000084c: memcpy_dst :: in out u64 = R0 -0000084d: memcpy_src :: in out u64 = R1 -0000084e: memcpy_n :: in u64 = R2 -0000084f: memcpy_result :: out u64 = R0 - -0000040a: -00000640: R16 := 0x20000 -00000647: R17 := mem[R16, el]:u64 -0000064d: R16 := R16 -00000652: call R17 with noreturn - -00000832: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000850: memset_buf :: in out u64 = R0 -00000851: memset_c :: in u32 = low:32[R1] -00000852: memset_n :: in u64 = R2 -00000853: memset_result :: out u64 = R0 - -00000488: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x28, el]:u64 -000006bb: R16 := R16 + 0x28 -000006c0: call R17 with noreturn - -00000833: sub puts(puts_s, puts_result) -00000854: puts_s :: in u64 = R0 -00000855: puts_result :: out u32 = low:32[R0] - -00000424: -000006f0: R16 := 0x20000 -000006f7: R17 := mem[R16 + 0x40, el]:u64 -000006fd: R16 := R16 + 0x40 -00000702: call R17 with noreturn - -00000834: sub register_tm_clones(register_tm_clones_result) -00000856: register_tm_clones_result :: out u32 = low:32[R0] - -000002d9: -000002dc: R0 := 0x20000 -000002e2: R0 := R0 + 0x78 -000002e7: R1 := 0x20000 -000002ed: R1 := R1 + 0x78 -000002f4: R1 := R1 + ~R0 + 1 -000002fa: R2 := 0.63:63[R1] -00000301: R1 := R2 + (R1 ~>> 3) -00000307: R1 := extend:64[63:1[R1]] -0000030d: when R1 = 0 goto %0000030b -00000835: goto %00000502 - -00000502: -00000505: R2 := 0x1F000 -0000050c: R2 := mem[R2 + 0xFE0, el]:u64 -00000511: when R2 = 0 goto %0000030b -00000836: goto %00000515 - -0000030b: -00000313: call R30 with noreturn - -00000515: -00000519: R16 := R2 -0000051e: call R16 with noreturn - -00000837: sub strlen(strlen_s, strlen_result) -00000857: strlen_s :: in u64 = R0 -00000858: strlen_result :: out u64 = R0 - -000003eb: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16 + 8, el]:u64 -00000663: R16 := R16 + 8 -00000668: call R17 with noreturn +000006d8: R16 := 0x20000 +000006e0: R17 := mem[R16 + 8, el]:u64 +000006e7: R16 := R16 + 8 +000006ec: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile deleted file mode 100644 index 6dedd5452..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -CFLAGS=-O2 - -include ../../../make/lift.mk 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 index 02784a818..fc5a22c09 100644 --- 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 @@ -67,675 +67,689 @@ 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_043, "%000007fb"), Attrs([]), - Subs([Sub(Tid(2_015, "@__cxa_finalize"), +Program(Tid(2_228, "%000008b4"), Attrs([]), + Subs([Sub(Tid(2_157, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_044, "%000007fc"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_229, "%000008b5"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_306, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_607, "%00000647"), Attrs([Attr("address","0x740"), +Defs([Def(Tid(1_726, "%000006be"), 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"), +Def(Tid(1_734, "%000006c6"), 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"), +Def(Tid(1_741, "%000006cd"), 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"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_746, "%000006d2"), Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_016, "@__do_global_dtors_aux"), +Sub(Tid(2_158, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x940")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_045, "%000007fd"), + "__do_global_dtors_aux", Args([Arg(Tid(2_230, "%000008b6"), 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"), +Blks([Blk(Tid(1_137, "@__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)), +Defs([Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x940"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#76",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x940"), +Def(Tid(1_149, "%0000047d"), 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"), +Store(Var("mem",Mem(64,8)),Var("#76",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_154, "%00000482"), 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"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#76",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_158, "%00000486"), Attrs([Attr("address","0x940"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#6",Imm(64))), Def(Tid(1_099, "%0000044b"), +Var("#76",Imm(64))), Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x944"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_107, "%00000453"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_173, "%00000495"), 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"), +Def(Tid(1_179, "%0000049b"), 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"), +Def(Tid(1_188, "%000004a4"), 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_017, "%000007e1"), Attrs([]), - Int(1,1), Direct(Tid(1_164, "%0000048c")))])), Blk(Tid(1_164, "%0000048c"), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), +Def(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x954"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#78",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x954"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#78",Imm(1)), +Direct(Tid(1_192, "%000004a8"))), Goto(Tid(2_218, "%000008aa"), Attrs([]), + Int(1,1), Direct(Tid(1_240, "%000004d8")))])), Blk(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x958")]), Phis([]), -Defs([Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x958"), +Defs([Def(Tid(1_244, "%000004dc"), 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"), +Def(Tid(1_252, "%000004e4"), 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_018, "%000007e2"), Attrs([]), - Int(1,1), Direct(Tid(1_203, "%000004b3")))])), Blk(Tid(1_203, "%000004b3"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x960"), +Attr("insn","cbz x0, #0x10")]), Var("#82",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_258, "%000004ea"), + Attrs([Attr("address","0x960"), Attr("insn","cbz x0, #0x10")]), + Var("#82",Imm(1)), Direct(Tid(1_256, "%000004e8"))), +Goto(Tid(2_219, "%000008ab"), Attrs([]), Int(1,1), +Direct(Tid(1_288, "%00000508")))])), Blk(Tid(1_288, "%00000508"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x964"), +Defs([Def(Tid(1_292, "%0000050c"), 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"), +Def(Tid(1_300, "%00000514"), 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"), +Def(Tid(1_305, "%00000519"), 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"), +Jmps([Call(Tid(1_308, "%0000051c"), 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"), +(Direct(Tid(2_157, "@__cxa_finalize")),Direct(Tid(1_256, "%000004e8"))))])), +Blk(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_269, "%000004f5"), 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"), +Jmps([Call(Tid(1_271, "%000004f7"), 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"), +(Direct(Tid(2_171, "@deregister_tm_clones")),Direct(Tid(1_273, "%000004f9"))))])), +Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_278, "%000004fe"), 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"), +Def(Tid(1_286, "%00000506"), 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_019, "%000007e3"), Attrs([]), Int(1,1), -Direct(Tid(1_123, "%00000463")))])), Blk(Tid(1_123, "%00000463"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_220, "%000008ac"), Attrs([]), Int(1,1), +Direct(Tid(1_192, "%000004a8")))])), Blk(Tid(1_192, "%000004a8"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_133, "%0000046d"), Attrs([Attr("address","0x97C"), +Defs([Def(Tid(1_208, "%000004b8"), 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"), +Def(Tid(1_218, "%000004c2"), 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"), +Def(Tid(1_222, "%000004c6"), 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"), +Def(Tid(1_225, "%000004c9"), 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"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_230, "%000004ce"), Attrs([Attr("address","0x984"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_020, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_162, "@__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_046, "%000007fe"), + Args([Arg(Tid(2_231, "%000008b7"), 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_047, "%000007ff"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_232, "%000008b8"), 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_048, "%00000800"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_233, "%000008b9"), 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_049, "%00000801"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_234, "%000008ba"), 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_050, "%00000802"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_235, "%000008bb"), 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"), +Out())]), Blks([Blk(Tid(949, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_585, "%00000631"), Attrs([Attr("address","0x730"), +Defs([Def(Tid(1_701, "%000006a5"), 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"), +Def(Tid(1_709, "%000006ad"), 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"), +Def(Tid(1_716, "%000006b4"), 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"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_721, "%000006b9"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_021, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_163, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x994")]), - "_fini", Args([Arg(Tid(2_051, "%00000803"), + "_fini", Args([Arg(Tid(2_236, "%000008bc"), 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","0x994")]), Phis([]), Defs([Def(Tid(41, "%00000029"), Attrs([Attr("address","0x998"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x998"), +Def(Tid(46, "%0000002e"), 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"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), 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"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(55, "%00000037"), 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"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), 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"), +Def(Tid(72, "%00000048"), 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"), +Def(Tid(76, "%0000004c"), 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"), +Def(Tid(79, "%0000004f"), 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"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), Attrs([Attr("address","0x9A4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_022, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_164, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_052, "%00000804"), + "_init", Args([Arg(Tid(2_237, "%000008bd"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_924, "@_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)), +Defs([Def(Tid(1_933, "%0000078d"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#113",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_797, "%00000705"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_938, "%00000792"), 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"), +Store(Var("mem",Mem(64,8)),Var("#113",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_943, "%00000797"), 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"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#113",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_947, "%0000079b"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#8",Imm(64))), Def(Tid(1_813, "%00000715"), +Var("#113",Imm(64))), Def(Tid(1_954, "%000007a2"), Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_818, "%0000071a"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_959, "%000007a7"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x1d0")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_820, "%0000071c"), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_961, "%000007a9"), 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"), +(Direct(Tid(2_169, "@call_weak_fn")),Direct(Tid(1_963, "%000007ab"))))])), +Blk(Tid(1_963, "%000007ab"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_971, "%000007b3"), 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"), +Def(Tid(1_975, "%000007b7"), 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"), +Def(Tid(1_978, "%000007ba"), 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"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_983, "%000007bf"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_023, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_165, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_053, "%00000805"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_238, "%000008be"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(875, "@_start"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(881, "%00000371"), Attrs([Attr("address","0x884"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(853, "%00000355"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(887, "%00000377"), Attrs([Attr("address","0x888"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(859, "%0000035b"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(895, "%0000037f"), Attrs([Attr("address","0x88C"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(866, "%00000362"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(903, "%00000387"), 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"), +Def(Tid(910, "%0000038e"), 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"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(917, "%00000395"), Attrs([Attr("address","0x898"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(883, "%00000373"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x89C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(890, "%0000037a"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(931, "%000003a3"), 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"), +Def(Tid(937, "%000003a9"), Attrs([Attr("address","0x8A4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(900, "%00000384"), Attrs([Attr("address","0x8A8"), +Def(Tid(943, "%000003af"), Attrs([Attr("address","0x8A8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(905, "%00000389"), Attrs([Attr("address","0x8AC"), +Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(908, "%0000038c"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(951, "%000003b7"), 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"), +(Direct(Tid(2_162, "@__libc_start_main")),Direct(Tid(953, "%000003b9"))))])), +Blk(Tid(953, "%000003b9"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(956, "%000003bc"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0x130")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(916, "%00000394"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(959, "%000003bf"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0x130")]), Int(1,1), -(Direct(Tid(2_026, "@abort")),Direct(Tid(2_024, "%000007e8"))))])), -Blk(Tid(2_024, "%000007e8"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_025, "%000007e9"), Attrs([]), Int(1,1), -(Direct(Tid(2_027, "@call_weak_fn")),))]))])), Sub(Tid(2_026, "@abort"), +(Direct(Tid(2_168, "@abort")),Direct(Tid(2_221, "%000008ad"))))])), +Blk(Tid(2_221, "%000008ad"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_222, "%000008ae"), Attrs([]), Int(1,1), +(Direct(Tid(2_169, "@call_weak_fn")),))]))])), Sub(Tid(2_168, "@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"), +Blks([Blk(Tid(957, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_826, "%00000722"), 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"), +Def(Tid(1_834, "%0000072a"), 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"), +Def(Tid(1_841, "%00000731"), 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"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_846, "%00000736"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_027, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_169, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8B4")]), - "call_weak_fn", Args([Arg(Tid(2_054, "%00000806"), + "call_weak_fn", Args([Arg(Tid(2_239, "%000008bf"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(961, "@call_weak_fn"), + Attrs([Attr("address","0x8B4")]), Phis([]), Defs([Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x8B4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(928, "%000003a0"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(973, "%000003cd"), 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_028, "%000007ec"), Attrs([]), - Int(1,1), Direct(Tid(1_283, "%00000503")))])), Blk(Tid(932, "%000003a4"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(985, "%000003d9"), Attrs([Attr("address","0x8BC"), +Attr("insn","cbz x0, #0x8")]), Var("#54",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(979, "%000003d3"), + Attrs([Attr("address","0x8BC"), Attr("insn","cbz x0, #0x8")]), + Var("#54",Imm(1)), Direct(Tid(977, "%000003d1"))), +Goto(Tid(2_223, "%000008af"), Attrs([]), Int(1,1), +Direct(Tid(1_388, "%0000056c")))])), Blk(Tid(977, "%000003d1"), Attrs([Attr("address","0x8C4")]), Phis([]), Defs([]), -Jmps([Call(Tid(940, "%000003ac"), Attrs([Attr("address","0x8C4"), +Jmps([Call(Tid(990, "%000003de"), 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"), +Blk(Tid(1_388, "%0000056c"), Attrs([Attr("address","0x8C0")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_391, "%0000056f"), Attrs([Attr("address","0x8C0"), Attr("insn","b #-0x150")]), Int(1,1), -Direct(Tid(1_284, "@__gmon_start__")))])), Blk(Tid(1_284, "@__gmon_start__"), +Direct(Tid(1_389, "@__gmon_start__")))])), Blk(Tid(1_389, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_673, "%00000689"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_801, "%00000709"), 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"), +Def(Tid(1_809, "%00000711"), 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"), +Def(Tid(1_816, "%00000718"), 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"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_821, "%0000071d"), Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_029, "@deregister_tm_clones"), +Sub(Tid(2_171, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8D0")]), - "deregister_tm_clones", Args([Arg(Tid(2_055, "%00000807"), + "deregister_tm_clones", Args([Arg(Tid(2_240, "%000008c0"), 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"), +Blks([Blk(Tid(996, "@deregister_tm_clones"), + Attrs([Attr("address","0x8D0")]), Phis([]), +Defs([Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x8D0"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x8D4"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(1_013, "%000003f5"), + Attrs([Attr("address","0x8D8"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(1_020, "%000003fc"), + Attrs([Attr("address","0x8DC"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(1_028, "%00000404"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("#58",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#58",Imm(64)))), Def(Tid(1_035, "%0000040b"), 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"), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#58",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#58",Imm(64)))))), +Def(Tid(1_038, "%0000040e"), 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"), +EQ(Var("#58",Imm(64)),Int(0,64))), Def(Tid(1_041, "%00000411"), 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_030, "%000007ee"), Attrs([]), - Int(1,1), Direct(Tid(1_253, "%000004e5")))])), Blk(Tid(1_253, "%000004e5"), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#58",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#58",Imm(64))))))), +Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x8E4"), +Attr("insn","b.eq #0x18")]), Var("#63",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(1_049, "%00000419"), Attrs([Attr("address","0x8E4"), +Attr("insn","b.eq #0x18")]), Var("#63",Imm(1)), +Direct(Tid(1_047, "%00000417"))), Goto(Tid(2_224, "%000008b0"), Attrs([]), + Int(1,1), Direct(Tid(1_349, "%00000545")))])), Blk(Tid(1_349, "%00000545"), Attrs([Attr("address","0x8E8")]), Phis([]), -Defs([Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x8E8"), +Defs([Def(Tid(1_353, "%00000549"), 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"), +Def(Tid(1_361, "%00000551"), 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_031, "%000007ef"), Attrs([]), - Int(1,1), Direct(Tid(1_272, "%000004f8")))])), Blk(Tid(1_001, "%000003e9"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(1_372, "%0000055c"), Attrs([Attr("address","0x8F0"), +Attr("insn","cbz x1, #0xc")]), Var("#90",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_366, "%00000556"), + Attrs([Attr("address","0x8F0"), Attr("insn","cbz x1, #0xc")]), + Var("#90",Imm(1)), Direct(Tid(1_047, "%00000417"))), +Goto(Tid(2_225, "%000008b1"), Attrs([]), Int(1,1), +Direct(Tid(1_375, "%0000055f")))])), Blk(Tid(1_047, "%00000417"), Attrs([Attr("address","0x8FC")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x8FC"), +Jmps([Call(Tid(1_060, "%00000424"), 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"), +Blk(Tid(1_375, "%0000055f"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_381, "%00000565"), 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"), +Jmps([Call(Tid(1_386, "%0000056a"), 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_056, "%00000808"), +Sub(Tid(2_174, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x990")]), "frame_dummy", Args([Arg(Tid(2_241, "%000008c1"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_236, "@frame_dummy"), Attrs([Attr("address","0x990")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_162, "%0000048a"), Attrs([Attr("address","0x990"), +Jmps([Call(Tid(1_238, "%000004d6"), Attrs([Attr("address","0x990"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_039, "@register_tm_clones")),))]))])), Sub(Tid(2_033, "@free"), +(Direct(Tid(2_181, "@register_tm_clones")),))]))])), Sub(Tid(2_175, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_057, "%00000809"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_242, "%000008c2"), 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"), +Both())]), Blks([Blk(Tid(791, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_876, "%00000754"), 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"), +Def(Tid(1_884, "%0000075c"), 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"), +Def(Tid(1_891, "%00000763"), 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"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_896, "%00000768"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_034, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_176, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x7C0")]), "main", Args([Arg(Tid(2_058, "%0000080a"), +Attr("address","0x7C0")]), "main", Args([Arg(Tid(2_243, "%000008c3"), 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_059, "%0000080b"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_244, "%000008c4"), 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_060, "%0000080c"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_245, "%000008c5"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(556, "@main"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(563, "%00000233"), Attrs([Attr("address","0x7C0"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#1",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#9",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"), +Def(Tid(568, "%00000238"), 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)), +Store(Var("mem",Mem(64,8)),Var("#9",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), Def(Tid(573, "%0000023d"), Attrs([Attr("address","0x7C0"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#9",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(577, "%00000241"), Attrs([Attr("address","0x7C0"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#1",Imm(64))), Def(Tid(578, "%00000242"), +Var("#9",Imm(64))), Def(Tid(583, "%00000247"), Attrs([Attr("address","0x7C4"), Attr("insn","mov x0, #0xb")]), - Var("R0",Imm(64)), Int(11,64)), Def(Tid(584, "%00000248"), + Var("R0",Imm(64)), Int(11,64)), Def(Tid(590, "%0000024e"), Attrs([Attr("address","0x7C8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(592, "%00000250"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(598, "%00000256"), 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"), +Def(Tid(604, "%0000025c"), 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"), +Def(Tid(612, "%00000264"), Attrs([Attr("address","0x7D4"), +Attr("insn","stp x19, x20, [sp, #0x10]")]), Var("#14",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64))), Def(Tid(617, "%00000269"), 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"), +Store(Var("mem",Mem(64,8)),Var("#14",Imm(64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(622, "%0000026e"), 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"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#14",Imm(64)),Int(8,64)),Var("R20",Imm(64)),LittleEndian(),64)), +Def(Tid(627, "%00000273"), Attrs([Attr("address","0x7D8"), Attr("insn","bl #-0x88")]), Var("R30",Imm(64)), Int(2012,64))]), -Jmps([Call(Tid(623, "%0000026f"), Attrs([Attr("address","0x7D8"), +Jmps([Call(Tid(630, "%00000276"), 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"), +(Direct(Tid(2_177, "@malloc")),Direct(Tid(632, "%00000278"))))])), +Blk(Tid(632, "%00000278"), Attrs([Attr("address","0x7DC")]), Phis([]), +Defs([Def(Tid(636, "%0000027c"), Attrs([Attr("address","0x7DC"), Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), -Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x7E0"), +Def(Tid(643, "%00000283"), 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"), +PLUS(Var("R20",Imm(64)),Int(96,64))), Def(Tid(651, "%0000028b"), Attrs([Attr("address","0x7E4"), Attr("insn","mov x19, x0")]), - Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(646, "%00000286"), + Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(659, "%00000293"), Attrs([Attr("address","0x7E8"), Attr("insn","mov x0, x20")]), - Var("R0",Imm(64)), Var("R20",Imm(64))), Def(Tid(654, "%0000028e"), + Var("R0",Imm(64)), Var("R20",Imm(64))), Def(Tid(667, "%0000029b"), 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"), +Def(Tid(672, "%000002a0"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0xd0")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(662, "%00000296"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(675, "%000002a3"), 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"), +(Direct(Tid(2_184, "@strlen")),Direct(Tid(677, "%000002a5"))))])), +Blk(Tid(677, "%000002a5"), Attrs([Attr("address","0x7F4")]), Phis([]), +Defs([Def(Tid(683, "%000002ab"), 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"), +Def(Tid(691, "%000002b3"), 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"), +Def(Tid(699, "%000002bb"), 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"), +Def(Tid(704, "%000002c0"), Attrs([Attr("address","0x800"), Attr("insn","bl #-0xf0")]), Var("R30",Imm(64)), Int(2052,64))]), -Jmps([Call(Tid(688, "%000002b0"), Attrs([Attr("address","0x800"), +Jmps([Call(Tid(707, "%000002c3"), 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"), +(Direct(Tid(2_178, "@memcpy")),Direct(Tid(709, "%000002c5"))))])), +Blk(Tid(709, "%000002c5"), Attrs([Attr("address","0x804")]), Phis([]), +Defs([Def(Tid(715, "%000002cb"), 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"), +Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x808"), Attr("insn","bl #-0x78")]), Var("R30",Imm(64)), Int(2060,64))]), -Jmps([Call(Tid(702, "%000002be"), Attrs([Attr("address","0x808"), +Jmps([Call(Tid(723, "%000002d3"), 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"), +(Direct(Tid(2_180, "@puts")),Direct(Tid(725, "%000002d5"))))])), +Blk(Tid(725, "%000002d5"), Attrs([Attr("address","0x80C")]), Phis([]), +Defs([Def(Tid(731, "%000002db"), 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"), +Def(Tid(739, "%000002e3"), 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"), +Def(Tid(744, "%000002e8"), Attrs([Attr("address","0x814"), Attr("insn","bl #-0xf4")]), Var("R30",Imm(64)), Int(2072,64))]), -Jmps([Call(Tid(722, "%000002d2"), Attrs([Attr("address","0x814"), +Jmps([Call(Tid(746, "%000002ea"), 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"), +(Direct(Tid(2_184, "@strlen")),Direct(Tid(748, "%000002ec"))))])), +Blk(Tid(748, "%000002ec"), Attrs([Attr("address","0x818")]), Phis([]), +Defs([Def(Tid(753, "%000002f1"), Attrs([Attr("address","0x818"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(733, "%000002dd"), Attrs([Attr("address","0x81C"), +Def(Tid(761, "%000002f9"), 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"), +Def(Tid(769, "%00000301"), 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"), +Def(Tid(774, "%00000306"), Attrs([Attr("address","0x824"), Attr("insn","bl #-0xc4")]), Var("R30",Imm(64)), Int(2088,64))]), -Jmps([Call(Tid(747, "%000002eb"), Attrs([Attr("address","0x824"), +Jmps([Call(Tid(777, "%00000309"), 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"), +(Direct(Tid(2_179, "@memset")),Direct(Tid(779, "%0000030b"))))])), +Blk(Tid(779, "%0000030b"), Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(785, "%00000311"), 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"), +Def(Tid(790, "%00000316"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0x8c")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(762, "%000002fa"), Attrs([Attr("address","0x82C"), +Jmps([Call(Tid(793, "%00000319"), 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"), +(Direct(Tid(2_175, "@free")),Direct(Tid(795, "%0000031b"))))])), +Blk(Tid(795, "%0000031b"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(802, "%00000322"), Attrs([Attr("address","0x830"), +Attr("insn","ldp x19, x20, [sp, #0x10]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(806, "%00000326"), 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"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x834"), Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(790, "%00000316"), Attrs([Attr("address","0x838"), +Def(Tid(821, "%00000335"), 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"), +Def(Tid(831, "%0000033f"), 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"), +Def(Tid(835, "%00000343"), 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"), +Def(Tid(838, "%00000346"), 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"), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(843, "%0000034b"), Attrs([Attr("address","0x840"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_035, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_177, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_061, "%0000080d"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_246, "%000008c6"), 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_062, "%0000080e"), +Var("R0",Imm(64)), In()), Arg(Tid(2_247, "%000008c7"), 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"), +Blks([Blk(Tid(628, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_751, "%000006d7"), 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"), +Def(Tid(1_759, "%000006df"), 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"), +Def(Tid(1_766, "%000006e6"), 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"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_771, "%000006eb"), Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_036, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_178, "@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_063, "%0000080f"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_248, "%000008c8"), 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_064, "%00000810"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_249, "%000008c9"), 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_065, "%00000811"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_250, "%000008ca"), 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_066, "%00000812"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_251, "%000008cb"), 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"), +Blks([Blk(Tid(705, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_651, "%00000673"), 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"), +Def(Tid(1_659, "%0000067b"), 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"), +Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x718"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_559, "%00000617"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_671, "%00000687"), Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_037, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_179, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_067, "%00000813"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_252, "%000008cc"), 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_068, "%00000814"), +Both()), Arg(Tid(2_253, "%000008cd"), 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_069, "%00000815"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_254, "%000008ce"), 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_070, "%00000816"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_255, "%000008cf"), 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"), +Blks([Blk(Tid(775, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_776, "%000006f0"), 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"), +Def(Tid(1_784, "%000006f8"), 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"), +Def(Tid(1_791, "%000006ff"), 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"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_796, "%00000704"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_038, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_180, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_071, "%00000817"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_256, "%000008d0"), 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_072, "%00000818"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_257, "%000008d1"), 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"), +Blks([Blk(Tid(721, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_851, "%0000073b"), 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"), +Def(Tid(1_859, "%00000743"), 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"), +Def(Tid(1_866, "%0000074a"), 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"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_871, "%0000074f"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_039, "@register_tm_clones"), +Sub(Tid(2_181, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), - "register_tm_clones", Args([Arg(Tid(2_073, "%00000819"), + "register_tm_clones", Args([Arg(Tid(2_258, "%000008d2"), 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"), +Blks([Blk(Tid(1_062, "@register_tm_clones"), Attrs([Attr("address","0x900")]), Phis([]), -Defs([Def(Tid(1_014, "%000003f6"), Attrs([Attr("address","0x900"), +Defs([Def(Tid(1_066, "%0000042a"), 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"), +Def(Tid(1_073, "%00000431"), 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"), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(1_079, "%00000437"), Attrs([Attr("address","0x908"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(1_031, "%00000407"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(1_086, "%0000043e"), 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"), +Def(Tid(1_094, "%00000446"), 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"), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(1_101, "%0000044d"), + Attrs([Attr("address","0x914"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(1_109, "%00000455"), 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"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(1_116, "%0000045c"), 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_040, "%000007f8"), Attrs([]), - Int(1,1), Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(1_128, "%00000468"), + Attrs([Attr("address","0x920"), Attr("insn","cbz x1, #0x18")]), + Var("#72",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(1_122, "%00000462"), Attrs([Attr("address","0x920"), +Attr("insn","cbz x1, #0x18")]), Var("#72",Imm(1)), +Direct(Tid(1_120, "%00000460"))), Goto(Tid(2_226, "%000008b2"), Attrs([]), + Int(1,1), Direct(Tid(1_310, "%0000051e")))])), Blk(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x924"), +Defs([Def(Tid(1_314, "%00000522"), 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"), +Def(Tid(1_322, "%0000052a"), 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_041, "%000007f9"), Attrs([]), - Int(1,1), Direct(Tid(1_242, "%000004da")))])), Blk(Tid(1_061, "%00000425"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), +Def(Tid(1_333, "%00000535"), Attrs([Attr("address","0x92C"), +Attr("insn","cbz x2, #0xc")]), Var("#85",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_327, "%0000052f"), + Attrs([Attr("address","0x92C"), Attr("insn","cbz x2, #0xc")]), + Var("#85",Imm(1)), Direct(Tid(1_120, "%00000460"))), +Goto(Tid(2_227, "%000008b3"), Attrs([]), Int(1,1), +Direct(Tid(1_336, "%00000538")))])), Blk(Tid(1_120, "%00000460"), Attrs([Attr("address","0x938")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x938"), +Jmps([Call(Tid(1_133, "%0000046d"), 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"), +Blk(Tid(1_336, "%00000538"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_342, "%0000053e"), 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"), +Jmps([Call(Tid(1_347, "%00000543"), Attrs([Attr("address","0x934"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_042, "@strlen"), +Sub(Tid(2_184, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_074, "%0000081a"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_259, "%000008d3"), 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_075, "%0000081b"), +In()), Arg(Tid(2_260, "%000008d4"), 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"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(673, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_563, "%0000061b"), Attrs([Attr("address","0x720"), +Defs([Def(Tid(1_676, "%0000068c"), 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"), +Def(Tid(1_684, "%00000694"), 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"), +Def(Tid(1_691, "%0000069b"), 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"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_696, "%000006a0"), 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 index 7838f7004..66bc6cebb 100644 --- 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 @@ -1,348 +1,355 @@ -000007fb: program -000007df: sub __cxa_finalize(__cxa_finalize_result) -000007fc: __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) -000007fd: __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 -000007e1: goto %0000048c - -0000048c: -0000048f: R0 := 0x1F000 -00000496: R0 := mem[R0 + 0xFC8, el]:u64 -0000049c: when R0 = 0 goto %0000049a -000007e2: 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] -000007e3: 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) -000007fe: __libc_start_main_main :: in u64 = R0 -000007ff: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000800: __libc_start_main_arg3 :: in out u64 = R2 -00000801: __libc_start_main_auxv :: in out u64 = R3 -00000802: __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) -00000803: _fini_result :: out u32 = low:32[R0] +000008b4: program +0000086d: sub __cxa_finalize(__cxa_finalize_result) +000008b5: __cxa_finalize_result :: out u32 = low:32[R0] + +0000051a: +000006be: R16 := 0x20000 +000006c6: R17 := mem[R16 + 0x18, el]:u64 +000006cd: R16 := R16 + 0x18 +000006d2: call R17 with noreturn + +0000086e: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008b6: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000471: +00000478: #76 := R31 - 0x20 +0000047d: mem := mem with [#76, el]:u64 <- R29 +00000482: mem := mem with [#76 + 8, el]:u64 <- R30 +00000486: R31 := #76 +0000048d: R29 := R31 +00000495: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000049b: R19 := 0x20000 +000004a4: R0 := pad:32[mem[R19 + 0x70]] +000004b0: #78 := ~~0:0[R0] +000004aa: when #78 goto %000004a8 +000008aa: goto %000004d8 + +000004d8: +000004dc: R0 := 0x1F000 +000004e4: R0 := mem[R0 + 0xFC8, el]:u64 +000004f0: #82 := R0 = 0 +000004ea: when #82 goto %000004e8 +000008ab: goto %00000508 + +00000508: +0000050c: R0 := 0x20000 +00000514: R0 := mem[R0 + 0x58, el]:u64 +00000519: R30 := 0x970 +0000051c: call @__cxa_finalize with return %000004e8 + +000004e8: +000004f5: R30 := 0x974 +000004f7: call @deregister_tm_clones with return %000004f9 + +000004f9: +000004fe: R0 := 1 +00000506: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] +000008ac: goto %000004a8 + +000004a8: +000004b8: R19 := mem[R31 + 0x10, el]:u64 +000004c2: R29 := mem[R31, el]:u64 +000004c6: R30 := mem[R31 + 8, el]:u64 +000004c9: R31 := R31 + 0x20 +000004ce: call R30 with noreturn + +00000872: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008b7: __libc_start_main_main :: in u64 = R0 +000008b8: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008b9: __libc_start_main_arg3 :: in out u64 = R2 +000008ba: __libc_start_main_auxv :: in out u64 = R3 +000008bb: __libc_start_main_result :: out u32 = low:32[R0] + +000003b5: +000006a5: R16 := 0x20000 +000006ad: R17 := mem[R16 + 0x10, el]:u64 +000006b4: R16 := R16 + 0x10 +000006b9: call R17 with noreturn + +00000873: sub _fini(_fini_result) +000008bc: _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) -00000804: _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) -00000805: _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 %000007e8 - -000007e8: -000007e9: 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) -00000806: 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 -000007ec: 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) -00000807: 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 -000007ee: goto %000004e5 - -000004e5: -000004e8: R1 := 0x1F000 -000004ef: R1 := mem[R1 + 0xFC0, el]:u64 -000004f4: when R1 = 0 goto %000003e9 -000007ef: goto %000004f8 - -000003e9: -000003f1: call R30 with noreturn - -000004f8: -000004fc: R16 := R1 -00000501: call R16 with noreturn - -000007f0: sub frame_dummy(frame_dummy_result) -00000808: frame_dummy_result :: out u32 = low:32[R0] - -00000488: -0000048a: call @register_tm_clones with noreturn - -000007f1: sub free(free_ptr) -00000809: 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) -0000080a: main_argc :: in u32 = low:32[R0] -0000080b: main_argv :: in out u64 = R1 -0000080c: 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 +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +00000874: sub _init(_init_result) +000008bd: _init_result :: out u32 = low:32[R0] + +00000784: +0000078d: #113 := R31 - 0x10 +00000792: mem := mem with [#113, el]:u64 <- R29 +00000797: mem := mem with [#113 + 8, el]:u64 <- R30 +0000079b: R31 := #113 +000007a2: R29 := R31 +000007a7: R30 := 0x6E8 +000007a9: call @call_weak_fn with return %000007ab + +000007ab: +000007b3: R29 := mem[R31, el]:u64 +000007b7: R30 := mem[R31 + 8, el]:u64 +000007ba: R31 := R31 + 0x10 +000007bf: call R30 with noreturn + +00000875: sub _start(_start_result) +000008be: _start_result :: out u32 = low:32[R0] + +0000036b: +00000371: R29 := 0 +00000377: R30 := 0 +0000037f: R5 := R0 +00000387: R1 := mem[R31, el]:u64 +0000038e: R2 := R31 + 8 +00000395: R6 := R31 +0000039b: R0 := 0x1F000 +000003a3: R0 := mem[R0 + 0xFD8, el]:u64 +000003a9: R3 := 0 +000003af: R4 := 0 +000003b4: R30 := 0x8B0 +000003b7: call @__libc_start_main with return %000003b9 + +000003b9: +000003bc: R30 := 0x8B4 +000003bf: call @abort with return %000008ad + +000008ad: +000008ae: call @call_weak_fn with noreturn + +00000878: sub abort() + + +000003bd: +00000722: R16 := 0x20000 +0000072a: R17 := mem[R16 + 0x38, el]:u64 +00000731: R16 := R16 + 0x38 +00000736: call R17 with noreturn + +00000879: sub call_weak_fn(call_weak_fn_result) +000008bf: call_weak_fn_result :: out u32 = low:32[R0] + +000003c1: +000003c5: R0 := 0x1F000 +000003cd: R0 := mem[R0 + 0xFD0, el]:u64 +000003d9: #54 := R0 = 0 +000003d3: when #54 goto %000003d1 +000008af: goto %0000056c + +000003d1: +000003de: call R30 with noreturn + +0000056c: +0000056f: goto @__gmon_start__ + +0000056d: +00000709: R16 := 0x20000 +00000711: R17 := mem[R16 + 0x30, el]:u64 +00000718: R16 := R16 + 0x30 +0000071d: call R17 with noreturn + +0000087b: sub deregister_tm_clones(deregister_tm_clones_result) +000008c0: deregister_tm_clones_result :: out u32 = low:32[R0] + +000003e4: +000003e8: R0 := 0x20000 +000003ef: R0 := R0 + 0x70 +000003f5: R1 := 0x20000 +000003fc: R1 := R1 + 0x70 +00000404: #58 := 1 + ~R0 + R1 +00000408: NF := 63:63[#58] +0000040b: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#58] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#58] +0000040e: ZF := #58 = 0 +00000411: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#58] | 63:63[R1] + & ~63:63[#58] +0000041f: #63 := ZF +00000419: when #63 goto %00000417 +000008b0: goto %00000545 + +00000545: +00000549: R1 := 0x1F000 +00000551: R1 := mem[R1 + 0xFC0, el]:u64 +0000055c: #90 := R1 = 0 +00000556: when #90 goto %00000417 +000008b1: goto %0000055f + +00000417: +00000424: call R30 with noreturn + +0000055f: +00000565: R16 := R1 +0000056a: call R16 with noreturn + +0000087e: sub frame_dummy(frame_dummy_result) +000008c1: frame_dummy_result :: out u32 = low:32[R0] + +000004d4: +000004d6: call @register_tm_clones with noreturn + +0000087f: sub free(free_ptr) +000008c2: free_ptr :: in out u64 = R0 + +00000317: +00000754: R16 := 0x20000 +0000075c: R17 := mem[R16 + 0x48, el]:u64 +00000763: R16 := R16 + 0x48 +00000768: call R17 with noreturn + +00000880: sub main(main_argc, main_argv, main_result) +000008c3: main_argc :: in u32 = low:32[R0] +000008c4: main_argv :: in out u64 = R1 +000008c5: main_result :: out u32 = low:32[R0] + +0000022c: +00000233: #9 := R31 - 0x30 +00000238: mem := mem with [#9, el]:u64 <- R29 +0000023d: mem := mem with [#9 + 8, el]:u64 <- R30 +00000241: R31 := #9 +00000247: R0 := 0xB +0000024e: R29 := R31 +00000256: mem := mem with [R31 + 0x20, el]:u64 <- R21 +0000025c: R21 := 0x20000 +00000264: #14 := R31 + 0x10 +00000269: mem := mem with [#14, el]:u64 <- R19 +0000026e: mem := mem with [#14 + 8, el]:u64 <- R20 +00000273: R30 := 0x7DC +00000276: call @malloc with return %00000278 + +00000278: +0000027c: R20 := 0x20000 +00000283: R20 := R20 + 0x60 +0000028b: R19 := R0 +00000293: R0 := R20 +0000029b: mem := mem with [R21 + 0x78, el]:u64 <- R19 +000002a0: R30 := 0x7F4 +000002a3: call @strlen with return %000002a5 + +000002a5: +000002ab: R2 := R0 +000002b3: R1 := R20 +000002bb: R0 := R19 +000002c0: R30 := 0x804 +000002c3: call @memcpy with return %000002c5 + +000002c5: 000002cb: R0 := R19 -000002d0: R30 := 0x818 -000002d2: call @strlen with return %000002d4 +000002d0: R30 := 0x80C +000002d3: call @puts with return %000002d5 -000002d4: -000002d7: R1 := 1 -000002dd: R2 := R0 +000002d5: +000002db: R19 := mem[R21 + 0x78, el]:u64 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) -0000080d: malloc_size :: in u64 = R0 -0000080e: 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) -0000080f: memcpy_dst :: in out u64 = R0 -00000810: memcpy_src :: in out u64 = R1 -00000811: memcpy_n :: in u64 = R2 -00000812: 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) -00000813: memset_buf :: in out u64 = R0 -00000814: memset_c :: in u32 = low:32[R1] -00000815: memset_n :: in u64 = R2 -00000816: memset_result :: out u64 = R0 - -000002e9: +000002e8: R30 := 0x818 +000002ea: call @strlen with return %000002ec + +000002ec: +000002f1: R1 := 1 +000002f9: R2 := R0 +00000301: R0 := R19 +00000306: R30 := 0x828 +00000309: call @memset with return %0000030b + +0000030b: +00000311: R0 := mem[R21 + 0x78, el]:u64 +00000316: R30 := 0x830 +00000319: call @free with return %0000031b + +0000031b: +00000322: R19 := mem[R31 + 0x10, el]:u64 +00000326: R20 := mem[R31 + 0x18, el]:u64 +0000032d: R0 := 0 +00000335: R21 := mem[R31 + 0x20, el]:u64 +0000033f: R29 := mem[R31, el]:u64 +00000343: R30 := mem[R31 + 8, el]:u64 +00000346: R31 := R31 + 0x30 +0000034b: call R30 with noreturn + +00000881: sub malloc(malloc_size, malloc_result) +000008c6: malloc_size :: in u64 = R0 +000008c7: malloc_result :: out u64 = R0 + +00000274: +000006d7: R16 := 0x20000 +000006df: R17 := mem[R16 + 0x20, el]:u64 +000006e6: R16 := R16 + 0x20 +000006eb: call R17 with noreturn + +00000882: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008c8: memcpy_dst :: in out u64 = R0 +000008c9: memcpy_src :: in out u64 = R1 +000008ca: memcpy_n :: in u64 = R2 +000008cb: memcpy_result :: out u64 = R0 + +000002c1: 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) -00000817: puts_s :: in u64 = R0 -00000818: 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) -00000819: 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 -000007f8: goto %000004c7 - -000004c7: -000004ca: R2 := 0x1F000 -000004d1: R2 := mem[R2 + 0xFE0, el]:u64 -000004d6: when R2 = 0 goto %00000425 -000007f9: goto %000004da - -00000425: -0000042d: call R30 with noreturn - -000004da: -000004de: R16 := R2 -000004e3: call R16 with noreturn - -000007fa: sub strlen(strlen_s, strlen_result) -0000081a: strlen_s :: in u64 = R0 -0000081b: 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 +0000067b: R17 := mem[R16, el]:u64 +00000682: R16 := R16 +00000687: call R17 with noreturn + +00000883: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008cc: memset_buf :: in out u64 = R0 +000008cd: memset_c :: in u32 = low:32[R1] +000008ce: memset_n :: in u64 = R2 +000008cf: memset_result :: out u64 = R0 + +00000307: +000006f0: R16 := 0x20000 +000006f8: R17 := mem[R16 + 0x28, el]:u64 +000006ff: R16 := R16 + 0x28 +00000704: call R17 with noreturn + +00000884: sub puts(puts_s, puts_result) +000008d0: puts_s :: in u64 = R0 +000008d1: puts_result :: out u32 = low:32[R0] + +000002d1: +0000073b: R16 := 0x20000 +00000743: R17 := mem[R16 + 0x40, el]:u64 +0000074a: R16 := R16 + 0x40 +0000074f: call R17 with noreturn + +00000885: sub register_tm_clones(register_tm_clones_result) +000008d2: register_tm_clones_result :: out u32 = low:32[R0] + +00000426: +0000042a: R0 := 0x20000 +00000431: R0 := R0 + 0x70 +00000437: R1 := 0x20000 +0000043e: R1 := R1 + 0x70 +00000446: R1 := R1 - R0 +0000044d: R2 := R1 >> 0x3F +00000455: R1 := R2 + (R1 ~>> 3) +0000045c: R1 := R1 >> 1 +00000468: #72 := R1 = 0 +00000462: when #72 goto %00000460 +000008b2: goto %0000051e + +0000051e: +00000522: R2 := 0x1F000 +0000052a: R2 := mem[R2 + 0xFE0, el]:u64 +00000535: #85 := R2 = 0 +0000052f: when #85 goto %00000460 +000008b3: goto %00000538 + +00000460: +0000046d: call R30 with noreturn + +00000538: +0000053e: R16 := R2 +00000543: call R16 with noreturn + +00000888: sub strlen(strlen_s, strlen_result) +000008d3: strlen_s :: in u64 = R0 +000008d4: strlen_result :: out u64 = R0 + +000002a1: +0000068c: R16 := 0x20000 +00000694: R17 := mem[R16 + 8, el]:u64 +0000069b: R16 := R16 + 8 +000006a0: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..b97fefcf3 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,791 @@ +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 2460 20 2460)\n(code-region 1984 476 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 200)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2460 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2460 20)\n(llvm:code-entry .text 1984 476)\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 2484 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2720)\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 2484 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2720)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2544 176 2544)\n(llvm:section-entry .eh_frame_hdr 2484 60 2484)\n(llvm:section-entry .rodata 2480 4 2480)\n(llvm:section-entry .fini 2460 20 2460)\n(llvm:section-entry .text 1984 476 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 200 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2460 0 2460 2460)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2720 0)\n(mapped 130504 683 64968)\n(named-region 0 2720 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 476 .text)\n(named-region 2460 20 .fini)\n(named-region 2480 4 .rodata)\n(named-region 2484 60 .eh_frame_hdr)\n(named-region 2544 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2460 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 476)\n(section 2460 20)\n(section 2480 4)\n(section 2484 60)\n(section 2544 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2720 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 200 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2460 2460)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), +Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x99C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9B0, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9B4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x0c\xfe\xff\xff\x50\x00\x00\x00\x5c\xfe\xff\xff\x64\x00\x00\x00\x8c\xfe\xff\xff\x78\x00\x00\x00\xcc\xfe\xff\xff\x8c\x00\x00\x00\x1c\xff\xff\xff\xb0\x00\x00\x00\x20\xff\xff\xff\xc4\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\xb4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xf0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x0c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x38\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\x64\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x54\xfe\xff\xff\xc8\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x6e\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x9c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6e\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x86\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xA9F), Attr("segment","02 0 2720")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +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,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x99B), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x99B), Attr("symbol-info","main 0x8D4 200")), +Annotation(Region(0x99C,0x9AF), Attr("section","\".fini\"")), +Annotation(Region(0x9B0,0x9B3), Attr("section","\".rodata\"")), +Annotation(Region(0x9B4,0x9EF), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9F0,0xA9F), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x99B), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x99B), Attr("code-region","()")), +Annotation(Region(0x99C,0x9AF), Attr("code-region","()"))]), +Program(Tid(2_306, "%00000902"), Attrs([]), + Subs([Sub(Tid(2_235, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_307, "%00000903"), + 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_382, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_810, "%00000712"), 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_817, "%00000719"), 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_822, "%0000071e"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_236, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_308, "%00000904"), + 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(826, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(833, "%00000341"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(838, "%00000346"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(843, "%0000034b"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(847, "%0000034f"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#34",Imm(64))), Def(Tid(854, "%00000356"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(862, "%0000035e"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(868, "%00000364"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(877, "%0000036d"), Attrs([Attr("address","0x890"), +Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), +Def(Tid(889, "%00000379"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(883, "%00000373"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(881, "%00000371"))), Goto(Tid(2_296, "%000008f8"), Attrs([]), + Int(1,1), Direct(Tid(1_316, "%00000524")))])), Blk(Tid(1_316, "%00000524"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_320, "%00000528"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_328, "%00000530"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), Var("#68",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_334, "%00000536"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Var("#68",Imm(1)), Direct(Tid(1_332, "%00000534"))), +Goto(Tid(2_297, "%000008f9"), Attrs([]), Int(1,1), +Direct(Tid(1_364, "%00000554")))])), Blk(Tid(1_364, "%00000554"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_368, "%00000558"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_376, "%00000560"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_381, "%00000565"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_235, "@__cxa_finalize")),Direct(Tid(1_332, "%00000534"))))])), +Blk(Tid(1_332, "%00000534"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_345, "%00000541"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_347, "%00000543"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_249, "@deregister_tm_clones")),Direct(Tid(1_349, "%00000545"))))])), +Blk(Tid(1_349, "%00000545"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_362, "%00000552"), Attrs([Attr("address","0x8B8"), +Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_298, "%000008fa"), Attrs([]), Int(1,1), +Direct(Tid(881, "%00000371")))])), Blk(Tid(881, "%00000371"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(897, "%00000381"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(907, "%0000038b"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(911, "%0000038f"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(914, "%00000392"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(919, "%00000397"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_240, "@__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_309, "%00000905"), + 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_310, "%00000906"), 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_311, "%00000907"), 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_312, "%00000908"), 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_313, "%00000909"), 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(638, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_785, "%000006f9"), 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_792, "%00000700"), 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_797, "%00000705"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_241, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x99C")]), + "_fini", Args([Arg(Tid(2_314, "%0000090a"), + 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","0x99C")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9A0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9A0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9A0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9A0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9A4"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9A8"), +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(76, "%0000004c"), Attrs([Attr("address","0x9A8"), +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(79, "%0000004f"), Attrs([Attr("address","0x9A8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0x9AC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_242, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_315, "%0000090b"), + 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(2_000, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(2_009, "%000007d9"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#99",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(2_014, "%000007de"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#99",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(2_019, "%000007e3"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#99",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(2_023, "%000007e7"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#99",Imm(64))), Def(Tid(2_030, "%000007ee"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_035, "%000007f3"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(2_037, "%000007f5"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_247, "@call_weak_fn")),Direct(Tid(2_039, "%000007f7"))))])), +Blk(Tid(2_039, "%000007f7"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(2_051, "%00000803"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(2_054, "%00000806"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_059, "%0000080b"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_243, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_316, "%0000090c"), + 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(564, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(570, "%0000023a"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(576, "%00000240"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(599, "%00000257"), Attrs([Attr("address","0x7D4"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(606, "%0000025e"), + Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(612, "%00000264"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(620, "%0000026c"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(626, "%00000272"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(632, "%00000278"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(637, "%0000027d"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(640, "%00000280"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_240, "@__libc_start_main")),Direct(Tid(642, "%00000282"))))])), +Blk(Tid(642, "%00000282"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(645, "%00000285"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_246, "@abort")),Direct(Tid(2_299, "%000008fb"))))])), +Blk(Tid(2_299, "%000008fb"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_300, "%000008fc"), Attrs([]), Int(1,1), +(Direct(Tid(2_247, "@call_weak_fn")),))]))])), Sub(Tid(2_246, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(646, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_910, "%00000776"), 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_917, "%0000077d"), 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_922, "%00000782"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_247, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(2_317, "%0000090d"), + 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(650, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(654, "%0000028e"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(662, "%00000296"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(668, "%0000029c"), + Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(666, "%0000029a"))), +Goto(Tid(2_301, "%000008fd"), Attrs([]), Int(1,1), +Direct(Tid(1_464, "%000005b8")))])), Blk(Tid(666, "%0000029a"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(679, "%000002a7"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_464, "%000005b8"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_467, "%000005bb"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_465, "@__gmon_start__")))])), Blk(Tid(1_465, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_885, "%0000075d"), 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_892, "%00000764"), 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_897, "%00000769"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_249, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(2_318, "%0000090e"), + 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(685, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(689, "%000002b1"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(696, "%000002b8"), + Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), +Def(Tid(702, "%000002be"), Attrs([Attr("address","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x81C"), +Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(717, "%000002cd"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(721, "%000002d1"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(724, "%000002d4"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(727, "%000002d7"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(730, "%000002da"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(744, "%000002e8"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(738, "%000002e2"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(736, "%000002e0"))), Goto(Tid(2_302, "%000008fe"), Attrs([]), + Int(1,1), Direct(Tid(1_425, "%00000591")))])), Blk(Tid(1_425, "%00000591"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_429, "%00000595"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_437, "%0000059d"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(1_448, "%000005a8"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), Var("#76",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_442, "%000005a2"), + Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Var("#76",Imm(1)), Direct(Tid(736, "%000002e0"))), +Goto(Tid(2_303, "%000008ff"), Attrs([]), Int(1,1), +Direct(Tid(1_451, "%000005ab")))])), Blk(Tid(736, "%000002e0"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(749, "%000002ed"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_457, "%000005b1"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_462, "%000005b6"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_252, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_319, "%0000090f"), + 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(925, "@frame_dummy"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(927, "%0000039f"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_259, "@register_tm_clones")),))]))])), Sub(Tid(2_253, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_320, "%00000910"), + 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_275, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_952, "%000007a0"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_960, "%000007a8"), 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_967, "%000007af"), 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_972, "%000007b4"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_254, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_321, "%00000911"), + 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_322, "%00000912"), + 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_323, "%00000913"), + 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(929, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(936, "%000003a8"), + Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(950, "%000003b6"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#42",Imm(64))), Def(Tid(957, "%000003bd"), + Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(965, "%000003c5"), + Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x8E0"), +Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x8E4"), +Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x8E8"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(992, "%000003e0"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(995, "%000003e3"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_255, "@malloc")),Direct(Tid(997, "%000003e5"))))])), +Blk(Tid(997, "%000003e5"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8F0"), +Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x8F4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x8F8"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_024, "%00000400"), + Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), +Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x900"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x904"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_045, "%00000415"), + Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x90C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_058, "%00000422"), Attrs([Attr("address","0x910"), +Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_063, "%00000427"), + Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), + Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_066, "%0000042a"), + Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_262, "@strlen")),Direct(Tid(1_068, "%0000042c"))))])), +Blk(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x918"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x91C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_087, "%0000043f"), Attrs([Attr("address","0x920"), +Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_095, "%00000447"), + Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_100, "%0000044c"), + Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), + Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_103, "%0000044f"), + Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_256, "@memcpy")),Direct(Tid(1_105, "%00000451"))))])), +Blk(Tid(1_105, "%00000451"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x92C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x930"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_124, "%00000464"), + Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), +Jmps([Call(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1a8")]), Int(1,1), +(Direct(Tid(2_258, "@puts")),Direct(Tid(1_134, "%0000046e"))))])), +Blk(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x93C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x940"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_153, "%00000481"), + Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x948"), +Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_168, "%00000490"), + Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x950"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x954"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_189, "%000004a5"), + Attrs([Attr("address","0x958"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x95C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x960"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_210, "%000004ba"), + Attrs([Attr("address","0x964"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x248")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(1_217, "%000004c1"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x248")]), Int(1,1), +(Direct(Tid(2_262, "@strlen")),Direct(Tid(1_219, "%000004c3"))))])), +Blk(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_225, "%000004c9"), Attrs([Attr("address","0x96C"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_232, "%000004d0"), Attrs([Attr("address","0x970"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x974"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2428,64))]), +Jmps([Call(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_257, "@memset")),Direct(Tid(1_250, "%000004e2"))))])), +Blk(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_254, "%000004e6"), Attrs([Attr("address","0x97C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x980"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_269, "%000004f5"), + Attrs([Attr("address","0x984"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x988"), +Attr("insn","bl #-0x1e8")]), Var("R30",Imm(64)), Int(2444,64))]), +Jmps([Call(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x988"), +Attr("insn","bl #-0x1e8")]), Int(1,1), +(Direct(Tid(2_253, "@free")),Direct(Tid(1_279, "%000004ff"))))])), +Blk(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x98C")]), Phis([]), +Defs([Def(Tid(1_284, "%00000504"), Attrs([Attr("address","0x98C"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x990"), +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_302, "%00000516"), Attrs([Attr("address","0x994"), +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_306, "%0000051a"), Attrs([Attr("address","0x994"), +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_309, "%0000051d"), Attrs([Attr("address","0x994"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_314, "%00000522"), + Attrs([Attr("address","0x998"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_255, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_324, "%00000914"), 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_325, "%00000915"), + 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(993, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_835, "%0000072b"), 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_842, "%00000732"), 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_847, "%00000737"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_256, "@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_326, "%00000916"), 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_327, "%00000917"), + 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_328, "%00000918"), 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_329, "%00000919"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_101, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_735, "%000006c7"), 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_742, "%000006ce"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_747, "%000006d3"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_257, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_330, "%0000091a"), 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_331, "%0000091b"), + 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_332, "%0000091c"), + 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_333, "%0000091d"), 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_246, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_860, "%00000744"), 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_867, "%0000074b"), 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_872, "%00000750"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_258, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_334, "%0000091e"), 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_335, "%0000091f"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_130, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_927, "%00000787"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_935, "%0000078f"), 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_942, "%00000796"), 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_947, "%0000079b"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_259, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(2_336, "%00000920"), + 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(751, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x844"), +Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(768, "%00000300"), + Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(775, "%00000307"), + Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(790, "%00000316"), + Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(798, "%0000031e"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(805, "%00000325"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(817, "%00000331"), + Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(811, "%0000032b"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(809, "%00000329"))), Goto(Tid(2_304, "%00000900"), Attrs([]), + Int(1,1), Direct(Tid(1_386, "%0000056a")))])), Blk(Tid(1_386, "%0000056a"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_390, "%0000056e"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_398, "%00000576"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), +Def(Tid(1_409, "%00000581"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), Var("#71",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_403, "%0000057b"), + Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Var("#71",Imm(1)), Direct(Tid(809, "%00000329"))), +Goto(Tid(2_305, "%00000901"), Attrs([]), Int(1,1), +Direct(Tid(1_412, "%00000584")))])), Blk(Tid(809, "%00000329"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(822, "%00000336"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_412, "%00000584"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_418, "%0000058a"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_423, "%0000058f"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_262, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_337, "%00000921"), 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_338, "%00000922"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_064, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_760, "%000006e0"), 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_767, "%000006e7"), 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_772, "%000006ec"), + 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..fd154ed39 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,369 @@ +00000902: program +000008bb: sub __cxa_finalize(__cxa_finalize_result) +00000903: __cxa_finalize_result :: out u32 = low:32[R0] + +00000566: +0000070a: R16 := 0x20000 +00000712: R17 := mem[R16 + 0x18, el]:u64 +00000719: R16 := R16 + 0x18 +0000071e: call R17 with noreturn + +000008bc: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000904: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000033a: +00000341: #34 := R31 - 0x20 +00000346: mem := mem with [#34, el]:u64 <- R29 +0000034b: mem := mem with [#34 + 8, el]:u64 <- R30 +0000034f: R31 := #34 +00000356: R29 := R31 +0000035e: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000364: R19 := 0x20000 +0000036d: R0 := pad:32[mem[R19 + 0x78]] +00000379: #36 := ~~0:0[R0] +00000373: when #36 goto %00000371 +000008f8: goto %00000524 + +00000524: +00000528: R0 := 0x1F000 +00000530: R0 := mem[R0 + 0xFC8, el]:u64 +0000053c: #68 := R0 = 0 +00000536: when #68 goto %00000534 +000008f9: goto %00000554 + +00000554: +00000558: R0 := 0x20000 +00000560: R0 := mem[R0 + 0x58, el]:u64 +00000565: R30 := 0x8B0 +00000568: call @__cxa_finalize with return %00000534 + +00000534: +00000541: R30 := 0x8B4 +00000543: call @deregister_tm_clones with return %00000545 + +00000545: +0000054a: R0 := 1 +00000552: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] +000008fa: goto %00000371 + +00000371: +00000381: R19 := mem[R31 + 0x10, el]:u64 +0000038b: R29 := mem[R31, el]:u64 +0000038f: R30 := mem[R31 + 8, el]:u64 +00000392: R31 := R31 + 0x20 +00000397: call R30 with noreturn + +000008c0: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000905: __libc_start_main_main :: in u64 = R0 +00000906: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000907: __libc_start_main_arg3 :: in out u64 = R2 +00000908: __libc_start_main_auxv :: in out u64 = R3 +00000909: __libc_start_main_result :: out u32 = low:32[R0] + +0000027e: +000006f1: R16 := 0x20000 +000006f9: R17 := mem[R16 + 0x10, el]:u64 +00000700: R16 := R16 + 0x10 +00000705: call R17 with noreturn + +000008c1: sub _fini(_fini_result) +0000090a: _fini_result :: out u32 = low:32[R0] + +00000020: +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +000008c2: sub _init(_init_result) +0000090b: _init_result :: out u32 = low:32[R0] + +000007d0: +000007d9: #99 := R31 - 0x10 +000007de: mem := mem with [#99, el]:u64 <- R29 +000007e3: mem := mem with [#99 + 8, el]:u64 <- R30 +000007e7: R31 := #99 +000007ee: R29 := R31 +000007f3: R30 := 0x6E8 +000007f5: call @call_weak_fn with return %000007f7 + +000007f7: +000007ff: R29 := mem[R31, el]:u64 +00000803: R30 := mem[R31 + 8, el]:u64 +00000806: R31 := R31 + 0x10 +0000080b: call R30 with noreturn + +000008c3: sub _start(_start_result) +0000090c: _start_result :: out u32 = low:32[R0] + +00000234: +0000023a: R29 := 0 +00000240: R30 := 0 +00000248: R5 := R0 +00000250: R1 := mem[R31, el]:u64 +00000257: R2 := R31 + 8 +0000025e: R6 := R31 +00000264: R0 := 0x1F000 +0000026c: R0 := mem[R0 + 0xFD8, el]:u64 +00000272: R3 := 0 +00000278: R4 := 0 +0000027d: R30 := 0x7F0 +00000280: call @__libc_start_main with return %00000282 + +00000282: +00000285: R30 := 0x7F4 +00000288: call @abort with return %000008fb + +000008fb: +000008fc: call @call_weak_fn with noreturn + +000008c6: sub abort() + + +00000286: +0000076e: R16 := 0x20000 +00000776: R17 := mem[R16 + 0x38, el]:u64 +0000077d: R16 := R16 + 0x38 +00000782: call R17 with noreturn + +000008c7: sub call_weak_fn(call_weak_fn_result) +0000090d: call_weak_fn_result :: out u32 = low:32[R0] + +0000028a: +0000028e: R0 := 0x1F000 +00000296: R0 := mem[R0 + 0xFD0, el]:u64 +000002a2: #12 := R0 = 0 +0000029c: when #12 goto %0000029a +000008fd: goto %000005b8 + +0000029a: +000002a7: call R30 with noreturn + +000005b8: +000005bb: goto @__gmon_start__ + +000005b9: +00000755: R16 := 0x20000 +0000075d: R17 := mem[R16 + 0x30, el]:u64 +00000764: R16 := R16 + 0x30 +00000769: call R17 with noreturn + +000008c9: sub deregister_tm_clones(deregister_tm_clones_result) +0000090e: deregister_tm_clones_result :: out u32 = low:32[R0] + +000002ad: +000002b1: R0 := 0x20000 +000002b8: R0 := R0 + 0x78 +000002be: R1 := 0x20000 +000002c5: R1 := R1 + 0x78 +000002cd: #16 := 1 + ~R0 + R1 +000002d1: NF := 63:63[#16] +000002d4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002d7: ZF := #16 = 0 +000002da: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002e8: #21 := ZF +000002e2: when #21 goto %000002e0 +000008fe: goto %00000591 + +00000591: +00000595: R1 := 0x1F000 +0000059d: R1 := mem[R1 + 0xFC0, el]:u64 +000005a8: #76 := R1 = 0 +000005a2: when #76 goto %000002e0 +000008ff: goto %000005ab + +000002e0: +000002ed: call R30 with noreturn + +000005ab: +000005b1: R16 := R1 +000005b6: call R16 with noreturn + +000008cc: sub frame_dummy(frame_dummy_result) +0000090f: frame_dummy_result :: out u32 = low:32[R0] + +0000039d: +0000039f: call @register_tm_clones with noreturn + +000008cd: sub free(free_ptr) +00000910: free_ptr :: in out u64 = R0 + +000004fb: +000007a0: R16 := 0x20000 +000007a8: R17 := mem[R16 + 0x48, el]:u64 +000007af: R16 := R16 + 0x48 +000007b4: call R17 with noreturn + +000008ce: sub main(main_argc, main_argv, main_result) +00000911: main_argc :: in u32 = low:32[R0] +00000912: main_argv :: in out u64 = R1 +00000913: main_result :: out u32 = low:32[R0] + +000003a1: +000003a8: #42 := R31 - 0x30 +000003ad: mem := mem with [#42, el]:u64 <- R29 +000003b2: mem := mem with [#42 + 8, el]:u64 <- R30 +000003b6: R31 := #42 +000003bd: R29 := R31 +000003c5: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003cd: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003d5: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003db: R0 := 0xB +000003e0: R30 := 0x8F0 +000003e3: call @malloc with return %000003e5 + +000003e5: +000003eb: R1 := R0 +000003f1: R0 := 0x20000 +000003f8: R0 := R0 + 0x80 +00000400: mem := mem with [R0, el]:u64 <- R1 +00000406: R0 := 0x20000 +0000040d: R0 := R0 + 0x80 +00000415: R19 := mem[R0, el]:u64 +0000041b: R0 := 0x20000 +00000422: R0 := R0 + 0x68 +00000427: R30 := 0x918 +0000042a: call @strlen with return %0000042c + +0000042c: +00000432: R2 := R0 +00000438: R0 := 0x20000 +0000043f: R1 := R0 + 0x68 +00000447: R0 := R19 +0000044c: R30 := 0x92C +0000044f: call @memcpy with return %00000451 + +00000451: +00000455: R0 := 0x20000 +0000045c: R0 := R0 + 0x80 +00000464: R0 := mem[R0, el]:u64 +00000469: R30 := 0x93C +0000046c: call @puts with return %0000046e + +0000046e: +00000472: R0 := 0x20000 +00000479: R0 := R0 + 0x80 +00000481: R0 := mem[R0, el]:u64 +00000488: R0 := R0 + 4 +00000490: mem := mem with [R31 + 0x28, el]:u64 <- R0 +00000496: R0 := 0x20000 +0000049d: R0 := R0 + 0x80 +000004a5: R19 := mem[R0, el]:u64 +000004ab: R0 := 0x20000 +000004b2: R0 := R0 + 0x80 +000004ba: R0 := mem[R0, el]:u64 +000004bf: R30 := 0x96C +000004c1: call @strlen with return %000004c3 + +000004c3: +000004c9: R2 := R0 +000004d0: R1 := 1 +000004d8: R0 := R19 +000004dd: R30 := 0x97C +000004e0: call @memset with return %000004e2 + +000004e2: +000004e6: R0 := 0x20000 +000004ed: R0 := R0 + 0x80 +000004f5: R0 := mem[R0, el]:u64 +000004fa: R30 := 0x98C +000004fd: call @free with return %000004ff + +000004ff: +00000504: R0 := 0 +0000050c: R19 := mem[R31 + 0x10, el]:u64 +00000516: R29 := mem[R31, el]:u64 +0000051a: R30 := mem[R31 + 8, el]:u64 +0000051d: R31 := R31 + 0x30 +00000522: call R30 with noreturn + +000008cf: sub malloc(malloc_size, malloc_result) +00000914: malloc_size :: in u64 = R0 +00000915: malloc_result :: out u64 = R0 + +000003e1: +00000723: R16 := 0x20000 +0000072b: R17 := mem[R16 + 0x20, el]:u64 +00000732: R16 := R16 + 0x20 +00000737: call R17 with noreturn + +000008d0: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000916: memcpy_dst :: in out u64 = R0 +00000917: memcpy_src :: in out u64 = R1 +00000918: memcpy_n :: in u64 = R2 +00000919: memcpy_result :: out u64 = R0 + +0000044d: +000006bf: R16 := 0x20000 +000006c7: R17 := mem[R16, el]:u64 +000006ce: R16 := R16 +000006d3: call R17 with noreturn + +000008d1: sub memset(memset_buf, memset_c, memset_n, memset_result) +0000091a: memset_buf :: in out u64 = R0 +0000091b: memset_c :: in u32 = low:32[R1] +0000091c: memset_n :: in u64 = R2 +0000091d: memset_result :: out u64 = R0 + +000004de: +0000073c: R16 := 0x20000 +00000744: R17 := mem[R16 + 0x28, el]:u64 +0000074b: R16 := R16 + 0x28 +00000750: call R17 with noreturn + +000008d2: sub puts(puts_s, puts_result) +0000091e: puts_s :: in u64 = R0 +0000091f: puts_result :: out u32 = low:32[R0] + +0000046a: +00000787: R16 := 0x20000 +0000078f: R17 := mem[R16 + 0x40, el]:u64 +00000796: R16 := R16 + 0x40 +0000079b: call R17 with noreturn + +000008d3: sub register_tm_clones(register_tm_clones_result) +00000920: register_tm_clones_result :: out u32 = low:32[R0] + +000002ef: +000002f3: R0 := 0x20000 +000002fa: R0 := R0 + 0x78 +00000300: R1 := 0x20000 +00000307: R1 := R1 + 0x78 +0000030f: R1 := R1 - R0 +00000316: R2 := R1 >> 0x3F +0000031e: R1 := R2 + (R1 ~>> 3) +00000325: R1 := R1 >> 1 +00000331: #30 := R1 = 0 +0000032b: when #30 goto %00000329 +00000900: goto %0000056a + +0000056a: +0000056e: R2 := 0x1F000 +00000576: R2 := mem[R2 + 0xFE0, el]:u64 +00000581: #71 := R2 = 0 +0000057b: when #71 goto %00000329 +00000901: goto %00000584 + +00000329: +00000336: call R30 with noreturn + +00000584: +0000058a: R16 := R2 +0000058f: call R16 with noreturn + +000008d6: sub strlen(strlen_s, strlen_result) +00000921: strlen_s :: in u64 = R0 +00000922: strlen_result :: out u64 = R0 + +00000428: +000006d8: R16 := 0x20000 +000006e0: R17 := mem[R16 + 8, el]:u64 +000006e7: R16 := R16 + 8 +000006ec: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..3ddb9e515 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/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 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 98 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp + 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id + 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag + 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash + 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym + 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr + 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version + 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r + 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn + 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt + 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt + 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text + 14: 000000000000099c 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009b0 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009b4 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009f0 0 SECTION LOCAL DEFAULT 17 .eh_frame + 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array + 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array + 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic + 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got + 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt + 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss + 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d + 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag + 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 0000000000000a04 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 000000000000099c 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009a8 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d + 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d + 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x + 58: 0000000000000a78 0 NOTYPE LOCAL DEFAULT 17 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000a9c 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000a9c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 00000000000009b4 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 000000000000099c 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 85: 00000000000009b0 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf + 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext + 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 94: 00000000000008d4 200 FUNC GLOBAL DEFAULT 13 main + 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..c5a72a441 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,793 @@ +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 2524 20 2524)\n(code-region 2048 476 2048)\n(code-region 1824 192 1824)\n(code-region 1800 24 1800)\n(code-start 2100)\n(code-start 2048)\n(code-start 2324)\n(entry-point 2048)\n(external-reference 130992 _ITM_deregisterTMCloneTable)\n(external-reference 131000 __cxa_finalize)\n(external-reference 131008 __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 1800 0)\n(llvm:code-entry main 2324 200)\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 2524 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 2524 20)\n(llvm:code-entry .text 2048 476)\n(llvm:code-entry .plt 1824 192)\n(llvm:code-entry .init 1800 24)\n(llvm:elf-program-header 08 64952 584)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2548 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64968 480)\n(llvm:elf-program-header 03 64952 699)\n(llvm:elf-program-header 02 0 2784)\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 2548 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130504 480)\n(llvm:elf-virtual-program-header 03 130488 720)\n(llvm:elf-virtual-program-header 02 0 2784)\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 131008 __gmon_start__)\n(llvm:name-reference 131000 __cxa_finalize)\n(llvm:name-reference 130992 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 130984 64 65448)\n(llvm:section-entry .dynamic 130504 480 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 2608 176 2608)\n(llvm:section-entry .eh_frame_hdr 2548 60 2548)\n(llvm:section-entry .rodata 2544 4 2544)\n(llvm:section-entry .fini 2524 20 2524)\n(llvm:section-entry .text 2048 476 2048)\n(llvm:section-entry .plt 1824 192 1824)\n(llvm:section-entry .init 1800 24 1800)\n(llvm:section-entry .rela.plt 1560 240 1560)\n(llvm:section-entry .rela.dyn 1320 240 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 1800 0 1800 1800)\n(llvm:symbol-entry main 2324 200 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 2524 0 2524 2524)\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 2784 0)\n(mapped 130488 699 64952)\n(named-region 0 2784 02)\n(named-region 130488 720 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 240 .rela.dyn)\n(named-region 1560 240 .rela.plt)\n(named-region 1800 24 .init)\n(named-region 1824 192 .plt)\n(named-region 2048 476 .text)\n(named-region 2524 20 .fini)\n(named-region 2544 4 .rodata)\n(named-region 2548 60 .eh_frame_hdr)\n(named-region 2608 176 .eh_frame)\n(named-region 130488 8 .init_array)\n(named-region 130496 8 .fini_array)\n(named-region 130504 480 .dynamic)\n(named-region 130984 64 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .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 2524 _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 1800 _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 240)\n(section 1560 240)\n(section 1800 24)\n(section 1824 192)\n(section 2048 476)\n(section 2524 20)\n(section 2544 4)\n(section 2548 60)\n(section 2608 176)\n(section 130488 8)\n(section 130496 8)\n(section 130504 480)\n(section 130984 64)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2784 true false true)\n(segment 130488 720 true true false)\n(subarch v8)\n(symbol-chunk 2100 20 2100)\n(symbol-chunk 2048 52 2048)\n(symbol-chunk 2324 200 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 2524 2524)\n(symbol-value 2048 2048)\n(symbol-value 2324 2324)\n(symbol-value 1800 1800)\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\x80\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\x80\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xbb\x02\x00\x00\x00\x00\x00\x00\xd0\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\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\xf4\x09\x00\x00\x00\x00\x00\x00\xf4\x09\x00\x00\x00\x00\x00\x00\xf4\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\x8e\x0b\x27\xb6\xed\x6a\xc5\xd3\xfd\x7c\x86\xa4\x1f\xbb\xca\x72\x87\x4c\xf5\x3a\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xbb\x02\x00\x00\x00\x00\x00\x00\xd0\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\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\xf4\x09\x00\x00\x00\x00\x00\x00\xf4\x09\x00\x00\x00\x00\x00\x00\xf4\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\x8e\x0b\x27\xb6\xed\x6a\xc5\xd3\xfd\x7c\x86\xa4\x1f\xbb\xca\x72\x87\x4c\xf5\x3a\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\x08\x07\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\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x68\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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\x48\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x95\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"), +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\x0b\x27\xb6\xed\x6a\xc5\xd3\xfd\x7c\x86\xa4\x1f\xbb\xca\x72\x87\x4c\xf5\x3a"), +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\x08\x07\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, "\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x68\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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", 0x618, "\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", 0x708, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x48\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x720, "\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", 0x9DC, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9F0, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9F4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x0c\xfe\xff\xff\x50\x00\x00\x00\x5c\xfe\xff\xff\x64\x00\x00\x00\x8c\xfe\xff\xff\x78\x00\x00\x00\xcc\xfe\xff\xff\x8c\x00\x00\x00\x1c\xff\xff\xff\xb0\x00\x00\x00\x20\xff\xff\xff\xc4\x00\x00\x00"), +Section(".eh_frame", 0xA30, "\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\xb4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xf0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x0c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x38\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\x64\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x54\xfe\xff\xff\xc8\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x6e\xde\xdd\xd3\x0e\x00\x00\x00\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\x08\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xdc\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\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\x18\x06\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\xf0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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", 0x1FFA8, "\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\x80\x00\x02\x00\x00\x00\x00\x00\x68\x00\x02\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\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\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\x00\x00\x00\x00\x00\x00\x00\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\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x95\xff\xff\x97\xe1\x03\x00\xaa\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x01\x00\x00\xf9\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x13\x00\x40\xf9\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x7f\xff\xff\x97\xe2\x03\x00\xaa\xe0\x00\x00\xf0\x01\xe8\x47\xf9\xe0\x03\x13\xaa\x76\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x92\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x13\x00\x40\xf9\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x6a\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x76\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x82\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xADF), Attr("segment","02 0 2784")), +Annotation(Region(0x800,0x833), Attr("symbol","\"_start\"")), +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,0x617), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x618,0x707), Attr("section","\".rela.plt\"")), +Annotation(Region(0x708,0x71F), Attr("section","\".init\"")), +Annotation(Region(0x720,0x7DF), Attr("section","\".plt\"")), +Annotation(Region(0x708,0x71F), Attr("code-region","()")), +Annotation(Region(0x720,0x7DF), 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,0x9DB), Attr("symbol","\"main\"")), +Annotation(Region(0x914,0x9DB), Attr("symbol-info","main 0x914 200")), +Annotation(Region(0x9DC,0x9EF), Attr("section","\".fini\"")), +Annotation(Region(0x9F0,0x9F3), Attr("section","\".rodata\"")), +Annotation(Region(0x9F4,0xA2F), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA30,0xADF), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDB8,0x20072), Attr("segment","03 0x1FDB8 720")), +Annotation(Region(0x1FDC0,0x1FDC7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDC8,0x1FFA7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDB8,0x1FDBF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFA8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), +Annotation(Region(0x800,0x9DB), Attr("section","\".text\"")), +Annotation(Region(0x800,0x9DB), Attr("code-region","()")), +Annotation(Region(0x9DC,0x9EF), Attr("code-region","()"))]), +Program(Tid(2_315, "%0000090b"), Attrs([]), + Subs([Sub(Tid(2_244, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x770"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_316, "%0000090c"), + 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_391, "@__cxa_finalize"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_811, "%00000713"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x774"), +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_826, "%00000722"), Attrs([Attr("address","0x778"), +Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_831, "%00000727"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_245, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_317, "%0000090d"), + 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(826, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(833, "%00000341"), + Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(838, "%00000346"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(843, "%0000034b"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(847, "%0000034f"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#34",Imm(64))), Def(Tid(854, "%00000356"), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(862, "%0000035e"), + 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(868, "%00000364"), Attrs([Attr("address","0x8CC"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(877, "%0000036d"), Attrs([Attr("address","0x8D0"), +Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), +Def(Tid(889, "%00000379"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(883, "%00000373"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(881, "%00000371"))), Goto(Tid(2_305, "%00000901"), Attrs([]), + Int(1,1), Direct(Tid(1_325, "%0000052d")))])), Blk(Tid(1_325, "%0000052d"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_329, "%00000531"), Attrs([Attr("address","0x8D8"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_337, "%00000539"), Attrs([Attr("address","0x8DC"), +Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64)), +Def(Tid(1_349, "%00000545"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), Var("#77",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_343, "%0000053f"), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), + Var("#77",Imm(1)), Direct(Tid(1_341, "%0000053d"))), +Goto(Tid(2_306, "%00000902"), Attrs([]), Int(1,1), +Direct(Tid(1_373, "%0000055d")))])), Blk(Tid(1_373, "%0000055d"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_377, "%00000561"), Attrs([Attr("address","0x8E4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_385, "%00000569"), 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_390, "%0000056e"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_393, "%00000571"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x17c")]), Int(1,1), +(Direct(Tid(2_244, "@__cxa_finalize")),Direct(Tid(1_341, "%0000053d"))))])), +Blk(Tid(1_341, "%0000053d"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_356, "%0000054c"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_258, "@deregister_tm_clones")),Direct(Tid(1_358, "%0000054e"))))])), +Blk(Tid(1_358, "%0000054e"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_363, "%00000553"), Attrs([Attr("address","0x8F4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x8F8"), +Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_307, "%00000903"), Attrs([]), Int(1,1), +Direct(Tid(881, "%00000371")))])), Blk(Tid(881, "%00000371"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(897, "%00000381"), + 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(907, "%0000038b"), 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(911, "%0000038f"), 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(914, "%00000392"), 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(919, "%00000397"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_249, "@__libc_start_main"), + Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), +Attr("address","0x760"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_318, "%0000090e"), + 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_319, "%0000090f"), 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_320, "%00000910"), 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_321, "%00000911"), 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_322, "%00000912"), 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(638, "@__libc_start_main"), + Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_786, "%000006fa"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x764"), +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_801, "%00000709"), Attrs([Attr("address","0x768"), +Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_806, "%0000070e"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_250, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9DC")]), + "_fini", Args([Arg(Tid(2_323, "%00000913"), + 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","0x9DC")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9E0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9E0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9E0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9E0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9E4"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9E8"), +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(76, "%0000004c"), Attrs([Attr("address","0x9E8"), +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(79, "%0000004f"), Attrs([Attr("address","0x9E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0x9EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_251, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x708")]), + "_init", Args([Arg(Tid(2_324, "%00000914"), + 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(2_009, "@_init"), + Attrs([Attr("address","0x708")]), Phis([]), +Defs([Def(Tid(2_018, "%000007e2"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#108",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(2_023, "%000007e7"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#108",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(2_028, "%000007ec"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#108",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(2_032, "%000007f0"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#108",Imm(64))), Def(Tid(2_039, "%000007f7"), + Attrs([Attr("address","0x710"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_044, "%000007fc"), + Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), + Var("R30",Imm(64)), Int(1816,64))]), Jmps([Call(Tid(2_046, "%000007fe"), + Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), Int(1,1), +(Direct(Tid(2_256, "@call_weak_fn")),Direct(Tid(2_048, "%00000800"))))])), +Blk(Tid(2_048, "%00000800"), Attrs([Attr("address","0x718")]), Phis([]), +Defs([Def(Tid(2_056, "%00000808"), Attrs([Attr("address","0x718"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(2_060, "%0000080c"), Attrs([Attr("address","0x718"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(2_063, "%0000080f"), Attrs([Attr("address","0x718"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_068, "%00000814"), + Attrs([Attr("address","0x71C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_252, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_325, "%00000915"), + 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(564, "@_start"), + Attrs([Attr("address","0x800")]), Phis([]), Defs([Def(Tid(570, "%0000023a"), + Attrs([Attr("address","0x804"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(576, "%00000240"), + Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), + Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), + 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(599, "%00000257"), Attrs([Attr("address","0x814"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(606, "%0000025e"), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(612, "%00000264"), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(620, "%0000026c"), + 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(626, "%00000272"), Attrs([Attr("address","0x824"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(632, "%00000278"), Attrs([Attr("address","0x828"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(637, "%0000027d"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xcc")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(640, "%00000280"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xcc")]), Int(1,1), +(Direct(Tid(2_249, "@__libc_start_main")),Direct(Tid(642, "%00000282"))))])), +Blk(Tid(642, "%00000282"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(645, "%00000285"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x80")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x80")]), Int(1,1), +(Direct(Tid(2_255, "@abort")),Direct(Tid(2_308, "%00000904"))))])), +Blk(Tid(2_308, "%00000904"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_309, "%00000905"), Attrs([]), Int(1,1), +(Direct(Tid(2_256, "@call_weak_fn")),))]))])), Sub(Tid(2_255, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x7B0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(646, "@abort"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_911, "%00000777"), Attrs([Attr("address","0x7B0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_919, "%0000077f"), Attrs([Attr("address","0x7B4"), +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_926, "%00000786"), Attrs([Attr("address","0x7B8"), +Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_931, "%0000078b"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_256, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_326, "%00000916"), + 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(650, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(654, "%0000028e"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(662, "%00000296"), + Attrs([Attr("address","0x838"), Attr("insn","ldr x0, [x0, #0xfc0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(668, "%0000029c"), + Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(666, "%0000029a"))), +Goto(Tid(2_310, "%00000906"), Attrs([]), Int(1,1), +Direct(Tid(1_473, "%000005c1")))])), Blk(Tid(666, "%0000029a"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(679, "%000002a7"), Attrs([Attr("address","0x844"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_473, "%000005c1"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_476, "%000005c4"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0xa0")]), Int(1,1), +Direct(Tid(1_474, "@__gmon_start__")))])), Blk(Tid(1_474, "@__gmon_start__"), + Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_886, "%0000075e"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x7A4"), +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_901, "%0000076d"), Attrs([Attr("address","0x7A8"), +Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_906, "%00000772"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_258, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_327, "%00000917"), + 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(685, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(689, "%000002b1"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(696, "%000002b8"), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x78")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), +Def(Tid(702, "%000002be"), Attrs([Attr("address","0x858"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x85C"), +Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(717, "%000002cd"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(721, "%000002d1"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(724, "%000002d4"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(727, "%000002d7"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(730, "%000002da"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(744, "%000002e8"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(738, "%000002e2"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(736, "%000002e0"))), Goto(Tid(2_311, "%00000907"), Attrs([]), + Int(1,1), Direct(Tid(1_434, "%0000059a")))])), Blk(Tid(1_434, "%0000059a"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_438, "%0000059e"), Attrs([Attr("address","0x868"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_446, "%000005a6"), Attrs([Attr("address","0x86C"), +Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64)), +Def(Tid(1_457, "%000005b1"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), Var("#85",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_451, "%000005ab"), + Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), + Var("#85",Imm(1)), Direct(Tid(736, "%000002e0"))), +Goto(Tid(2_312, "%00000908"), Attrs([]), Int(1,1), +Direct(Tid(1_460, "%000005b4")))])), Blk(Tid(736, "%000002e0"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(749, "%000002ed"), Attrs([Attr("address","0x87C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_460, "%000005b4"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_466, "%000005ba"), Attrs([Attr("address","0x874"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_471, "%000005bf"), Attrs([Attr("address","0x878"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_261, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_328, "%00000918"), + 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(925, "@frame_dummy"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(927, "%0000039f"), Attrs([Attr("address","0x910"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_268, "@register_tm_clones")),))]))])), Sub(Tid(2_262, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7D0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_329, "%00000919"), + 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_284, "@free"), Attrs([Attr("address","0x7D0")]), + Phis([]), Defs([Def(Tid(1_961, "%000007a9"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_969, "%000007b1"), Attrs([Attr("address","0x7D4"), +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_976, "%000007b8"), Attrs([Attr("address","0x7D8"), +Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_981, "%000007bd"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_263, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_330, "%0000091a"), + 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_331, "%0000091b"), + 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_332, "%0000091c"), + 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(929, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(936, "%000003a8"), + Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(950, "%000003b6"), Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#42",Imm(64))), Def(Tid(957, "%000003bd"), + Attrs([Attr("address","0x918"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(965, "%000003c5"), + Attrs([Attr("address","0x91C"), 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(973, "%000003cd"), Attrs([Attr("address","0x920"), +Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x924"), +Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x928"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(992, "%000003e0"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x1ac")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(995, "%000003e3"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x1ac")]), Int(1,1), +(Direct(Tid(2_264, "@malloc")),Direct(Tid(997, "%000003e5"))))])), +Blk(Tid(997, "%000003e5"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x930"), +Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x934"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x938"), +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)), +Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x93C"), +Attr("insn","str x1, [x0]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), +Def(Tid(1_031, "%00000407"), Attrs([Attr("address","0x940"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_039, "%0000040f"), Attrs([Attr("address","0x944"), +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)), +Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x948"), +Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x94C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x950"), +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)), +Def(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2392,64))]), +Jmps([Call(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x204")]), Int(1,1), +(Direct(Tid(2_271, "@strlen")),Direct(Tid(1_071, "%0000042f"))))])), +Blk(Tid(1_071, "%0000042f"), Attrs([Attr("address","0x958")]), Phis([]), +Defs([Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x958"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x95C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x960"), +Attr("insn","ldr x1, [x0, #0xfd0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x964"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x228")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(1_107, "%00000453"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x228")]), Int(1,1), +(Direct(Tid(2_265, "@memcpy")),Direct(Tid(1_109, "%00000455"))))])), +Blk(Tid(1_109, "%00000455"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_113, "%00000459"), Attrs([Attr("address","0x96C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x970"), +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)), +Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x974"), +Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2428,64))]), +Jmps([Call(Tid(1_137, "%00000471"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1b8")]), Int(1,1), +(Direct(Tid(2_267, "@puts")),Direct(Tid(1_139, "%00000473"))))])), +Blk(Tid(1_139, "%00000473"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x97C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x980"), +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)), +Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x984"), +Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x988"), +Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_174, "%00000496"), + Attrs([Attr("address","0x98C"), Attr("insn","str x0, [sp, #0x28]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_180, "%0000049c"), Attrs([Attr("address","0x990"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x994"), +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)), +Def(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x998"), +Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x99C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x9A0"), +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)), +Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x9A4"), +Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x258")]), Var("R30",Imm(64)), Int(2476,64))]), +Jmps([Call(Tid(1_225, "%000004c9"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x258")]), Int(1,1), +(Direct(Tid(2_271, "@strlen")),Direct(Tid(1_227, "%000004cb"))))])), +Blk(Tid(1_227, "%000004cb"), Attrs([Attr("address","0x9AC")]), Phis([]), +Defs([Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x9AC"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x9B0"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x9B4"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_253, "%000004e5"), Attrs([Attr("address","0x9B8"), +Attr("insn","bl #-0x228")]), Var("R30",Imm(64)), Int(2492,64))]), +Jmps([Call(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x9B8"), +Attr("insn","bl #-0x228")]), Int(1,1), +(Direct(Tid(2_266, "@memset")),Direct(Tid(1_258, "%000004ea"))))])), +Blk(Tid(1_258, "%000004ea"), Attrs([Attr("address","0x9BC")]), Phis([]), +Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x9BC"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x9C0"), +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)), +Def(Tid(1_278, "%000004fe"), Attrs([Attr("address","0x9C4"), +Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_283, "%00000503"), Attrs([Attr("address","0x9C8"), +Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2508,64))]), +Jmps([Call(Tid(1_286, "%00000506"), Attrs([Attr("address","0x9C8"), +Attr("insn","bl #-0x1f8")]), Int(1,1), +(Direct(Tid(2_262, "@free")),Direct(Tid(1_288, "%00000508"))))])), +Blk(Tid(1_288, "%00000508"), Attrs([Attr("address","0x9CC")]), Phis([]), +Defs([Def(Tid(1_293, "%0000050d"), Attrs([Attr("address","0x9CC"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_301, "%00000515"), Attrs([Attr("address","0x9D0"), +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_311, "%0000051f"), Attrs([Attr("address","0x9D4"), +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_315, "%00000523"), Attrs([Attr("address","0x9D4"), +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_318, "%00000526"), Attrs([Attr("address","0x9D4"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_323, "%0000052b"), + Attrs([Attr("address","0x9D8"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_264, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x780"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_333, "%0000091d"), 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_334, "%0000091e"), + 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(993, "@malloc"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_836, "%0000072c"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x784"), +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_851, "%0000073b"), Attrs([Attr("address","0x788"), +Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_856, "%00000740"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_265, "@memcpy"), + Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), +Attr("address","0x740"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_335, "%0000091f"), 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_336, "%00000920"), + 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_337, "%00000921"), 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_338, "%00000922"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_105, "@memcpy"), Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_736, "%000006c8"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x744"), +Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), +Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x748"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_756, "%000006dc"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_266, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x790"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_339, "%00000923"), 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_340, "%00000924"), + 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_341, "%00000925"), + 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_342, "%00000926"), 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_254, "@memset"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_861, "%00000745"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x794"), +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_876, "%00000754"), Attrs([Attr("address","0x798"), +Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_881, "%00000759"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_267, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x7C0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_343, "%00000927"), 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_344, "%00000928"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_135, "@puts"), Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_936, "%00000790"), Attrs([Attr("address","0x7C0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_944, "%00000798"), Attrs([Attr("address","0x7C4"), +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_951, "%0000079f"), Attrs([Attr("address","0x7C8"), +Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_956, "%000007a4"), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_268, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_345, "%00000929"), + 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(751, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x880"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x884"), +Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(768, "%00000300"), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(775, "%00000307"), + Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x78")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x890"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(790, "%00000316"), + Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(798, "%0000031e"), 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,64)))), +Def(Tid(805, "%00000325"), Attrs([Attr("address","0x89C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(817, "%00000331"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(811, "%0000032b"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(809, "%00000329"))), Goto(Tid(2_313, "%00000909"), Attrs([]), + Int(1,1), Direct(Tid(1_395, "%00000573")))])), Blk(Tid(1_395, "%00000573"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_399, "%00000577"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_407, "%0000057f"), 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)), +Def(Tid(1_418, "%0000058a"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), Var("#80",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_412, "%00000584"), + Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), + Var("#80",Imm(1)), Direct(Tid(809, "%00000329"))), +Goto(Tid(2_314, "%0000090a"), Attrs([]), Int(1,1), +Direct(Tid(1_421, "%0000058d")))])), Blk(Tid(809, "%00000329"), + Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), +Jmps([Call(Tid(822, "%00000336"), Attrs([Attr("address","0x8B8"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_421, "%0000058d"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_427, "%00000593"), Attrs([Attr("address","0x8B0"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_432, "%00000598"), Attrs([Attr("address","0x8B4"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_271, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x750"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_346, "%0000092a"), 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_347, "%0000092b"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_067, "@strlen"), + Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_761, "%000006e1"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x754"), +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_776, "%000006f0"), Attrs([Attr("address","0x758"), +Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_781, "%000006f5"), + Attrs([Attr("address","0x75C"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..bc2a8c050 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,369 @@ +0000090b: program +000008c4: sub __cxa_finalize(__cxa_finalize_result) +0000090c: __cxa_finalize_result :: out u32 = low:32[R0] + +0000056f: +00000713: R16 := 0x20000 +0000071b: R17 := mem[R16 + 0x18, el]:u64 +00000722: R16 := R16 + 0x18 +00000727: call R17 with noreturn + +000008c5: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000090d: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000033a: +00000341: #34 := R31 - 0x20 +00000346: mem := mem with [#34, el]:u64 <- R29 +0000034b: mem := mem with [#34 + 8, el]:u64 <- R30 +0000034f: R31 := #34 +00000356: R29 := R31 +0000035e: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000364: R19 := 0x20000 +0000036d: R0 := pad:32[mem[R19 + 0x78]] +00000379: #36 := ~~0:0[R0] +00000373: when #36 goto %00000371 +00000901: goto %0000052d + +0000052d: +00000531: R0 := 0x1F000 +00000539: R0 := mem[R0 + 0xFB8, el]:u64 +00000545: #77 := R0 = 0 +0000053f: when #77 goto %0000053d +00000902: goto %0000055d + +0000055d: +00000561: R0 := 0x20000 +00000569: R0 := mem[R0 + 0x58, el]:u64 +0000056e: R30 := 0x8F0 +00000571: call @__cxa_finalize with return %0000053d + +0000053d: +0000054a: R30 := 0x8F4 +0000054c: call @deregister_tm_clones with return %0000054e + +0000054e: +00000553: R0 := 1 +0000055b: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] +00000903: goto %00000371 + +00000371: +00000381: R19 := mem[R31 + 0x10, el]:u64 +0000038b: R29 := mem[R31, el]:u64 +0000038f: R30 := mem[R31 + 8, el]:u64 +00000392: R31 := R31 + 0x20 +00000397: call R30 with noreturn + +000008c9: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +0000090e: __libc_start_main_main :: in u64 = R0 +0000090f: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000910: __libc_start_main_arg3 :: in out u64 = R2 +00000911: __libc_start_main_auxv :: in out u64 = R3 +00000912: __libc_start_main_result :: out u32 = low:32[R0] + +0000027e: +000006fa: R16 := 0x20000 +00000702: R17 := mem[R16 + 0x10, el]:u64 +00000709: R16 := R16 + 0x10 +0000070e: call R17 with noreturn + +000008ca: sub _fini(_fini_result) +00000913: _fini_result :: out u32 = low:32[R0] + +00000020: +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +000008cb: sub _init(_init_result) +00000914: _init_result :: out u32 = low:32[R0] + +000007d9: +000007e2: #108 := R31 - 0x10 +000007e7: mem := mem with [#108, el]:u64 <- R29 +000007ec: mem := mem with [#108 + 8, el]:u64 <- R30 +000007f0: R31 := #108 +000007f7: R29 := R31 +000007fc: R30 := 0x718 +000007fe: call @call_weak_fn with return %00000800 + +00000800: +00000808: R29 := mem[R31, el]:u64 +0000080c: R30 := mem[R31 + 8, el]:u64 +0000080f: R31 := R31 + 0x10 +00000814: call R30 with noreturn + +000008cc: sub _start(_start_result) +00000915: _start_result :: out u32 = low:32[R0] + +00000234: +0000023a: R29 := 0 +00000240: R30 := 0 +00000248: R5 := R0 +00000250: R1 := mem[R31, el]:u64 +00000257: R2 := R31 + 8 +0000025e: R6 := R31 +00000264: R0 := 0x1F000 +0000026c: R0 := mem[R0 + 0xFD8, el]:u64 +00000272: R3 := 0 +00000278: R4 := 0 +0000027d: R30 := 0x830 +00000280: call @__libc_start_main with return %00000282 + +00000282: +00000285: R30 := 0x834 +00000288: call @abort with return %00000904 + +00000904: +00000905: call @call_weak_fn with noreturn + +000008cf: sub abort() + + +00000286: +00000777: R16 := 0x20000 +0000077f: R17 := mem[R16 + 0x38, el]:u64 +00000786: R16 := R16 + 0x38 +0000078b: call R17 with noreturn + +000008d0: sub call_weak_fn(call_weak_fn_result) +00000916: call_weak_fn_result :: out u32 = low:32[R0] + +0000028a: +0000028e: R0 := 0x1F000 +00000296: R0 := mem[R0 + 0xFC0, el]:u64 +000002a2: #12 := R0 = 0 +0000029c: when #12 goto %0000029a +00000906: goto %000005c1 + +0000029a: +000002a7: call R30 with noreturn + +000005c1: +000005c4: goto @__gmon_start__ + +000005c2: +0000075e: R16 := 0x20000 +00000766: R17 := mem[R16 + 0x30, el]:u64 +0000076d: R16 := R16 + 0x30 +00000772: call R17 with noreturn + +000008d2: sub deregister_tm_clones(deregister_tm_clones_result) +00000917: deregister_tm_clones_result :: out u32 = low:32[R0] + +000002ad: +000002b1: R0 := 0x20000 +000002b8: R0 := R0 + 0x78 +000002be: R1 := 0x20000 +000002c5: R1 := R1 + 0x78 +000002cd: #16 := 1 + ~R0 + R1 +000002d1: NF := 63:63[#16] +000002d4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002d7: ZF := #16 = 0 +000002da: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002e8: #21 := ZF +000002e2: when #21 goto %000002e0 +00000907: goto %0000059a + +0000059a: +0000059e: R1 := 0x1F000 +000005a6: R1 := mem[R1 + 0xFB0, el]:u64 +000005b1: #85 := R1 = 0 +000005ab: when #85 goto %000002e0 +00000908: goto %000005b4 + +000002e0: +000002ed: call R30 with noreturn + +000005b4: +000005ba: R16 := R1 +000005bf: call R16 with noreturn + +000008d5: sub frame_dummy(frame_dummy_result) +00000918: frame_dummy_result :: out u32 = low:32[R0] + +0000039d: +0000039f: call @register_tm_clones with noreturn + +000008d6: sub free(free_ptr) +00000919: free_ptr :: in out u64 = R0 + +00000504: +000007a9: R16 := 0x20000 +000007b1: R17 := mem[R16 + 0x48, el]:u64 +000007b8: R16 := R16 + 0x48 +000007bd: call R17 with noreturn + +000008d7: sub main(main_argc, main_argv, main_result) +0000091a: main_argc :: in u32 = low:32[R0] +0000091b: main_argv :: in out u64 = R1 +0000091c: main_result :: out u32 = low:32[R0] + +000003a1: +000003a8: #42 := R31 - 0x30 +000003ad: mem := mem with [#42, el]:u64 <- R29 +000003b2: mem := mem with [#42 + 8, el]:u64 <- R30 +000003b6: R31 := #42 +000003bd: R29 := R31 +000003c5: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003cd: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003d5: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003db: R0 := 0xB +000003e0: R30 := 0x930 +000003e3: call @malloc with return %000003e5 + +000003e5: +000003eb: R1 := R0 +000003f1: R0 := 0x1F000 +000003f9: R0 := mem[R0 + 0xFC8, el]:u64 +00000401: mem := mem with [R0, el]:u64 <- R1 +00000407: R0 := 0x1F000 +0000040f: R0 := mem[R0 + 0xFC8, el]:u64 +00000417: R19 := mem[R0, el]:u64 +0000041d: R0 := 0x1F000 +00000425: R0 := mem[R0 + 0xFD0, el]:u64 +0000042a: R30 := 0x958 +0000042d: call @strlen with return %0000042f + +0000042f: +00000435: R2 := R0 +0000043b: R0 := 0x1F000 +00000443: R1 := mem[R0 + 0xFD0, el]:u64 +0000044b: R0 := R19 +00000450: R30 := 0x96C +00000453: call @memcpy with return %00000455 + +00000455: +00000459: R0 := 0x1F000 +00000461: R0 := mem[R0 + 0xFC8, el]:u64 +00000469: R0 := mem[R0, el]:u64 +0000046e: R30 := 0x97C +00000471: call @puts with return %00000473 + +00000473: +00000477: R0 := 0x1F000 +0000047f: R0 := mem[R0 + 0xFC8, el]:u64 +00000487: R0 := mem[R0, el]:u64 +0000048e: R0 := R0 + 4 +00000496: mem := mem with [R31 + 0x28, el]:u64 <- R0 +0000049c: R0 := 0x1F000 +000004a4: R0 := mem[R0 + 0xFC8, el]:u64 +000004ac: R19 := mem[R0, el]:u64 +000004b2: R0 := 0x1F000 +000004ba: R0 := mem[R0 + 0xFC8, el]:u64 +000004c2: R0 := mem[R0, el]:u64 +000004c7: R30 := 0x9AC +000004c9: call @strlen with return %000004cb + +000004cb: +000004d1: R2 := R0 +000004d8: R1 := 1 +000004e0: R0 := R19 +000004e5: R30 := 0x9BC +000004e8: call @memset with return %000004ea + +000004ea: +000004ee: R0 := 0x1F000 +000004f6: R0 := mem[R0 + 0xFC8, el]:u64 +000004fe: R0 := mem[R0, el]:u64 +00000503: R30 := 0x9CC +00000506: call @free with return %00000508 + +00000508: +0000050d: R0 := 0 +00000515: R19 := mem[R31 + 0x10, el]:u64 +0000051f: R29 := mem[R31, el]:u64 +00000523: R30 := mem[R31 + 8, el]:u64 +00000526: R31 := R31 + 0x30 +0000052b: call R30 with noreturn + +000008d8: sub malloc(malloc_size, malloc_result) +0000091d: malloc_size :: in u64 = R0 +0000091e: malloc_result :: out u64 = R0 + +000003e1: +0000072c: R16 := 0x20000 +00000734: R17 := mem[R16 + 0x20, el]:u64 +0000073b: R16 := R16 + 0x20 +00000740: call R17 with noreturn + +000008d9: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +0000091f: memcpy_dst :: in out u64 = R0 +00000920: memcpy_src :: in out u64 = R1 +00000921: memcpy_n :: in u64 = R2 +00000922: memcpy_result :: out u64 = R0 + +00000451: +000006c8: R16 := 0x20000 +000006d0: R17 := mem[R16, el]:u64 +000006d7: R16 := R16 +000006dc: call R17 with noreturn + +000008da: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000923: memset_buf :: in out u64 = R0 +00000924: memset_c :: in u32 = low:32[R1] +00000925: memset_n :: in u64 = R2 +00000926: memset_result :: out u64 = R0 + +000004e6: +00000745: R16 := 0x20000 +0000074d: R17 := mem[R16 + 0x28, el]:u64 +00000754: R16 := R16 + 0x28 +00000759: call R17 with noreturn + +000008db: sub puts(puts_s, puts_result) +00000927: puts_s :: in u64 = R0 +00000928: puts_result :: out u32 = low:32[R0] + +0000046f: +00000790: R16 := 0x20000 +00000798: R17 := mem[R16 + 0x40, el]:u64 +0000079f: R16 := R16 + 0x40 +000007a4: call R17 with noreturn + +000008dc: sub register_tm_clones(register_tm_clones_result) +00000929: register_tm_clones_result :: out u32 = low:32[R0] + +000002ef: +000002f3: R0 := 0x20000 +000002fa: R0 := R0 + 0x78 +00000300: R1 := 0x20000 +00000307: R1 := R1 + 0x78 +0000030f: R1 := R1 - R0 +00000316: R2 := R1 >> 0x3F +0000031e: R1 := R2 + (R1 ~>> 3) +00000325: R1 := R1 >> 1 +00000331: #30 := R1 = 0 +0000032b: when #30 goto %00000329 +00000909: goto %00000573 + +00000573: +00000577: R2 := 0x1F000 +0000057f: R2 := mem[R2 + 0xFE0, el]:u64 +0000058a: #80 := R2 = 0 +00000584: when #80 goto %00000329 +0000090a: goto %0000058d + +00000329: +00000336: call R30 with noreturn + +0000058d: +00000593: R16 := R2 +00000598: call R16 with noreturn + +000008df: sub strlen(strlen_s, strlen_result) +0000092a: strlen_s :: in u64 = R0 +0000092b: strlen_result :: out u64 = R0 + +0000042b: +000006e1: R16 := 0x20000 +000006e9: R17 := mem[R16 + 8, el]:u64 +000006f0: R16 := R16 + 8 +000006f5: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..96741e11a --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,145 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdb8 0000000000000403 R_AARCH64_RELATIVE 910 +000000000001fdc0 0000000000000403 R_AARCH64_RELATIVE 8c0 +000000000001ffc8 0000000000000403 R_AARCH64_RELATIVE 20080 +000000000001ffd0 0000000000000403 R_AARCH64_RELATIVE 20068 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 914 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffb0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffb8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffc0 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 0x618 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: 0000000000000708 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: 0000000000000618 0 SECTION LOCAL DEFAULT 10 .rela.plt + 11: 0000000000000708 0 SECTION LOCAL DEFAULT 11 .init + 12: 0000000000000720 0 SECTION LOCAL DEFAULT 12 .plt + 13: 0000000000000800 0 SECTION LOCAL DEFAULT 13 .text + 14: 00000000000009dc 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009f0 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009f4 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 0000000000000a30 0 SECTION LOCAL DEFAULT 17 .eh_frame + 18: 000000000001fdb8 0 SECTION LOCAL DEFAULT 18 .init_array + 19: 000000000001fdc0 0 SECTION LOCAL DEFAULT 19 .fini_array + 20: 000000000001fdc8 0 SECTION LOCAL DEFAULT 20 .dynamic + 21: 000000000001ffa8 0 SECTION LOCAL DEFAULT 21 .got + 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt + 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss + 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d + 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag + 29: 0000000000000800 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 0000000000000a44 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009f0 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 0000000000000834 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 0000000000000834 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 0000000000000708 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 00000000000009dc 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 0000000000000718 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009e8 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000850 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000850 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000880 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 00000000000008c0 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdc0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdc0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 0000000000000910 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdb8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdb8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 0000000000000a58 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d + 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d + 57: 0000000000000914 0 NOTYPE LOCAL DEFAULT 13 $x + 58: 0000000000000ab8 0 NOTYPE LOCAL DEFAULT 17 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000adc 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000adc 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 00000000000009f4 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 65: 000000000001ffa8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 66: 0000000000000720 0 NOTYPE LOCAL DEFAULT 12 $x + 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 00000000000009dc 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 85: 00000000000009f0 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 89: 0000000000000800 52 FUNC GLOBAL DEFAULT 13 _start + 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf + 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext + 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 94: 0000000000000914 200 FUNC GLOBAL DEFAULT 13 main + 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 97: 0000000000000708 0 FUNC GLOBAL HIDDEN 11 _init 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 index c5d06fc4a..8b555e7eb 100644 --- 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 @@ -3,9 +3,7 @@ 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])" @@ -20,7 +18,6 @@ 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])" @@ -35,18 +32,8 @@ Ensures DIRECT: "(forall i : bv64 :: (bvuge64(i, R0) && bvult64(i, bvadd64(R0, o 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 @@ -54,23 +41,16 @@ Subroutine: memset 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)))" + 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/correct/malloc_memcpy_strlen_memset_free/proverlog.smt2 b/src/test/correct/malloc_memcpy_strlen_memset_free/proverlog.smt2 new file mode 100644 index 000000000..60523a952 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/proverlog.smt2 @@ -0,0 +1,307 @@ +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |mallocmemcpystrlenmemsetfreebpl.65:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |mallocmemcpystrlenmemsetfreebpl.81:57| + :skolemid |18| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |mallocmemcpystrlenmemsetfreebpl.37:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |mallocmemcpystrlenmemsetfreebpl.73:37| + :skolemid |5| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |mallocmemcpystrlenmemsetfreebpl.65:56| + :skolemid |17| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@2) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@0 index@@2))))))))) + :qid |mallocmemcpystrlenmemsetfreebpl.57:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@0 index@@2)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@3) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000001)) (select gammaMap@@1 index@@3))))) + :qid |mallocmemcpystrlenmemsetfreebpl.53:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@1 index@@3)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@4) (select gammaMap@@2 index@@4)) + :qid |mallocmemcpystrlenmemsetfreebpl.61:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@2 index@@4)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020061)) +(assert (= $buf_addr #x0000000000020078)) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@1 index@@5) (select memory@@1 index@@5)) + :qid |mallocmemcpystrlenmemsetfreebpl.77:36| + :skolemid |6| + :pattern ( (memory_load8_le memory@@1 index@@5)) +))) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@6 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@2 index@@6 value@@0) (|lambda#1| index@@6 #x0000000000000008 value@@0 index@@6 memory@@2)) + :qid |mallocmemcpystrlenmemsetfreebpl.81:38| + :skolemid |7| + :pattern ( (memory_store64_le memory@@2 index@@6 value@@0)) +))) +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(set-info :boogie-vc-id rely_transitive) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 4) (let ((anon0_correct (=> (and (and (= mem@0 mem) (= Gamma_mem@0 Gamma_mem)) (and (= (memory_load8_le mem@0 #x0000000000000990) #x01) (= (memory_load8_le mem@0 #x0000000000000991) #x00))) (=> (and (and (and (= (memory_load8_le mem@0 #x0000000000000992) #x02) (= (memory_load8_le mem@0 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@0 #x000000000001fdc9) #x08))) (and (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x80) (= (memory_load8_le mem@0 #x000000000001fdd1) #x08))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@0 #x000000000001ffd9) #x08))) (and (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020058) #x58) (= (memory_load8_le mem@0 #x0000000000020059) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005a) #x02) (= (memory_load8_le mem@0 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005c) #x00) (= (memory_load8_le mem@0 #x000000000002005d) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000002005e) #x00) (= (memory_load8_le mem@0 #x000000000002005f) #x00)) (and (= mem@1 mem@0) (= Gamma_mem@1 Gamma_mem@0))) (and (and (= (memory_load8_le mem@1 #x0000000000000990) #x01) (= (memory_load8_le mem@1 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@1 #x0000000000000992) #x02) (= (memory_load8_le mem@1 #x0000000000000993) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@1 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@1 #x000000000001fdca) #x00) (= (memory_load8_le mem@1 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdcc) #x00) (= (memory_load8_le mem@1 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdce) #x00) (= (memory_load8_le mem@1 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd0) #x80) (= (memory_load8_le mem@1 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@1 #x000000000001fdd2) #x00) (= (memory_load8_le mem@1 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd4) #x00) (= (memory_load8_le mem@1 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd6) #x00) (= (memory_load8_le mem@1 #x000000000001fdd7) #x00))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@1 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@1 #x000000000001ffda) #x00) (= (memory_load8_le mem@1 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffdc) #x00) (= (memory_load8_le mem@1 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffde) #x00) (= (memory_load8_le mem@1 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020058) #x58) (= (memory_load8_le mem@1 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@1 #x000000000002005a) #x02) (= (memory_load8_le mem@1 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000002005c) #x00) (= (memory_load8_le mem@1 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@1 #x000000000002005e) #x00) (= (memory_load8_le mem@1 #x000000000002005f) #x00))))))) (and (=> (= (ControlFlow 0 2) (- 0 3)) (= mem@1 mem)) (=> (= mem@1 mem) (=> (= (ControlFlow 0 2) (- 0 1)) (= Gamma_mem@1 Gamma_mem))))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 4) 2) anon0_correct))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(pop 1) +; Valid +(get-info :rlimit) +(reset) +(set-option :print-success false) +(set-info :smt-lib-version 2.6) +(set-option :smt.mbqi false) +(set-option :model.compact false) +(set-option :model.v2 true) +(set-option :pp.bv_literals false) +; done setting options + + +(declare-fun tickleBool (Bool) Bool) +(assert (and (tickleBool true) (tickleBool false))) +(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) +(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) +(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) +(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) +(declare-fun $password_addr () (_ BitVec 64)) +(declare-fun $stext_addr () (_ BitVec 64)) +(declare-fun $buf_addr () (_ BitVec 64)) +(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) +(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) +(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) + :qid |mallocmemcpystrlenmemsetfreebpl.65:34| + :skolemid |4| + :pattern ( (gamma_store64 gammaMap index value)) +))) +(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) + :qid |mallocmemcpystrlenmemsetfreebpl.81:57| + :skolemid |18| + :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) +))) +(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) + :qid |mallocmemcpystrlenmemsetfreebpl.37:22| + :skolemid |0| + :pattern ( (L memory index@@0)) +))) +(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) + :qid |mallocmemcpystrlenmemsetfreebpl.73:37| + :skolemid |5| + :pattern ( (memory_load64_le memory@@0 index@@1)) +))) +(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) + :qid |mallocmemcpystrlenmemsetfreebpl.65:56| + :skolemid |17| + :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) +))) +(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@2) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@0 index@@2))))))))) + :qid |mallocmemcpystrlenmemsetfreebpl.57:33| + :skolemid |2| + :pattern ( (gamma_load64 gammaMap@@0 index@@2)) +))) +(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@3) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000001)) (select gammaMap@@1 index@@3))))) + :qid |mallocmemcpystrlenmemsetfreebpl.53:33| + :skolemid |1| + :pattern ( (gamma_load32 gammaMap@@1 index@@3)) +))) +(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@4) (select gammaMap@@2 index@@4)) + :qid |mallocmemcpystrlenmemsetfreebpl.61:32| + :skolemid |3| + :pattern ( (gamma_load8 gammaMap@@2 index@@4)) +))) +(assert (= $password_addr #x0000000000020060)) +(assert (= $stext_addr #x0000000000020061)) +(assert (= $buf_addr #x0000000000020078)) +(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@1 index@@5) (select memory@@1 index@@5)) + :qid |mallocmemcpystrlenmemsetfreebpl.77:36| + :skolemid |6| + :pattern ( (memory_load8_le memory@@1 index@@5)) +))) +(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@6 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@2 index@@6 value@@0) (|lambda#1| index@@6 #x0000000000000008 value@@0 index@@6 memory@@2)) + :qid |mallocmemcpystrlenmemsetfreebpl.81:38| + :skolemid |7| + :pattern ( (memory_store64_le memory@@2 index@@6 value@@0)) +))) +; Valid + +(push 1) +(declare-fun ControlFlow (Int Int) Int) +(declare-fun R31@0 () (_ BitVec 64)) +(declare-fun R31 () (_ BitVec 64)) +(declare-fun |#4@0| () (_ BitVec 64)) +(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R29 () (_ BitVec 64)) +(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R29 () Bool) +(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R30 () (_ BitVec 64)) +(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R30 () Bool) +(declare-fun R29@0 () (_ BitVec 64)) +(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) +(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R0@0 () Bool) +(declare-fun malloc_count@0 () Int) +(declare-fun malloc_count () Int) +(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) +(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) +(declare-fun R0@0 () (_ BitVec 64)) +(declare-fun malloc_base () (Array Int (_ BitVec 64))) +(declare-fun malloc_end () (Array Int (_ BitVec 64))) +(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) +(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) +(declare-fun R8@0 () (_ BitVec 64)) +(declare-fun Gamma_R8@0 () Bool) +(declare-fun stack@5 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@5 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@1 () (_ BitVec 64)) +(declare-fun stack@6 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@6 () (Array (_ BitVec 64) Bool)) +(declare-fun Gamma_R0@1 () Bool) +(declare-fun R0@2 () (_ BitVec 64)) +(declare-fun R1@0 () (_ BitVec 64)) +(declare-fun Gamma_R1@0 () Bool) +(declare-fun R0@3 () (_ BitVec 64)) +(declare-fun Gamma_R0@2 () Bool) +(declare-fun Gamma_mem@3 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@3 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun R8@1 () (_ BitVec 64)) +(declare-fun Gamma_R8@1 () Bool) +(declare-fun mem@4 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@4 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@4 () (_ BitVec 64)) +(declare-fun Gamma_R0@3 () Bool) +(declare-fun R8@2 () (_ BitVec 64)) +(declare-fun Gamma_R8@2 () Bool) +(declare-fun mem@5 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@5 () (Array (_ BitVec 64) Bool)) +(declare-fun R9@0 () (_ BitVec 64)) +(declare-fun Gamma_R9@0 () Bool) +(declare-fun R9@1 () (_ BitVec 64)) +(declare-fun stack@7 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@7 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@6 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@6 () (Array (_ BitVec 64) Bool)) +(declare-fun R9@2 () (_ BitVec 64)) +(declare-fun Gamma_R9@1 () Bool) +(declare-fun stack@8 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_stack@8 () (Array (_ BitVec 64) Bool)) +(declare-fun mem@7 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@7 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@5 () (_ BitVec 64)) +(declare-fun Gamma_R0@4 () Bool) +(declare-fun Gamma_R0@5 () Bool) +(declare-fun R0@6 () (_ BitVec 64)) +(declare-fun R0@7 () (_ BitVec 64)) +(declare-fun Gamma_R0@6 () Bool) +(declare-fun mem@8 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@8 () (Array (_ BitVec 64) Bool)) +(declare-fun R8@3 () (_ BitVec 64)) +(declare-fun Gamma_R8@3 () Bool) +(declare-fun mem@9 () (Array (_ BitVec 64) (_ BitVec 8))) +(declare-fun Gamma_mem@9 () (Array (_ BitVec 64) Bool)) +(declare-fun R0@8 () (_ BitVec 64)) +(declare-fun Gamma_R0@7 () Bool) +(set-info :boogie-vc-id main) +(set-option :timeout 0) +(set-option :rlimit 0) +(assert (not + (=> (= (ControlFlow 0 0) 7) (let ((lmain_correct (=> (and (and (= R31@0 (bvadd R31 #xffffffffffffffc0)) (= |#4@0| (bvadd R31@0 #x0000000000000030))) (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29)))) (=> (and (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (= R29@0 (bvadd R31@0 #x0000000000000030))) (and (and (= stack@2 (memory_store64_le stack@1 (bvadd R29@0 #xfffffffffffffff8) #x0000000000000000)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd R29@0 #xfffffffffffffff8) true))) (and (= stack@3 (memory_store64_le stack@2 (bvadd R29@0 #xfffffffffffffff0) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd R29@0 #xfffffffffffffff0) true))))) (and (=> (= (ControlFlow 0 2) (- 0 6)) (bvugt #x000000000000000b #x0000000000000000)) (=> (bvugt #x000000000000000b #x0000000000000000) (and (=> (= (ControlFlow 0 2) (- 0 5)) (= true true)) (=> (= true true) (=> (= Gamma_R0@0 true) (=> (and (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0))) (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b)))) (=> (and (and (and (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) + :qid |mallocmemcpystrlenmemsetfreebpl.472:19| + :skolemid |9| +)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) + :qid |mallocmemcpystrlenmemsetfreebpl.473:19| + :skolemid |10| +))) (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) + :qid |mallocmemcpystrlenmemsetfreebpl.475:19| + :skolemid |11| +)))) (and (and (= (memory_load8_le mem #x0000000000000990) #x01) (= (memory_load8_le mem #x0000000000000991) #x00)) (and (= (memory_load8_le mem #x0000000000000992) #x02) (= (memory_load8_le mem #x0000000000000993) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00))))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= stack@4 (memory_store64_le stack@3 (bvadd R31@0 #x0000000000000018) #x0000000000020000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd R31@0 #x0000000000000018) true))) (and (= mem@0 mem) (= Gamma_mem@0 Gamma_mem))) (and (and (= (memory_load8_le mem@0 #x0000000000000990) #x01) (= (memory_load8_le mem@0 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@0 #x0000000000000992) #x02) (= (memory_load8_le mem@0 #x0000000000000993) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@0 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x80) (= (memory_load8_le mem@0 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@0 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020058) #x58) (= (memory_load8_le mem@0 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005a) #x02) (= (memory_load8_le mem@0 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005c) #x00) (= (memory_load8_le mem@0 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005e) #x00) (= (memory_load8_le mem@0 #x000000000002005f) #x00))))))) (and (=> (= (ControlFlow 0 2) (- 0 4)) (=> (L mem@0 (bvadd #x0000000000020000 #x0000000000000078)) Gamma_R0@0)) (=> (=> (L mem@0 (bvadd #x0000000000020000 #x0000000000000078)) Gamma_R0@0) (=> (and (= mem@1 (memory_store64_le mem@0 (bvadd #x0000000000020000 #x0000000000000078) R0@0)) (= Gamma_mem@1 (gamma_store64 Gamma_mem@0 (bvadd #x0000000000020000 #x0000000000000078) Gamma_R0@0))) (=> (and (and (and (= mem@2 mem@1) (= Gamma_mem@2 Gamma_mem@1)) (and (= (memory_load8_le mem@2 #x0000000000000990) #x01) (= (memory_load8_le mem@2 #x0000000000000991) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000000992) #x02) (= (memory_load8_le mem@2 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)))) (=> (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08))))) (=> (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00)) (and (= R8@0 (memory_load64_le mem@2 (bvadd #x0000000000020000 #x0000000000000078))) (= Gamma_R8@0 (or (gamma_load64 Gamma_mem@2 (bvadd #x0000000000020000 #x0000000000000078)) (L mem@2 (bvadd #x0000000000020000 #x0000000000000078)))))))) (and (and (and (and (= stack@5 (memory_store64_le stack@4 (bvadd R31@0 #x0000000000000008) R8@0)) (= Gamma_stack@5 (gamma_store64 Gamma_stack@4 (bvadd R31@0 #x0000000000000008) Gamma_R8@0))) (= R0@1 (bvadd #x0000000000020000 #x0000000000000061))) (and (= stack@6 (memory_store64_le stack@5 R31@0 R0@1)) (= Gamma_stack@6 (gamma_store64 Gamma_stack@5 R31@0 true)))) (and (and (and (= Gamma_R0@1 true) (forall ((i@@4 (_ BitVec 64)) ) (! (=> (and (bvule R0@1 i@@4) (bvult i@@4 (bvadd R0@1 R0@2))) (not (= (select mem@2 i@@4) #x00))) + :qid |mallocmemcpystrlenmemsetfreebpl.783:19| + :skolemid |16| +))) (and (= (memory_load8_le mem@2 (bvadd R0@1 R0@2)) #x00) (bvult R0@1 (bvadd (bvadd R0@1 R0@2) #x0000000000000001)))) (and (and (= (memory_load8_le mem@2 #x0000000000000990) #x01) (= (memory_load8_le mem@2 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@2 #x0000000000000992) #x02) (= (memory_load8_le mem@2 #x0000000000000993) #x00)))))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00)))))) (and (and (and (and (and (= R1@0 (memory_load64_le stack@6 R31@0)) (= Gamma_R1@0 (gamma_load64 Gamma_stack@6 R31@0))) (and (= R0@3 (memory_load64_le stack@6 (bvadd R31@0 #x0000000000000008))) (= Gamma_R0@2 (gamma_load64 Gamma_stack@6 (bvadd R31@0 #x0000000000000008))))) (and (and (forall ((i@@5 (_ BitVec 64)) ) (! (= (select Gamma_mem@3 i@@5) (ite (and (bvule R0@3 i@@5) (bvult i@@5 (bvadd R0@3 R0@2))) (gamma_load8 Gamma_mem@3 (bvadd (bvsub i@@5 R0@3) R1@0)) (gamma_load8 Gamma_mem@2 i@@5))) + :qid |mallocmemcpystrlenmemsetfreebpl.551:19| + :skolemid |12| +)) (forall ((i@@6 (_ BitVec 64)) ) (! (= (select mem@3 i@@6) (ite (and (bvule R0@3 i@@6) (bvult i@@6 (bvadd R0@3 R0@2))) (memory_load8_le mem@3 (bvadd (bvsub i@@6 R0@3) R1@0)) (memory_load8_le mem@2 i@@6))) + :qid |mallocmemcpystrlenmemsetfreebpl.552:19| + :skolemid |13| +))) (and (= (memory_load8_le mem@3 #x0000000000000990) #x01) (= (memory_load8_le mem@3 #x0000000000000991) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x0000000000000992) #x02) (= (memory_load8_le mem@3 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@3 #x000000000001fdc9) #x08))) (and (and (= (memory_load8_le mem@3 #x000000000001fdca) #x00) (= (memory_load8_le mem@3 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdcc) #x00) (= (memory_load8_le mem@3 #x000000000001fdcd) #x00))))) (and (and (and (and (= (memory_load8_le mem@3 #x000000000001fdce) #x00) (= (memory_load8_le mem@3 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd0) #x80) (= (memory_load8_le mem@3 #x000000000001fdd1) #x08))) (and (and (= (memory_load8_le mem@3 #x000000000001fdd2) #x00) (= (memory_load8_le mem@3 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd4) #x00) (= (memory_load8_le mem@3 #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000001fdd6) #x00) (= (memory_load8_le mem@3 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@3 #x000000000001ffd9) #x08))) (and (and (= (memory_load8_le mem@3 #x000000000001ffda) #x00) (= (memory_load8_le mem@3 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffdc) #x00) (= (memory_load8_le mem@3 #x000000000001ffdd) #x00))))))) (=> (and (and (and (and (and (and (and (= (memory_load8_le mem@3 #x000000000001ffde) #x00) (= (memory_load8_le mem@3 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@3 #x0000000000020058) #x58) (= (memory_load8_le mem@3 #x0000000000020059) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000002005a) #x02) (= (memory_load8_le mem@3 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@3 #x000000000002005c) #x00) (= (memory_load8_le mem@3 #x000000000002005d) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000002005e) #x00) (= (memory_load8_le mem@3 #x000000000002005f) #x00)) (and (= R8@1 (memory_load64_le stack@6 (bvadd R31@0 #x0000000000000018))) (= Gamma_R8@1 (gamma_load64 Gamma_stack@6 (bvadd R31@0 #x0000000000000018))))) (and (and (= mem@4 mem@3) (= Gamma_mem@4 Gamma_mem@3)) (and (= (memory_load8_le mem@4 #x0000000000000990) #x01) (= (memory_load8_le mem@4 #x0000000000000991) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x0000000000000992) #x02) (= (memory_load8_le mem@4 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@4 #x000000000001fdc9) #x08))) (and (and (= (memory_load8_le mem@4 #x000000000001fdca) #x00) (= (memory_load8_le mem@4 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdcc) #x00) (= (memory_load8_le mem@4 #x000000000001fdcd) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdce) #x00) (= (memory_load8_le mem@4 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd0) #x80) (= (memory_load8_le mem@4 #x000000000001fdd1) #x08))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd2) #x00) (= (memory_load8_le mem@4 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd4) #x00) (= (memory_load8_le mem@4 #x000000000001fdd5) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd6) #x00) (= (memory_load8_le mem@4 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@4 #x000000000001ffd9) #x08))) (and (and (= (memory_load8_le mem@4 #x000000000001ffda) #x00) (= (memory_load8_le mem@4 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffdc) #x00) (= (memory_load8_le mem@4 #x000000000001ffdd) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001ffde) #x00) (= (memory_load8_le mem@4 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@4 #x0000000000020058) #x58) (= (memory_load8_le mem@4 #x0000000000020059) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000002005a) #x02) (= (memory_load8_le mem@4 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005c) #x00) (= (memory_load8_le mem@4 #x000000000002005d) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x000000000002005e) #x00) (= (memory_load8_le mem@4 #x000000000002005f) #x00)) (and (= R0@4 (memory_load64_le mem@4 (bvadd R8@1 #x0000000000000078))) (= Gamma_R0@3 (or (gamma_load64 Gamma_mem@4 (bvadd R8@1 #x0000000000000078)) (L mem@4 (bvadd R8@1 #x0000000000000078)))))) (and (and (= (memory_load8_le mem@4 #x0000000000000990) #x01) (= (memory_load8_le mem@4 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@4 #x0000000000000992) #x02) (= (memory_load8_le mem@4 #x0000000000000993) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@4 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdca) #x00) (= (memory_load8_le mem@4 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdcc) #x00) (= (memory_load8_le mem@4 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdce) #x00) (= (memory_load8_le mem@4 #x000000000001fdcf) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd0) #x80) (= (memory_load8_le mem@4 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdd2) #x00) (= (memory_load8_le mem@4 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd4) #x00) (= (memory_load8_le mem@4 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd6) #x00) (= (memory_load8_le mem@4 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@4 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001ffda) #x00) (= (memory_load8_le mem@4 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001ffdc) #x00) (= (memory_load8_le mem@4 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffde) #x00) (= (memory_load8_le mem@4 #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x0000000000020058) #x58) (= (memory_load8_le mem@4 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005a) #x02) (= (memory_load8_le mem@4 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000002005c) #x00) (= (memory_load8_le mem@4 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005e) #x00) (= (memory_load8_le mem@4 #x000000000002005f) #x00)))) (and (and (and (= R8@2 (memory_load64_le stack@6 (bvadd R31@0 #x0000000000000018))) (= Gamma_R8@2 (gamma_load64 Gamma_stack@6 (bvadd R31@0 #x0000000000000018)))) (and (= mem@5 mem@4) (= Gamma_mem@5 Gamma_mem@4))) (and (and (= (memory_load8_le mem@5 #x0000000000000990) #x01) (= (memory_load8_le mem@5 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@5 #x0000000000000992) #x02) (= (memory_load8_le mem@5 #x0000000000000993) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@5 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@5 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdca) #x00) (= (memory_load8_le mem@5 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdcc) #x00) (= (memory_load8_le mem@5 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdce) #x00) (= (memory_load8_le mem@5 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x000000000001fdd0) #x80) (= (memory_load8_le mem@5 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdd2) #x00) (= (memory_load8_le mem@5 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdd4) #x00) (= (memory_load8_le mem@5 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdd6) #x00) (= (memory_load8_le mem@5 #x000000000001fdd7) #x00))))) (and (and (and (and (= (memory_load8_le mem@5 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@5 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001ffda) #x00) (= (memory_load8_le mem@5 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001ffdc) #x00) (= (memory_load8_le mem@5 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001ffde) #x00) (= (memory_load8_le mem@5 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x0000000000020058) #x58) (= (memory_load8_le mem@5 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005a) #x02) (= (memory_load8_le mem@5 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000002005c) #x00) (= (memory_load8_le mem@5 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005e) #x00) (= (memory_load8_le mem@5 #x000000000002005f) #x00)))))))) (=> (and (and (and (and (and (and (and (and (= R9@0 (memory_load64_le mem@5 (bvadd R8@2 #x0000000000000078))) (= Gamma_R9@0 (or (gamma_load64 Gamma_mem@5 (bvadd R8@2 #x0000000000000078)) (L mem@5 (bvadd R8@2 #x0000000000000078))))) (= R9@1 (bvadd R9@0 #x0000000000000004))) (and (= stack@7 (memory_store64_le stack@6 (bvadd R29@0 #xfffffffffffffff8) R9@1)) (= Gamma_stack@7 (gamma_store64 Gamma_stack@6 (bvadd R29@0 #xfffffffffffffff8) Gamma_R9@0)))) (and (and (= mem@6 mem@5) (= Gamma_mem@6 Gamma_mem@5)) (and (= (memory_load8_le mem@6 #x0000000000000990) #x01) (= (memory_load8_le mem@6 #x0000000000000991) #x00)))) (and (and (and (= (memory_load8_le mem@6 #x0000000000000992) #x02) (= (memory_load8_le mem@6 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@6 #x000000000001fdc9) #x08))) (and (and (= (memory_load8_le mem@6 #x000000000001fdca) #x00) (= (memory_load8_le mem@6 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdcc) #x00) (= (memory_load8_le mem@6 #x000000000001fdcd) #x00))))) (and (and (and (and (= (memory_load8_le mem@6 #x000000000001fdce) #x00) (= (memory_load8_le mem@6 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdd0) #x80) (= (memory_load8_le mem@6 #x000000000001fdd1) #x08))) (and (and (= (memory_load8_le mem@6 #x000000000001fdd2) #x00) (= (memory_load8_le mem@6 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdd4) #x00) (= (memory_load8_le mem@6 #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem@6 #x000000000001fdd6) #x00) (= (memory_load8_le mem@6 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@6 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@6 #x000000000001ffd9) #x08))) (and (and (= (memory_load8_le mem@6 #x000000000001ffda) #x00) (= (memory_load8_le mem@6 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@6 #x000000000001ffdc) #x00) (= (memory_load8_le mem@6 #x000000000001ffdd) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@6 #x000000000001ffde) #x00) (= (memory_load8_le mem@6 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@6 #x0000000000020058) #x58) (= (memory_load8_le mem@6 #x0000000000020059) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000002005a) #x02) (= (memory_load8_le mem@6 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@6 #x000000000002005c) #x00) (= (memory_load8_le mem@6 #x000000000002005d) #x00)))) (and (and (and (= (memory_load8_le mem@6 #x000000000002005e) #x00) (= (memory_load8_le mem@6 #x000000000002005f) #x00)) (and (= R9@2 (memory_load64_le mem@6 (bvadd R8@2 #x0000000000000078))) (= Gamma_R9@1 (or (gamma_load64 Gamma_mem@6 (bvadd R8@2 #x0000000000000078)) (L mem@6 (bvadd R8@2 #x0000000000000078)))))) (and (and (= stack@8 (memory_store64_le stack@7 (bvadd R31@0 #x0000000000000010) R9@2)) (= Gamma_stack@8 (gamma_store64 Gamma_stack@7 (bvadd R31@0 #x0000000000000010) Gamma_R9@1))) (and (= mem@7 mem@6) (= Gamma_mem@7 Gamma_mem@6))))) (and (and (and (and (= (memory_load8_le mem@7 #x0000000000000990) #x01) (= (memory_load8_le mem@7 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@7 #x0000000000000992) #x02) (= (memory_load8_le mem@7 #x0000000000000993) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@7 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@7 #x000000000001fdca) #x00) (= (memory_load8_le mem@7 #x000000000001fdcb) #x00)))) (and (and (and (= (memory_load8_le mem@7 #x000000000001fdcc) #x00) (= (memory_load8_le mem@7 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdce) #x00) (= (memory_load8_le mem@7 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001fdd0) #x80) (= (memory_load8_le mem@7 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@7 #x000000000001fdd2) #x00) (= (memory_load8_le mem@7 #x000000000001fdd3) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@7 #x000000000001fdd4) #x00) (= (memory_load8_le mem@7 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdd6) #x00) (= (memory_load8_le mem@7 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@7 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@7 #x000000000001ffda) #x00) (= (memory_load8_le mem@7 #x000000000001ffdb) #x00)))) (and (and (and (= (memory_load8_le mem@7 #x000000000001ffdc) #x00) (= (memory_load8_le mem@7 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@7 #x000000000001ffde) #x00) (= (memory_load8_le mem@7 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@7 #x0000000000020058) #x58) (= (memory_load8_le mem@7 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@7 #x000000000002005a) #x02) (= (memory_load8_le mem@7 #x000000000002005b) #x00))))) (and (and (and (and (= (memory_load8_le mem@7 #x000000000002005c) #x00) (= (memory_load8_le mem@7 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@7 #x000000000002005e) #x00) (= (memory_load8_le mem@7 #x000000000002005f) #x00))) (and (and (= R0@5 (memory_load64_le mem@7 (bvadd R8@2 #x0000000000000078))) (= Gamma_R0@4 (or (gamma_load64 Gamma_mem@7 (bvadd R8@2 #x0000000000000078)) (L mem@7 (bvadd R8@2 #x0000000000000078))))) (and (= Gamma_R0@5 true) (forall ((i@@7 (_ BitVec 64)) ) (! (=> (and (bvule R0@5 i@@7) (bvult i@@7 (bvadd R0@5 R0@6))) (not (= (select mem@7 i@@7) #x00))) + :qid |mallocmemcpystrlenmemsetfreebpl.783:19| + :skolemid |16| +))))) (and (and (and (= (memory_load8_le mem@7 (bvadd R0@5 R0@6)) #x00) (bvult R0@5 (bvadd (bvadd R0@5 R0@6) #x0000000000000001))) (and (= (memory_load8_le mem@7 #x0000000000000990) #x01) (= (memory_load8_le mem@7 #x0000000000000991) #x00))) (and (and (= (memory_load8_le mem@7 #x0000000000000992) #x02) (= (memory_load8_le mem@7 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@7 #x000000000001fdc9) #x08)))))) (and (and (and (and (and (= (memory_load8_le mem@7 #x000000000001fdca) #x00) (= (memory_load8_le mem@7 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdcc) #x00) (= (memory_load8_le mem@7 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001fdce) #x00) (= (memory_load8_le mem@7 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdd0) #x80) (= (memory_load8_le mem@7 #x000000000001fdd1) #x08)))) (and (and (and (= (memory_load8_le mem@7 #x000000000001fdd2) #x00) (= (memory_load8_le mem@7 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdd4) #x00) (= (memory_load8_le mem@7 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001fdd6) #x00) (= (memory_load8_le mem@7 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@7 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@7 #x000000000001ffd9) #x08))))) (and (and (and (and (= (memory_load8_le mem@7 #x000000000001ffda) #x00) (= (memory_load8_le mem@7 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@7 #x000000000001ffdc) #x00) (= (memory_load8_le mem@7 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001ffde) #x00) (= (memory_load8_le mem@7 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@7 #x0000000000020058) #x58) (= (memory_load8_le mem@7 #x0000000000020059) #x00)))) (and (and (and (= (memory_load8_le mem@7 #x000000000002005a) #x02) (= (memory_load8_le mem@7 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@7 #x000000000002005c) #x00) (= (memory_load8_le mem@7 #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000002005e) #x00) (= (memory_load8_le mem@7 #x000000000002005f) #x00)) (and (= R0@7 (memory_load64_le stack@8 (bvadd R31@0 #x0000000000000010))) (= Gamma_R0@6 (gamma_load64 Gamma_stack@8 (bvadd R31@0 #x0000000000000010)))))))))) (and (=> (= (ControlFlow 0 2) (- 0 3)) true) (=> (and (and (= (memory_load64_le mem@8 $buf_addr) (memory_load64_le mem@7 $buf_addr)) (= (memory_load8_le mem@8 $password_addr) (memory_load8_le mem@7 $password_addr))) (and (forall ((i@@8 (_ BitVec 64)) ) (! (= (select Gamma_mem@8 i@@8) (ite (and (bvule R0@7 i@@8) (bvult i@@8 (bvadd R0@7 R0@6))) true (gamma_load8 Gamma_mem@7 i@@8))) + :qid |mallocmemcpystrlenmemsetfreebpl.630:19| + :skolemid |14| +)) (forall ((i@@9 (_ BitVec 64)) ) (! (= (select mem@8 i@@9) (ite (and (bvule R0@7 i@@9) (bvult i@@9 (bvadd R0@7 R0@6))) ((_ extract 7 0) #x0000000000000001) (memory_load8_le mem@7 i@@9))) + :qid |mallocmemcpystrlenmemsetfreebpl.631:19| + :skolemid |15| +)))) (=> (and (and (and (and (= (memory_load8_le mem@8 #x0000000000000990) #x01) (= (memory_load8_le mem@8 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@8 #x0000000000000992) #x02) (= (memory_load8_le mem@8 #x0000000000000993) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@8 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@8 #x000000000001fdca) #x00) (= (memory_load8_le mem@8 #x000000000001fdcb) #x00)))) (and (and (and (= (memory_load8_le mem@8 #x000000000001fdcc) #x00) (= (memory_load8_le mem@8 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@8 #x000000000001fdce) #x00) (= (memory_load8_le mem@8 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001fdd0) #x80) (= (memory_load8_le mem@8 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@8 #x000000000001fdd2) #x00) (= (memory_load8_le mem@8 #x000000000001fdd3) #x00))))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@8 #x000000000001fdd4) #x00) (= (memory_load8_le mem@8 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@8 #x000000000001fdd6) #x00) (= (memory_load8_le mem@8 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@8 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@8 #x000000000001ffda) #x00) (= (memory_load8_le mem@8 #x000000000001ffdb) #x00)))) (and (and (and (= (memory_load8_le mem@8 #x000000000001ffdc) #x00) (= (memory_load8_le mem@8 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@8 #x000000000001ffde) #x00) (= (memory_load8_le mem@8 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@8 #x0000000000020058) #x58) (= (memory_load8_le mem@8 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@8 #x000000000002005a) #x02) (= (memory_load8_le mem@8 #x000000000002005b) #x00))))) (and (and (and (and (= (memory_load8_le mem@8 #x000000000002005c) #x00) (= (memory_load8_le mem@8 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@8 #x000000000002005e) #x00) (= (memory_load8_le mem@8 #x000000000002005f) #x00))) (and (and (= R8@3 (memory_load64_le stack@8 (bvadd R31@0 #x0000000000000018))) (= Gamma_R8@3 (gamma_load64 Gamma_stack@8 (bvadd R31@0 #x0000000000000018)))) (and (= mem@9 mem@8) (= Gamma_mem@9 Gamma_mem@8)))) (and (and (and (= (memory_load8_le mem@9 #x0000000000000990) #x01) (= (memory_load8_le mem@9 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@9 #x0000000000000992) #x02) (= (memory_load8_le mem@9 #x0000000000000993) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@9 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@9 #x000000000001fdca) #x00) (= (memory_load8_le mem@9 #x000000000001fdcb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@9 #x000000000001fdcc) #x00) (= (memory_load8_le mem@9 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdce) #x00) (= (memory_load8_le mem@9 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdd0) #x80) (= (memory_load8_le mem@9 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@9 #x000000000001fdd2) #x00) (= (memory_load8_le mem@9 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@9 #x000000000001fdd4) #x00) (= (memory_load8_le mem@9 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdd6) #x00) (= (memory_load8_le mem@9 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@9 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@9 #x000000000001ffda) #x00) (= (memory_load8_le mem@9 #x000000000001ffdb) #x00))))) (and (and (and (and (= (memory_load8_le mem@9 #x000000000001ffdc) #x00) (= (memory_load8_le mem@9 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@9 #x000000000001ffde) #x00) (= (memory_load8_le mem@9 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@9 #x0000000000020058) #x58) (= (memory_load8_le mem@9 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@9 #x000000000002005a) #x02) (= (memory_load8_le mem@9 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@9 #x000000000002005c) #x00) (= (memory_load8_le mem@9 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@9 #x000000000002005e) #x00) (= (memory_load8_le mem@9 #x000000000002005f) #x00))) (and (and (= R0@8 (memory_load64_le mem@9 (bvadd R8@3 #x0000000000000078))) (= Gamma_R0@7 (or (gamma_load64 Gamma_mem@9 (bvadd R8@3 #x0000000000000078)) (L mem@9 (bvadd R8@3 #x0000000000000078))))) (= (ControlFlow 0 2) (- 0 1))))))) (forall ((i@@10 Int) (j (_ BitVec 64)) ) (! (=> (and (and (= (select malloc_base@0 i@@10) R0@8) (bvuge j R0@8)) (bvult j (select malloc_end@0 i@@10))) (select Gamma_mem@9 j)) + :qid |mallocmemcpystrlenmemsetfreebpl.142:20| + :skolemid |8| +))))))))))))))))))))))))))) +(let ((PreconditionGeneratedEntry_correct (=> (= (gamma_load8 Gamma_mem $password_addr) false) (=> (and (and (= malloc_count 0) (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr))) (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020050) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020051) #x00) (= (memory_load8_le mem #x0000000000020052) #x00)) (and (= (memory_load8_le mem #x0000000000020053) #x00) (= (memory_load8_le mem #x0000000000020054) #x00))) (and (and (= (memory_load8_le mem #x0000000000020055) #x00) (= (memory_load8_le mem #x0000000000020056) #x00)) (and (= (memory_load8_le mem #x0000000000020057) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (memory_load8_le mem #x0000000000020060) #x07))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020061) #x75) (= (memory_load8_le mem #x0000000000020062) #x73)) (and (= (memory_load8_le mem #x0000000000020063) #x65) (= (memory_load8_le mem #x0000000000020064) #x72))) (and (and (= (memory_load8_le mem #x0000000000020065) #x3a) (= (memory_load8_le mem #x0000000000020066) #x70)) (and (= (memory_load8_le mem #x0000000000020067) #x61) (= (memory_load8_le mem #x0000000000020068) #x73)))) (and (and (and (= (memory_load8_le mem #x0000000000020069) #x73) (= (memory_load8_le mem #x000000000002006a) #x00)) (and (= (memory_load8_le mem #x000000000002006b) #x00) (= (memory_load8_le mem #x0000000000000990) #x01))) (and (and (= (memory_load8_le mem #x0000000000000991) #x00) (= (memory_load8_le mem #x0000000000000992) #x02)) (and (= (memory_load8_le mem #x0000000000000993) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 7) 2))))))) lmain_correct))))) +PreconditionGeneratedEntry_correct))) +)) +(check-sat) +(get-info :reason-unknown) diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile index b0247fc10..0d238eccc 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile @@ -1,2 +1,2 @@ - +ENABLED_COMPILERS=clang clang_O2 gcc gcc_O2 clang_no_plt_no_pic include ../../make/lift-directories.mk diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/Makefile deleted file mode 100644 index 3765849b9..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -CC=clang -CFLAGS=-target $(TARGET) - -include ../../../make/lift.mk diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt index e8c7e49a2..1e0aa4fea 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt @@ -1,759 +1,1189 @@ 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 2428 20 2428)\n(code-region 1984 444 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 168)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2428 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2428 20)\n(llvm:code-entry .text 1984 444)\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 2452 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 2712)\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 2452 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 2712)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2512 200 2512)\n(llvm:section-entry .eh_frame_hdr 2452 60 2452)\n(llvm:section-entry .rodata 2448 4 2448)\n(llvm:section-entry .fini 2428 20 2428)\n(llvm:section-entry .text 1984 444 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 168 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2428 0 2428 2428)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2712 0)\n(mapped 130504 676 64968)\n(named-region 0 2712 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 444 .text)\n(named-region 2428 20 .fini)\n(named-region 2448 4 .rodata)\n(named-region 2452 60 .eh_frame_hdr)\n(named-region 2512 200 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2428 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 444)\n(section 2428 20)\n(section 2448 4)\n(section 2452 60)\n(section 2512 200)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2712 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 168 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2428 2428)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), -Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\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"), -Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), -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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b"), -Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x97C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x990, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x994, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x2c\xfe\xff\xff\x50\x00\x00\x00\x7c\xfe\xff\xff\x64\x00\x00\x00\xac\xfe\xff\xff\x78\x00\x00\x00\xec\xfe\xff\xff\x8c\x00\x00\x00\x3c\xff\xff\xff\xb0\x00\x00\x00\x40\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0x9D0, "\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\xd4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x10\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x2c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x58\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\x84\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\x24\x00\x00\x00\x18\x00\x00\x00\x60\xfe\xff\xff\xa8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x90\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), -Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), -Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x75\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x81\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x8e\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xA97), Attr("segment","02 0 2712")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), -Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), -Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), -Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), +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 x86_64)\n(base-address 0)\n(bias 0)\n(bits 64)\n(code-region 4676 9 4676)\n(code-region 4256 417 4256)\n(code-region 4240 8 4240)\n(code-region 4128 112 4128)\n(code-region 4096 23 4096)\n(code-start 4256)\n(code-start 4496)\n(entry-point 4256)\n(external-reference 16320 __libc_start_main)\n(external-reference 16328 _ITM_deregisterTMCloneTable)\n(external-reference 16336 __gmon_start__)\n(external-reference 16344 _ITM_registerTMCloneTable)\n(external-reference 16352 __cxa_finalize)\n(external-reference 16384 free)\n(external-reference 16392 puts)\n(external-reference 16400 strlen)\n(external-reference 16408 memset)\n(external-reference 16416 memcpy)\n(external-reference 16424 malloc)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry _init 4096 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.2.5 0 0)\n(llvm:code-entry main 4496 177)\n(llvm:code-entry _start 4256 34)\n(llvm:code-entry malloc@GLIBC_2.2.5 0 0)\n(llvm:code-entry memcpy@GLIBC_2.14 0 0)\n(llvm:code-entry memset@GLIBC_2.2.5 0 0)\n(llvm:code-entry strlen@GLIBC_2.2.5 0 0)\n(llvm:code-entry _fini 4676 0)\n(llvm:code-entry puts@GLIBC_2.2.5 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry free@GLIBC_2.2.5 0 0)\n(llvm:code-entry frame_dummy 4480 0)\n(llvm:code-entry __do_global_dtors_aux 4416 0)\n(llvm:code-entry register_tm_clones 4352 0)\n(llvm:code-entry deregister_tm_clones 4304 0)\n(llvm:code-entry .fini 4676 9)\n(llvm:code-entry .text 4256 417)\n(llvm:code-entry .plt.got 4240 8)\n(llvm:code-entry .plt 4128 112)\n(llvm:code-entry .init 4096 23)\n(llvm:elf-program-header 12 11728 560)\n(llvm:elf-program-header 11 0 0)\n(llvm:elf-program-header 10 8196 44)\n(llvm:elf-program-header 09 824 32)\n(llvm:elf-program-header 08 856 68)\n(llvm:elf-program-header 07 824 32)\n(llvm:elf-program-header 06 11744 480)\n(llvm:elf-program-header 05 11728 636)\n(llvm:elf-program-header 04 8192 220)\n(llvm:elf-program-header 03 4096 589)\n(llvm:elf-program-header 02 0 1872)\n(llvm:elf-program-header 01 792 28)\n(llvm:elf-program-header 00 64 728)\n(llvm:elf-program-header-flags 12 false true false false)\n(llvm:elf-program-header-flags 11 false true true false)\n(llvm:elf-program-header-flags 10 false true false false)\n(llvm:elf-program-header-flags 09 false true false false)\n(llvm:elf-program-header-flags 08 false true false false)\n(llvm:elf-program-header-flags 07 false true false false)\n(llvm:elf-program-header-flags 06 false true true false)\n(llvm:elf-program-header-flags 05 true true true false)\n(llvm:elf-program-header-flags 04 true true false false)\n(llvm:elf-program-header-flags 03 true true false true)\n(llvm:elf-program-header-flags 02 true true false false)\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 12 15824 560)\n(llvm:elf-virtual-program-header 11 0 0)\n(llvm:elf-virtual-program-header 10 8196 44)\n(llvm:elf-virtual-program-header 09 824 32)\n(llvm:elf-virtual-program-header 08 856 68)\n(llvm:elf-virtual-program-header 07 824 32)\n(llvm:elf-virtual-program-header 06 15840 480)\n(llvm:elf-virtual-program-header 05 15824 656)\n(llvm:elf-virtual-program-header 04 8192 220)\n(llvm:elf-virtual-program-header 03 4096 589)\n(llvm:elf-virtual-program-header 02 0 1872)\n(llvm:elf-virtual-program-header 01 792 28)\n(llvm:elf-virtual-program-header 00 64 728)\n(llvm:entry-point 4256)\n(llvm:name-reference 16424 malloc)\n(llvm:name-reference 16416 memcpy)\n(llvm:name-reference 16408 memset)\n(llvm:name-reference 16400 strlen)\n(llvm:name-reference 16392 puts)\n(llvm:name-reference 16384 free)\n(llvm:name-reference 16352 __cxa_finalize)\n(llvm:name-reference 16344 _ITM_registerTMCloneTable)\n(llvm:name-reference 16336 __gmon_start__)\n(llvm:name-reference 16328 _ITM_deregisterTMCloneTable)\n(llvm:name-reference 16320 __libc_start_main)\n(llvm:section-entry .shstrtab 0 282 14101)\n(llvm:section-entry .strtab 0 613 13488)\n(llvm:section-entry .symtab 0 1056 12432)\n(llvm:section-entry .comment 0 63 12364)\n(llvm:section-entry .bss 16464 16 12364)\n(llvm:section-entry .data 16432 28 12336)\n(llvm:section-entry .got.plt 16360 72 12264)\n(llvm:section-entry .got 16320 40 12224)\n(llvm:section-entry .dynamic 15840 480 11744)\n(llvm:section-entry .fini_array 15832 8 11736)\n(llvm:section-entry .init_array 15824 8 11728)\n(llvm:section-entry .eh_frame 8240 172 8240)\n(llvm:section-entry .eh_frame_hdr 8196 44 8196)\n(llvm:section-entry .rodata 8192 4 8192)\n(llvm:section-entry .fini 4676 9 4676)\n(llvm:section-entry .text 4256 417 4256)\n(llvm:section-entry .plt.got 4240 8 4240)\n(llvm:section-entry .plt 4128 112 4128)\n(llvm:section-entry .init 4096 23 4096)\n(llvm:section-entry .rela.plt 1728 144 1728)\n(llvm:section-entry .rela.dyn 1536 192 1536)\n(llvm:section-entry .gnu.version_r 1472 64 1472)\n(llvm:section-entry .gnu.version 1442 24 1442)\n(llvm:section-entry .dynstr 1256 185 1256)\n(llvm:section-entry .dynsym 968 288 968)\n(llvm:section-entry .gnu.hash 928 36 928)\n(llvm:section-entry .note.ABI-tag 892 32 892)\n(llvm:section-entry .note.gnu.build-id 856 36 856)\n(llvm:section-entry .note.gnu.property 824 32 824)\n(llvm:section-entry .interp 792 28 792)\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.got 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 .note.gnu.property true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry _init 4096 0 4096 4096)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry main 4496 177 4496 4496)\n(llvm:symbol-entry _start 4256 34 4256 4256)\n(llvm:symbol-entry malloc@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.14 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry _fini 4676 0 4676 4676)\n(llvm:symbol-entry puts@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry free@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry frame_dummy 4480 0 4480 4480)\n(llvm:symbol-entry __do_global_dtors_aux 4416 0 4416 4416)\n(llvm:symbol-entry register_tm_clones 4352 0 4352 4352)\n(llvm:symbol-entry deregister_tm_clones 4304 0 4304 4304)\n(mapped 0 1872 0)\n(mapped 4096 589 4096)\n(mapped 8192 220 8192)\n(mapped 15824 636 11728)\n(named-region 0 1872 02)\n(named-region 4096 589 03)\n(named-region 8192 220 04)\n(named-region 15824 656 05)\n(named-region 792 28 .interp)\n(named-region 824 32 .note.gnu.property)\n(named-region 856 36 .note.gnu.build-id)\n(named-region 892 32 .note.ABI-tag)\n(named-region 928 36 .gnu.hash)\n(named-region 968 288 .dynsym)\n(named-region 1256 185 .dynstr)\n(named-region 1442 24 .gnu.version)\n(named-region 1472 64 .gnu.version_r)\n(named-region 1536 192 .rela.dyn)\n(named-region 1728 144 .rela.plt)\n(named-region 4096 23 .init)\n(named-region 4128 112 .plt)\n(named-region 4240 8 .plt.got)\n(named-region 4256 417 .text)\n(named-region 4676 9 .fini)\n(named-region 8192 4 .rodata)\n(named-region 8196 44 .eh_frame_hdr)\n(named-region 8240 172 .eh_frame)\n(named-region 15824 8 .init_array)\n(named-region 15832 8 .fini_array)\n(named-region 15840 480 .dynamic)\n(named-region 16320 40 .got)\n(named-region 16360 72 .got.plt)\n(named-region 16432 28 .data)\n(named-region 16464 16 .bss)\n(named-region 0 63 .comment)\n(named-region 0 1056 .symtab)\n(named-region 0 613 .strtab)\n(named-region 0 282 .shstrtab)\n(named-symbol 4304 deregister_tm_clones)\n(named-symbol 4352 register_tm_clones)\n(named-symbol 4416 __do_global_dtors_aux)\n(named-symbol 4480 frame_dummy)\n(named-symbol 0 free@GLIBC_2.2.5)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 puts@GLIBC_2.2.5)\n(named-symbol 4676 _fini)\n(named-symbol 0 strlen@GLIBC_2.2.5)\n(named-symbol 0 memset@GLIBC_2.2.5)\n(named-symbol 0 memcpy@GLIBC_2.14)\n(named-symbol 0 malloc@GLIBC_2.2.5)\n(named-symbol 4256 _start)\n(named-symbol 4496 main)\n(named-symbol 0 __cxa_finalize@GLIBC_2.2.5)\n(named-symbol 4096 _init)\n(named-symbol 0 free)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 puts)\n(named-symbol 0 strlen)\n(named-symbol 0 memset)\n(named-symbol 0 memcpy)\n(named-symbol 0 malloc)\n(named-symbol 0 __cxa_finalize)\n(require libc.so.6)\n(section 792 28)\n(section 824 32)\n(section 856 36)\n(section 892 32)\n(section 928 36)\n(section 968 288)\n(section 1256 185)\n(section 1442 24)\n(section 1472 64)\n(section 1536 192)\n(section 1728 144)\n(section 4096 23)\n(section 4128 112)\n(section 4240 8)\n(section 4256 417)\n(section 4676 9)\n(section 8192 4)\n(section 8196 44)\n(section 8240 172)\n(section 15824 8)\n(section 15832 8)\n(section 15840 480)\n(section 16320 40)\n(section 16360 72)\n(section 16432 28)\n(section 16464 16)\n(section 0 63)\n(section 0 1056)\n(section 0 613)\n(section 0 282)\n(segment 0 1872 true false false)\n(segment 4096 589 true false true)\n(segment 8192 220 true false false)\n(segment 15824 656 true true false)\n(subarch \"\")\n(symbol-chunk 4256 34 4256)\n(symbol-chunk 4496 177 4496)\n(symbol-value 4304 4304)\n(symbol-value 4352 4352)\n(symbol-value 4416 4416)\n(symbol-value 4480 4480)\n(symbol-value 4676 4676)\n(symbol-value 4256 4256)\n(symbol-value 4496 4496)\n(symbol-value 4096 4096)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"x86_64-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x00\x10"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xe0\x2d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\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\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\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\x53\xe5\x74\x64\x04\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\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\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xe0\x2d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\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\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\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\x53\xe5\x74\x64\x04\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2c\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\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x78\x38\x36\x2d\x36\x34\x2e\x73\x6f\x2e\x32\x00\x00\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x47\x4e\x55\x00\x02\x80\x00\xc0\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x4f\x89\xd4\x0c\x15\x5f\x13\xa2\x95\x91\x94\x1e\x8c\x18\x3b\x1e\xa5\xbd\xe9\x57\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xd1\x65\xce\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e"), +Section(".interp", 0x318, "\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x78\x38\x36\x2d\x36\x34\x2e\x73\x6f\x2e\x32\x00"), +Section(".note.gnu.property", 0x338, "\x04\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x47\x4e\x55\x00\x02\x80\x00\xc0\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"), +Section(".note.gnu.build-id", 0x358, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x4f\x89\xd4\x0c\x15\x5f\x13\xa2\x95\x91\x94\x1e\x8c\x18\x3b\x1e\xa5\xbd\xe9\x57"), +Section(".note.ABI-tag", 0x37C, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x3A0, "\x02\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xd1\x65\xce\x6d"), +Section(".dynsym", 0x3C8, "\x00\x00\x00\x00\x00\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\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\x01\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\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\x41\x00\x00\x00\x12\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\x9f\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"), +Section(".dynstr", 0x4E8, "\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\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\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", 0x5A2, "\x00\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x04\x00\x02\x00\x01\x00\x02\x00"), +Section(".gnu.version_r", 0x5C0, "\x01\x00\x03\x00\x48\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x94\x91\x96\x06\x00\x00\x04\x00\x52\x00\x00\x00\x10\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x5d\x00\x00\x00\x10\x00\x00\x00\x75\x1a\x69\x09\x00\x00\x02\x00\x68\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x600, "\xd0\x3d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x80\x11\x00\x00\x00\x00\x00\x00\xd8\x3d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x40\x11\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\xc0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x6C0, "\x00\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".plt", 0x1020, "\xff\x35\xca\x2f\x00\x00\xff\x25\xcc\x2f\x00\x00\x0f\x1f\x40\x00\xff\x25\xca\x2f\x00\x00\x68\x00\x00\x00\x00\xe9\xe0\xff\xff\xff\xff\x25\xc2\x2f\x00\x00\x68\x01\x00\x00\x00\xe9\xd0\xff\xff\xff\xff\x25\xba\x2f\x00\x00\x68\x02\x00\x00\x00\xe9\xc0\xff\xff\xff\xff\x25\xb2\x2f\x00\x00\x68\x03\x00\x00\x00\xe9\xb0\xff\xff\xff\xff\x25\xaa\x2f\x00\x00\x68\x04\x00\x00\x00\xe9\xa0\xff\xff\xff\xff\x25\xa2\x2f\x00\x00\x68\x05\x00\x00\x00\xe9\x90\xff\xff\xff"), +Section(".plt.got", 0x1090, "\xff\x25\x4a\x2f\x00\x00\x66\x90"), +Section(".text", 0x10A0, "\x31\xed\x49\x89\xd1\x5e\x48\x89\xe2\x48\x83\xe4\xf0\x50\x54\x45\x31\xc0\x31\xc9\x48\x8d\x3d\xd5\x00\x00\x00\xff\x15\xff\x2e\x00\x00\xf4\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x0f\x1f\x40\x00\x48\x8d\x3d\x79\x2f\x00\x00\x48\x8d\x05\x72\x2f\x00\x00\x48\x39\xf8\x74\x15\x48\x8b\x05\xde\x2e\x00\x00\x48\x85\xc0\x74\x09\xff\xe0\x0f\x1f\x80\x00\x00\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\x48\x8d\x3d\x49\x2f\x00\x00\x48\x8d\x35\x42\x2f\x00\x00\x48\x29\xfe\x48\x89\xf0\x48\xc1\xee\x3f\x48\xc1\xf8\x03\x48\x01\xc6\x48\xd1\xfe\x74\x14\x48\x8b\x05\xad\x2e\x00\x00\x48\x85\xc0\x74\x08\xff\xe0\x66\x0f\x1f\x44\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\xf3\x0f\x1e\xfa\x80\x3d\x05\x2f\x00\x00\x00\x75\x2b\x55\x48\x83\x3d\x8a\x2e\x00\x00\x00\x48\x89\xe5\x74\x0c\x48\x8b\x3d\xd6\x2e\x00\x00\xe8\x29\xff\xff\xff\xe8\x64\xff\xff\xff\xc6\x05\xdd\x2e\x00\x00\x01\x5d\xc3\x0f\x1f\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\xf3\x0f\x1e\xfa\xe9\x77\xff\xff\xff\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x48\x83\xec\x20\x48\xc7\x45\xf8\x00\x00\x00\x00\x48\xc7\x45\xf0\x00\x00\x00\x00\xbf\x0b\x00\x00\x00\xe8\xce\xfe\xff\xff\x48\x89\x05\x9f\x2e\x00\x00\x48\x8b\x05\x98\x2e\x00\x00\x48\x89\x45\xe0\x48\x8d\x3d\x76\x2e\x00\x00\xe8\x80\xfe\xff\xff\x48\x8b\x7d\xe0\x48\x89\xc2\x48\x8d\x35\x63\x2e\x00\x00\xe8\x8d\xfe\xff\xff\x48\x8b\x3d\x6e\x2e\x00\x00\xe8\x51\xfe\xff\xff\x48\x8b\x05\x62\x2e\x00\x00\x48\x83\xc0\x04\x48\x89\x45\xf8\x48\x8b\x45\xf8\xc6\x00\x00\x48\x8b\x05\x4c\x2e\x00\x00\x48\x89\x45\xe8\x48\x8b\x3d\x41\x2e\x00\x00\xe8\x34\xfe\xff\xff\x48\x8b\x7d\xe8\x48\x89\xc2\xbe\x01\x00\x00\x00\xe8\x33\xfe\xff\xff\x48\x8b\x3d\x24\x2e\x00\x00\xe8\xf7\xfd\xff\xff\x31\xc0\x48\x83\xc4\x20\x5d\xc3"), +Section(".init", 0x1000, "\x48\x83\xec\x08\x48\x8b\x05\xc5\x2f\x00\x00\x48\x85\xc0\x74\x02\xff\xd0\x48\x83\xc4\x08\xc3"), +Section(".fini", 0x1244, "\x48\x83\xec\x08\x48\x83\xc4\x08\xc3"), +Section(".eh_frame_hdr", 0x2004, "\x01\x1b\x03\x3b\x28\x00\x00\x00\x04\x00\x00\x00\x1c\xf0\xff\xff\x74\x00\x00\x00\x8c\xf0\xff\xff\x9c\x00\x00\x00\x9c\xf0\xff\xff\x44\x00\x00\x00\x8c\xf1\xff\xff\xb4\x00\x00\x00"), +Section(".eh_frame", 0x2030, "\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x1b\x0c\x07\x08\x90\x01\x07\x10\x14\x00\x00\x00\x1c\x00\x00\x00\x50\xf0\xff\xff\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x1b\x0c\x07\x08\x90\x01\x00\x00\x24\x00\x00\x00\x1c\x00\x00\x00\xa0\xef\xff\xff\x70\x00\x00\x00\x00\x0e\x10\x46\x0e\x18\x4a\x0f\x0b\x77\x08\x80\x00\x3f\x1a\x3b\x2a\x33\x24\x22\x00\x00\x00\x00\x14\x00\x00\x00\x44\x00\x00\x00\xe8\xef\xff\xff\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x5c\x00\x00\x00\xd0\xf0\xff\xff\xb1\x00\x00\x00\x00\x41\x0e\x10\x86\x02\x43\x0d\x06\x02\xac\x0c\x07\x08\x00\x00\x00\x00\x00\x00"), +Section(".rodata", 0x2000, "\x01\x00\x02\x00"), +Section(".fini_array", 0x3DD8, "\x40\x11\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x3DE0, "\x01\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x44\x12\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\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\xd8\x3d\x00\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\xa0\x03\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xc8\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\x3f\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x90\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\xc0\x06\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x06\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\xc0\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\xa2\x05\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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", 0x3DD0, "\x80\x11\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x3FC0, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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.plt", 0x3FE8, "\xe0\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x10\x00\x00\x00\x00\x00\x00\x46\x10\x00\x00\x00\x00\x00\x00\x56\x10\x00\x00\x00\x00\x00\x00\x66\x10\x00\x00\x00\x00\x00\x00\x76\x10\x00\x00\x00\x00\x00\x00\x86\x10\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x4030, "\x00\x00\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00")]), +Memmap([Annotation(Region(0x0,0x74F), Attr("segment","02 0 1872")), +Annotation(Region(0x0,0x119), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x264), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x41F), Attr("section","\".symtab\"")), Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), -Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), -Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), -Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), -Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), -Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), -Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), -Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), -Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), -Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), -Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), -Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x97B), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x97B), Attr("symbol-info","main 0x8D4 168")), -Annotation(Region(0x97C,0x98F), Attr("section","\".fini\"")), -Annotation(Region(0x990,0x993), Attr("section","\".rodata\"")), -Annotation(Region(0x994,0x9CF), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x9D0,0xA97), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), -Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), -Annotation(Region(0x7C0,0x97B), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x97B), Attr("code-region","()")), -Annotation(Region(0x97C,0x98F), Attr("code-region","()"))]), -Program(Tid(2_030, "%000007ee"), Attrs([]), - Subs([Sub(Tid(2_002, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_031, "%000007ef"), +Annotation(Region(0x318,0x333), Attr("section","\".interp\"")), +Annotation(Region(0x338,0x357), Attr("section","\".note.gnu.property\"")), +Annotation(Region(0x358,0x37B), Attr("section","\".note.gnu.build-id\"")), +Annotation(Region(0x37C,0x39B), Attr("section","\".note.ABI-tag\"")), +Annotation(Region(0x3A0,0x3C3), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x3C8,0x4E7), Attr("section","\".dynsym\"")), +Annotation(Region(0x4E8,0x5A0), Attr("section","\".dynstr\"")), +Annotation(Region(0x5A2,0x5B9), Attr("section","\".gnu.version\"")), +Annotation(Region(0x5C0,0x5FF), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x600,0x6BF), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x6C0,0x74F), Attr("section","\".rela.plt\"")), +Annotation(Region(0x1000,0x124C), Attr("segment","03 0x1000 589")), +Annotation(Region(0x1020,0x108F), Attr("section","\".plt\"")), +Annotation(Region(0x1090,0x1097), Attr("section","\".plt.got\"")), +Annotation(Region(0x1090,0x1097), Attr("code-region","()")), +Annotation(Region(0x10A0,0x10C1), Attr("symbol","\"_start\"")), +Annotation(Region(0x10A0,0x10C1), Attr("symbol-info","_start 0x10A0 34")), +Annotation(Region(0x10A0,0x1240), Attr("section","\".text\"")), +Annotation(Region(0x1190,0x1240), Attr("symbol","\"main\"")), +Annotation(Region(0x1000,0x1016), Attr("section","\".init\"")), +Annotation(Region(0x1000,0x1016), Attr("code-region","()")), +Annotation(Region(0x1020,0x108F), Attr("code-region","()")), +Annotation(Region(0x10A0,0x1240), Attr("code-region","()")), +Annotation(Region(0x1190,0x1240), Attr("symbol-info","main 0x1190 177")), +Annotation(Region(0x1244,0x124C), Attr("section","\".fini\"")), +Annotation(Region(0x1244,0x124C), Attr("code-region","()")), +Annotation(Region(0x2000,0x20DB), Attr("segment","04 0x2000 220")), +Annotation(Region(0x2004,0x202F), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x2030,0x20DB), Attr("section","\".eh_frame\"")), +Annotation(Region(0x2000,0x2003), Attr("section","\".rodata\"")), +Annotation(Region(0x3DD0,0x404B), Attr("segment","05 0x3DD0 656")), +Annotation(Region(0x3DD8,0x3DDF), Attr("section","\".fini_array\"")), +Annotation(Region(0x3DE0,0x3FBF), Attr("section","\".dynamic\"")), +Annotation(Region(0x3DD0,0x3DD7), Attr("section","\".init_array\"")), +Annotation(Region(0x3FC0,0x3FE7), Attr("section","\".got\"")), +Annotation(Region(0x3FE8,0x402F), Attr("section","\".got.plt\"")), +Annotation(Region(0x4030,0x404B), Attr("section","\".data\""))]), +Program(Tid(2_916, "%00000b64"), Attrs([]), + Subs([Sub(Tid(2_892, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1090"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_917, "%00000b65"), 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_212, "@__cxa_finalize"), - Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x740"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), 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_618, "%00000652"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_003, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_032, "%000007f0"), +LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(2_181, "@__cxa_finalize"), Attrs([Attr("address","0x1090")]), + Phis([]), Defs([]), Jmps([Call(Tid(2_889, "%00000b49"), + Attrs([Attr("address","0x1090"), Attr("insn","jmpq *0x2f4a(%rip)")]), + Int(1,1), (Direct(Tid(2_887, "@__cxa_finalize:external")),))]))])), +Sub(Tid(2_893, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1140")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_918, "%00000b66"), 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(759, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(763, "%000002fb"), - Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(769, "%00000301"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(775, "%00000307"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(785, "%00000311"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(793, "%00000319"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), +LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(1_300, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x1140")]), Phis([]), +Defs([Def(Tid(1_324, "%0000052c"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("#12582884",Imm(8)), +Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8)), +Def(Tid(1_328, "%00000530"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("CF",Imm(1)), +LT(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),Int(0,8))), +Def(Tid(1_334, "%00000536"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("OF",Imm(1)), +HIGH(1,AND(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),XOR(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),Var("#12582884",Imm(8)))))), +Def(Tid(1_339, "%0000053b"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("AF",Imm(1)), +EQ(Int(16,8),AND(Int(16,8),XOR(Var("#12582884",Imm(8)),Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8))))), +Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(8)),XOR(RSHIFT(Var("#12582884",Imm(8)),Int(4,8)),Var("#12582884",Imm(8))),Let(Var("$1",Imm(8)),XOR(RSHIFT(Var("$0",Imm(8)),Int(2,8)),Var("$0",Imm(8))),XOR(RSHIFT(Var("$1",Imm(8)),Int(1,8)),Var("$1",Imm(8)))))))), +Def(Tid(1_348, "%00000544"), Attrs([Attr("address","0x1144"), +Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582884",Imm(8)))), Def(Tid(1_352, "%00000548"), + Attrs([Attr("address","0x1144"), Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), + Var("ZF",Imm(1)), EQ(Int(0,8),Var("#12582884",Imm(8))))]), +Jmps([Goto(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x114B"), +Attr("insn","jne 0x2b")]), NOT(Var("ZF",Imm(1))), +Direct(Tid(1_356, "%0000054c"))), Goto(Tid(2_894, "%00000b4e"), Attrs([]), + Int(1,1), Direct(Tid(2_008, "%000007d8")))])), Blk(Tid(1_356, "%0000054c"), + Attrs([Attr("address","0x1178")]), Phis([]), +Defs([Def(Tid(1_373, "%0000055d"), Attrs([Attr("address","0x1178"), +Attr("insn","retq")]), Var("#12582882",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(1_377, "%00000561"), Attrs([Attr("address","0x1178"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_380, "%00000564"), + Attrs([Attr("address","0x1178"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582882",Imm(64))),))])), Blk(Tid(2_008, "%000007d8"), + Attrs([Attr("address","0x114D")]), Phis([]), +Defs([Def(Tid(2_020, "%000007e4"), Attrs([Attr("address","0x114D"), +Attr("insn","pushq %rbp")]), Var("#12582870",Imm(64)), Var("RBP",Imm(64))), +Def(Tid(2_024, "%000007e8"), Attrs([Attr("address","0x114D"), +Attr("insn","pushq %rbp")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_030, "%000007ee"), + Attrs([Attr("address","0x114D"), Attr("insn","pushq %rbp")]), 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(798, "%0000031e"), Attrs([Attr("address","0x88C"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(805, "%00000325"), Attrs([Attr("address","0x890"), -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(811, "%0000032b"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(809, "%00000329"))), -Goto(Tid(2_004, "%000007d4"), Attrs([]), Int(1,1), -Direct(Tid(1_157, "%00000485")))])), Blk(Tid(1_157, "%00000485"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x898"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x89C"), -Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_173, "%00000495"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_171, "%00000493"))), Goto(Tid(2_005, "%000007d5"), Attrs([]), - Int(1,1), Direct(Tid(1_196, "%000004ac")))])), Blk(Tid(1_196, "%000004ac"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x8A8"), -Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_214, "%000004be"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_002, "@__cxa_finalize")),Direct(Tid(1_171, "%00000493"))))])), -Blk(Tid(1_171, "%00000493"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_016, "@deregister_tm_clones")),Direct(Tid(1_183, "%0000049f"))))])), -Blk(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8B4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x8B8"), -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_006, "%000007d6"), Attrs([]), Int(1,1), -Direct(Tid(809, "%00000329")))])), Blk(Tid(809, "%00000329"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(819, "%00000333"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(826, "%0000033a"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(831, "%0000033f"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(835, "%00000343"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(840, "%00000348"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_007, "@__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_033, "%000007f1"), - 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_034, "%000007f2"), 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_035, "%000007f3"), 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_036, "%000007f4"), 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_037, "%000007f5"), 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(592, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_578, "%0000062a"), Attrs([Attr("address","0x730"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_585, "%00000631"), 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_591, "%00000637"), 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_596, "%0000063c"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_008, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x97C")]), - "_fini", Args([Arg(Tid(2_038, "%000007f6"), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582870",Imm(64)),LittleEndian(),64)), +Def(Tid(2_054, "%00000806"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("#12582869",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64)), +Def(Tid(2_058, "%0000080a"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("CF",Imm(1)), +LT(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),Int(0,64))), +Def(Tid(2_064, "%00000810"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("OF",Imm(1)), +HIGH(1,AND(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),XOR(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),Var("#12582869",Imm(64)))))), +Def(Tid(2_069, "%00000815"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(Var("#12582869",Imm(64)),Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64))))), +Def(Tid(2_074, "%0000081a"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582869",Imm(64)),Int(4,64)),Var("#12582869",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_078, "%0000081e"), Attrs([Attr("address","0x114E"), +Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582869",Imm(64)))), Def(Tid(2_082, "%00000822"), + Attrs([Attr("address","0x114E"), Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582869",Imm(64)))), +Def(Tid(2_090, "%0000082a"), Attrs([Attr("address","0x1156"), +Attr("insn","movq %rsp, %rbp")]), Var("RBP",Imm(64)), Var("RSP",Imm(64)))]), +Jmps([Goto(Tid(2_097, "%00000831"), Attrs([Attr("address","0x1159"), +Attr("insn","je 0xc")]), Var("ZF",Imm(1)), Direct(Tid(2_094, "%0000082e"))), +Goto(Tid(2_895, "%00000b4f"), Attrs([]), Int(1,1), +Direct(Tid(2_167, "%00000877")))])), Blk(Tid(2_167, "%00000877"), + Attrs([Attr("address","0x115B")]), Phis([]), +Defs([Def(Tid(2_173, "%0000087d"), Attrs([Attr("address","0x115B"), +Attr("insn","movq 0x2ed6(%rip), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16440,64),LittleEndian(),64)), +Def(Tid(2_185, "%00000889"), Attrs([Attr("address","0x1162"), +Attr("insn","callq -0xd7")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_190, "%0000088e"), + Attrs([Attr("address","0x1162"), Attr("insn","callq -0xd7")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4455,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_192, "%00000890"), Attrs([Attr("address","0x1162"), +Attr("insn","callq -0xd7")]), Int(1,1), +(Direct(Tid(2_892, "@__cxa_finalize")),Direct(Tid(2_094, "%0000082e"))))])), +Blk(Tid(2_094, "%0000082e"), Attrs([Attr("address","0x1167")]), Phis([]), +Defs([Def(Tid(2_109, "%0000083d"), Attrs([Attr("address","0x1167"), +Attr("insn","callq -0x9c")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_114, "%00000842"), + Attrs([Attr("address","0x1167"), Attr("insn","callq -0x9c")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4460,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_116, "%00000844"), Attrs([Attr("address","0x1167"), +Attr("insn","callq -0x9c")]), Int(1,1), +(Direct(Tid(2_901, "@deregister_tm_clones")),Direct(Tid(2_118, "%00000846"))))])), +Blk(Tid(2_118, "%00000846"), Attrs([Attr("address","0x116C")]), Phis([]), +Defs([Def(Tid(2_124, "%0000084c"), Attrs([Attr("address","0x116C"), +Attr("insn","movb $0x1, 0x2edd(%rip)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Int(16464,64),Int(1,8),LittleEndian(),8)), +Def(Tid(2_136, "%00000858"), Attrs([Attr("address","0x1173"), +Attr("insn","popq %rbp")]), Var("RBP",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(2_140, "%0000085c"), Attrs([Attr("address","0x1173"), +Attr("insn","popq %rbp")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_153, "%00000869"), + Attrs([Attr("address","0x1174"), Attr("insn","retq")]), + Var("#12582867",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(2_157, "%0000086d"), Attrs([Attr("address","0x1174"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(2_160, "%00000870"), + Attrs([Attr("address","0x1174"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582867",Imm(64))),))]))])), Sub(Tid(2_896, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1244")]), + "_fini", Args([Arg(Tid(2_919, "%00000b67"), 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","0x97C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0x980"), -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","0x980"), -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","0x980"), -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","0x980"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x984"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x988"), -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","0x988"), -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","0x988"), -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","0x98C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_009, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_039, "%000007f7"), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(21, "@_fini"), + Attrs([Attr("address","0x1244")]), Phis([]), Defs([Def(Tid(56, "%00000038"), + Attrs([Attr("address","0x1244"), Attr("insn","subq $0x8, %rsp")]), + Var("#12582911",Imm(64)), Var("RSP",Imm(64))), Def(Tid(60, "%0000003c"), + Attrs([Attr("address","0x1244"), Attr("insn","subq $0x8, %rsp")]), + Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(8,64))), +Def(Tid(64, "%00000040"), Attrs([Attr("address","0x1244"), +Attr("insn","subq $0x8, %rsp")]), Var("CF",Imm(1)), +LT(Var("#12582911",Imm(64)),Int(8,64))), Def(Tid(70, "%00000046"), + Attrs([Attr("address","0x1244"), Attr("insn","subq $0x8, %rsp")]), + Var("OF",Imm(1)), +HIGH(1,AND(XOR(Var("#12582911",Imm(64)),Int(8,64)),XOR(Var("#12582911",Imm(64)),Var("RSP",Imm(64)))))), +Def(Tid(75, "%0000004b"), Attrs([Attr("address","0x1244"), +Attr("insn","subq $0x8, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582911",Imm(64))),Int(8,64))))), +Def(Tid(80, "%00000050"), Attrs([Attr("address","0x1244"), +Attr("insn","subq $0x8, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(84, "%00000054"), Attrs([Attr("address","0x1244"), +Attr("insn","subq $0x8, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(88, "%00000058"), + Attrs([Attr("address","0x1244"), Attr("insn","subq $0x8, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(117, "%00000075"), Attrs([Attr("address","0x1248"), +Attr("insn","addq $0x8, %rsp")]), Var("#12582908",Imm(64)), +Var("RSP",Imm(64))), Def(Tid(121, "%00000079"), + Attrs([Attr("address","0x1248"), Attr("insn","addq $0x8, %rsp")]), + Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(8,64))), +Def(Tid(126, "%0000007e"), Attrs([Attr("address","0x1248"), +Attr("insn","addq $0x8, %rsp")]), Var("CF",Imm(1)), +LT(Var("RSP",Imm(64)),Var("#12582908",Imm(64)))), Def(Tid(134, "%00000086"), + Attrs([Attr("address","0x1248"), Attr("insn","addq $0x8, %rsp")]), + Var("OF",Imm(1)), +AND(EQ(HIGH(1,Var("#12582908",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582908",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582908",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), +Def(Tid(139, "%0000008b"), Attrs([Attr("address","0x1248"), +Attr("insn","addq $0x8, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582908",Imm(64))),Int(8,64))))), +Def(Tid(144, "%00000090"), Attrs([Attr("address","0x1248"), +Attr("insn","addq $0x8, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(148, "%00000094"), Attrs([Attr("address","0x1248"), +Attr("insn","addq $0x8, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(152, "%00000098"), + Attrs([Attr("address","0x1248"), Attr("insn","addq $0x8, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(165, "%000000a5"), Attrs([Attr("address","0x124C"), +Attr("insn","retq")]), Var("#12582905",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(169, "%000000a9"), Attrs([Attr("address","0x124C"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(172, "%000000ac"), + Attrs([Attr("address","0x124C"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582905",Imm(64))),))]))])), Sub(Tid(2_897, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1000")]), + "_init", Args([Arg(Tid(2_920, "%00000b68"), 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_778, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_784, "%000006f8"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_790, "%000006fe"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_796, "%00000704"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_800, "%00000708"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#7",Imm(64))), Def(Tid(1_806, "%0000070e"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_811, "%00000713"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_813, "%00000715"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_014, "@call_weak_fn")),Direct(Tid(1_815, "%00000717"))))])), -Blk(Tid(1_815, "%00000717"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_820, "%0000071c"), 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_825, "%00000721"), 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_829, "%00000725"), 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_834, "%0000072a"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_010, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_040, "%000007f8"), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(2_652, "@_init"), + Attrs([Attr("address","0x1000")]), Phis([]), +Defs([Def(Tid(2_676, "%00000a74"), Attrs([Attr("address","0x1000"), +Attr("insn","subq $0x8, %rsp")]), Var("#12582855",Imm(64)), +Var("RSP",Imm(64))), Def(Tid(2_680, "%00000a78"), + Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), + Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(8,64))), +Def(Tid(2_684, "%00000a7c"), Attrs([Attr("address","0x1000"), +Attr("insn","subq $0x8, %rsp")]), Var("CF",Imm(1)), +LT(Var("#12582855",Imm(64)),Int(8,64))), Def(Tid(2_690, "%00000a82"), + Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), + Var("OF",Imm(1)), +HIGH(1,AND(XOR(Var("#12582855",Imm(64)),Int(8,64)),XOR(Var("#12582855",Imm(64)),Var("RSP",Imm(64)))))), +Def(Tid(2_695, "%00000a87"), Attrs([Attr("address","0x1000"), +Attr("insn","subq $0x8, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582855",Imm(64))),Int(8,64))))), +Def(Tid(2_700, "%00000a8c"), Attrs([Attr("address","0x1000"), +Attr("insn","subq $0x8, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_704, "%00000a90"), Attrs([Attr("address","0x1000"), +Attr("insn","subq $0x8, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(2_708, "%00000a94"), + Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(2_716, "%00000a9c"), Attrs([Attr("address","0x1004"), +Attr("insn","movq 0x2fc5(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16336,64),LittleEndian(),64)), +Def(Tid(2_734, "%00000aae"), Attrs([Attr("address","0x100B"), +Attr("insn","testq %rax, %rax")]), Var("#12582852",Imm(64)), +Var("RAX",Imm(64))), Def(Tid(2_737, "%00000ab1"), + Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), + Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_740, "%00000ab4"), + Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), + Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_743, "%00000ab7"), + Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), + Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_748, "%00000abc"), + Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), + Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582852",Imm(64)),Int(4,64)),Var("#12582852",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_752, "%00000ac0"), Attrs([Attr("address","0x100B"), +Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582852",Imm(64)))), Def(Tid(2_756, "%00000ac4"), + Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582852",Imm(64))))]), +Jmps([Goto(Tid(2_763, "%00000acb"), Attrs([Attr("address","0x100E"), +Attr("insn","je 0x2")]), Var("ZF",Imm(1)), Direct(Tid(2_760, "%00000ac8"))), +Goto(Tid(2_898, "%00000b52"), Attrs([]), Int(1,1), +Direct(Tid(2_850, "%00000b22")))])), Blk(Tid(2_850, "%00000b22"), + Attrs([Attr("address","0x1010")]), Phis([]), +Defs([Def(Tid(2_862, "%00000b2e"), Attrs([Attr("address","0x1010"), +Attr("insn","callq *%rax")]), Var("#12582846",Imm(64)), Var("RAX",Imm(64))), +Def(Tid(2_866, "%00000b32"), Attrs([Attr("address","0x1010"), +Attr("insn","callq *%rax")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_871, "%00000b37"), + Attrs([Attr("address","0x1010"), Attr("insn","callq *%rax")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4114,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_874, "%00000b3a"), Attrs([Attr("address","0x1010"), +Attr("insn","callq *%rax")]), Int(1,1), +(Indirect(Var("#12582846",Imm(64))),Direct(Tid(2_760, "%00000ac8"))))])), +Blk(Tid(2_760, "%00000ac8"), Attrs([Attr("address","0x1012")]), Phis([]), +Defs([Def(Tid(2_793, "%00000ae9"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("#12582850",Imm(64)), +Var("RSP",Imm(64))), Def(Tid(2_797, "%00000aed"), + Attrs([Attr("address","0x1012"), Attr("insn","addq $0x8, %rsp")]), + Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(8,64))), +Def(Tid(2_802, "%00000af2"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("CF",Imm(1)), +LT(Var("RSP",Imm(64)),Var("#12582850",Imm(64)))), +Def(Tid(2_810, "%00000afa"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("OF",Imm(1)), +AND(EQ(HIGH(1,Var("#12582850",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582850",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582850",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), +Def(Tid(2_815, "%00000aff"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582850",Imm(64))),Int(8,64))))), +Def(Tid(2_820, "%00000b04"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_824, "%00000b08"), Attrs([Attr("address","0x1012"), +Attr("insn","addq $0x8, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(2_828, "%00000b0c"), + Attrs([Attr("address","0x1012"), Attr("insn","addq $0x8, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(2_841, "%00000b19"), Attrs([Attr("address","0x1016"), +Attr("insn","retq")]), Var("#12582847",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(2_845, "%00000b1d"), Attrs([Attr("address","0x1016"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(2_848, "%00000b20"), + Attrs([Attr("address","0x1016"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582847",Imm(64))),))]))])), Sub(Tid(2_899, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x10A0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_921, "%00000b69"), 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(529, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(534, "%00000216"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(539, "%0000021b"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(545, "%00000221"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(552, "%00000228"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(558, "%0000022e"), Attrs([Attr("address","0x7D4"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(564, "%00000234"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(569, "%00000239"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(576, "%00000240"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(581, "%00000245"), Attrs([Attr("address","0x7E4"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(586, "%0000024a"), Attrs([Attr("address","0x7E8"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(591, "%0000024f"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(594, "%00000252"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_007, "@__libc_start_main")),Direct(Tid(596, "%00000254"))))])), -Blk(Tid(596, "%00000254"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(599, "%00000257"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_013, "@abort")),Direct(Tid(2_011, "%000007db"))))])), -Blk(Tid(2_011, "%000007db"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_012, "%000007dc"), Attrs([]), Int(1,1), -(Direct(Tid(2_014, "@call_weak_fn")),))]))])), Sub(Tid(2_013, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(600, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_014, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_041, "%000007f9"), - 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(604, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(607, "%0000025f"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(614, "%00000266"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(620, "%0000026c"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(618, "%0000026a"))), Goto(Tid(2_015, "%000007df"), Attrs([]), - Int(1,1), Direct(Tid(1_276, "%000004fc")))])), Blk(Tid(618, "%0000026a"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x804"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_277, "@__gmon_start__")))])), Blk(Tid(1_277, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_016, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_042, "%000007fa"), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(593, "@_start"), + Attrs([Attr("address","0x10A0")]), Phis([]), +Defs([Def(Tid(603, "%0000025b"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("RBP",Imm(64)), Int(0,64)), +Def(Tid(606, "%0000025e"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(609, "%00000261"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("ZF",Imm(1)), Int(1,1)), +Def(Tid(612, "%00000264"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("PF",Imm(1)), Int(1,1)), +Def(Tid(615, "%00000267"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("OF",Imm(1)), Int(0,1)), +Def(Tid(618, "%0000026a"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("CF",Imm(1)), Int(0,1)), +Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x10A0"), +Attr("insn","xorl %ebp, %ebp")]), Var("SF",Imm(1)), Int(0,1)), +Def(Tid(629, "%00000275"), Attrs([Attr("address","0x10A2"), +Attr("insn","movq %rdx, %r9")]), Var("R9",Imm(64)), Var("RDX",Imm(64))), +Def(Tid(641, "%00000281"), Attrs([Attr("address","0x10A5"), +Attr("insn","popq %rsi")]), Var("RSI",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(645, "%00000285"), Attrs([Attr("address","0x10A5"), +Attr("insn","popq %rsi")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(653, "%0000028d"), + Attrs([Attr("address","0x10A6"), Attr("insn","movq %rsp, %rdx")]), + Var("RDX",Imm(64)), Var("RSP",Imm(64))), Def(Tid(671, "%0000029f"), + Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), + Var("RSP",Imm(64)), AND(Var("RSP",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x10A9"), +Attr("insn","andq $-0x10, %rsp")]), Var("OF",Imm(1)), Int(0,1)), +Def(Tid(677, "%000002a5"), Attrs([Attr("address","0x10A9"), +Attr("insn","andq $-0x10, %rsp")]), Var("CF",Imm(1)), Int(0,1)), +Def(Tid(680, "%000002a8"), Attrs([Attr("address","0x10A9"), +Attr("insn","andq $-0x10, %rsp")]), Var("AF",Imm(1)), +Unknown("bits",Imm(1))), Def(Tid(685, "%000002ad"), + Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), + Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(689, "%000002b1"), Attrs([Attr("address","0x10A9"), +Attr("insn","andq $-0x10, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(693, "%000002b5"), + Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x10AD"), +Attr("insn","pushq %rax")]), Var("#12582903",Imm(64)), Var("RAX",Imm(64))), +Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x10AD"), +Attr("insn","pushq %rax")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(717, "%000002cd"), + Attrs([Attr("address","0x10AD"), Attr("insn","pushq %rax")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582903",Imm(64)),LittleEndian(),64)), +Def(Tid(731, "%000002db"), Attrs([Attr("address","0x10AE"), +Attr("insn","pushq %rsp")]), Var("#12582902",Imm(64)), Var("RSP",Imm(64))), +Def(Tid(735, "%000002df"), Attrs([Attr("address","0x10AE"), +Attr("insn","pushq %rsp")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(741, "%000002e5"), + Attrs([Attr("address","0x10AE"), Attr("insn","pushq %rsp")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582902",Imm(64)),LittleEndian(),64)), +Def(Tid(753, "%000002f1"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("R8",Imm(64)), Int(0,64)), +Def(Tid(756, "%000002f4"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("ZF",Imm(1)), Int(1,1)), +Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("PF",Imm(1)), Int(1,1)), +Def(Tid(765, "%000002fd"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("OF",Imm(1)), Int(0,1)), +Def(Tid(768, "%00000300"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("CF",Imm(1)), Int(0,1)), +Def(Tid(771, "%00000303"), Attrs([Attr("address","0x10AF"), +Attr("insn","xorl %r8d, %r8d")]), Var("SF",Imm(1)), Int(0,1)), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("RCX",Imm(64)), Int(0,64)), +Def(Tid(786, "%00000312"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(789, "%00000315"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("ZF",Imm(1)), Int(1,1)), +Def(Tid(792, "%00000318"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("PF",Imm(1)), Int(1,1)), +Def(Tid(795, "%0000031b"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("OF",Imm(1)), Int(0,1)), +Def(Tid(798, "%0000031e"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("CF",Imm(1)), Int(0,1)), +Def(Tid(801, "%00000321"), Attrs([Attr("address","0x10B2"), +Attr("insn","xorl %ecx, %ecx")]), Var("SF",Imm(1)), Int(0,1)), +Def(Tid(807, "%00000327"), Attrs([Attr("address","0x10B4"), +Attr("insn","leaq 0xd5(%rip), %rdi")]), Var("RDI",Imm(64)), Int(4496,64)), +Def(Tid(821, "%00000335"), Attrs([Attr("address","0x10BB"), +Attr("insn","callq *0x2eff(%rip)")]), Var("#12582901",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16320,64),LittleEndian(),64)), +Def(Tid(825, "%00000339"), Attrs([Attr("address","0x10BB"), +Attr("insn","callq *0x2eff(%rip)")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(830, "%0000033e"), + Attrs([Attr("address","0x10BB"), Attr("insn","callq *0x2eff(%rip)")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4289,64),LittleEndian(),64))]), +Jmps([Call(Tid(833, "%00000341"), Attrs([Attr("address","0x10BB"), +Attr("insn","callq *0x2eff(%rip)")]), Int(1,1), +(Direct(Tid(831, "@__libc_start_main")),Direct(Tid(835, "%00000343"))))])), +Blk(Tid(835, "%00000343"), Attrs([Attr("address","0x10C1")]), Phis([]), +Defs([]), Jmps([Call(Tid(838, "%00000346"), Attrs([Attr("address","0x10C1"), +Attr("insn","hlt")]), Int(1,1), +(Direct(Tid(836, "@intrinsic:hlt")),Direct(Tid(840, "%00000348"))))])), +Blk(Tid(840, "%00000348"), Attrs([Attr("address","0x10C2")]), Phis([]), +Defs([]), Jmps([Call(Tid(2_900, "%00000b54"), Attrs([]), Int(1,1), +(Direct(Tid(2_901, "@deregister_tm_clones")),))]))])), +Sub(Tid(2_901, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x10D0")]), + "deregister_tm_clones", Args([Arg(Tid(2_922, "%00000b6a"), 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(632, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(635, "%0000027b"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(641, "%00000281"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x70")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(646, "%00000286"), Attrs([Attr("address","0x818"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(652, "%0000028c"), Attrs([Attr("address","0x81C"), -Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(658, "%00000292"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(663, "%00000297"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(669, "%0000029d"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), -NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(675, "%000002a3"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), -NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(679, "%000002a7"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(683, "%000002ab"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(689, "%000002b1"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(687, "%000002af"))), Goto(Tid(2_017, "%000007e1"), Attrs([]), - Int(1,1), Direct(Tid(1_246, "%000004de")))])), Blk(Tid(1_246, "%000004de"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x828"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x82C"), -Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(687, "%000002af"))), Goto(Tid(2_018, "%000007e2"), Attrs([]), - Int(1,1), Direct(Tid(1_265, "%000004f1")))])), Blk(Tid(687, "%000002af"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(695, "%000002b7"), Attrs([Attr("address","0x83C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x834"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x838"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_019, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_043, "%000007fb"), +LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(850, "@deregister_tm_clones"), + Attrs([Attr("address","0x10D0")]), Phis([]), +Defs([Def(Tid(854, "%00000356"), Attrs([Attr("address","0x10D0"), +Attr("insn","leaq 0x2f79(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16464,64)), +Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x10D7"), +Attr("insn","leaq 0x2f72(%rip), %rax")]), Var("RAX",Imm(64)), Int(16464,64)), +Def(Tid(889, "%00000379"), Attrs([Attr("address","0x10DE"), +Attr("insn","cmpq %rdi, %rax")]), Var("#12582900",Imm(64)), +MINUS(Var("RAX",Imm(64)),Var("RDI",Imm(64)))), Def(Tid(894, "%0000037e"), + Attrs([Attr("address","0x10DE"), Attr("insn","cmpq %rdi, %rax")]), + Var("CF",Imm(1)), LT(Var("RAX",Imm(64)),Var("RDI",Imm(64)))), +Def(Tid(901, "%00000385"), Attrs([Attr("address","0x10DE"), +Attr("insn","cmpq %rdi, %rax")]), Var("OF",Imm(1)), +HIGH(1,AND(XOR(Var("RAX",Imm(64)),Var("RDI",Imm(64))),XOR(Var("RAX",Imm(64)),Var("#12582900",Imm(64)))))), +Def(Tid(907, "%0000038b"), Attrs([Attr("address","0x10DE"), +Attr("insn","cmpq %rdi, %rax")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("#12582900",Imm(64)),Var("RAX",Imm(64))),Var("RDI",Imm(64)))))), +Def(Tid(912, "%00000390"), Attrs([Attr("address","0x10DE"), +Attr("insn","cmpq %rdi, %rax")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582900",Imm(64)),Int(4,64)),Var("#12582900",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(916, "%00000394"), Attrs([Attr("address","0x10DE"), +Attr("insn","cmpq %rdi, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582900",Imm(64)))), Def(Tid(920, "%00000398"), + Attrs([Attr("address","0x10DE"), Attr("insn","cmpq %rdi, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582900",Imm(64))))]), +Jmps([Goto(Tid(927, "%0000039f"), Attrs([Attr("address","0x10E1"), +Attr("insn","je 0x15")]), Var("ZF",Imm(1)), Direct(Tid(924, "%0000039c"))), +Goto(Tid(2_902, "%00000b56"), Attrs([]), Int(1,1), +Direct(Tid(2_261, "%000008d5")))])), Blk(Tid(2_261, "%000008d5"), + Attrs([Attr("address","0x10E3")]), Phis([]), +Defs([Def(Tid(2_267, "%000008db"), Attrs([Attr("address","0x10E3"), +Attr("insn","movq 0x2ede(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16328,64),LittleEndian(),64)), +Def(Tid(2_285, "%000008ed"), Attrs([Attr("address","0x10EA"), +Attr("insn","testq %rax, %rax")]), Var("#12582864",Imm(64)), +Var("RAX",Imm(64))), Def(Tid(2_288, "%000008f0"), + Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), + Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_291, "%000008f3"), + Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), + Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_294, "%000008f6"), + Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), + Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_299, "%000008fb"), + Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), + Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582864",Imm(64)),Int(4,64)),Var("#12582864",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_303, "%000008ff"), Attrs([Attr("address","0x10EA"), +Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582864",Imm(64)))), Def(Tid(2_307, "%00000903"), + Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582864",Imm(64))))]), +Jmps([Goto(Tid(2_313, "%00000909"), Attrs([Attr("address","0x10ED"), +Attr("insn","je 0x9")]), Var("ZF",Imm(1)), Direct(Tid(924, "%0000039c"))), +Goto(Tid(2_903, "%00000b57"), Attrs([]), Int(1,1), +Direct(Tid(2_317, "%0000090d")))])), Blk(Tid(924, "%0000039c"), + Attrs([Attr("address","0x10F8")]), Phis([]), +Defs([Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x10F8"), +Attr("insn","retq")]), Var("#12582898",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(945, "%000003b1"), Attrs([Attr("address","0x10F8"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(948, "%000003b4"), + Attrs([Attr("address","0x10F8"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582898",Imm(64))),))])), Blk(Tid(2_317, "%0000090d"), + Attrs([Attr("address","0x10EF")]), Phis([]), Defs([]), +Jmps([Call(Tid(2_321, "%00000911"), Attrs([Attr("address","0x10EF"), +Attr("insn","jmpq *%rax")]), Int(1,1), +(Indirect(Var("RAX",Imm(64))),))]))])), Sub(Tid(2_904, "@frame_dummy"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1180")]), + "frame_dummy", Args([Arg(Tid(2_923, "%00000b6b"), 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(846, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x8D0"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_026, "@register_tm_clones")),))]))])), Sub(Tid(2_020, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_044, "%000007fc"), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(1_387, "@frame_dummy"), + Attrs([Attr("address","0x1180")]), Phis([]), Defs([]), +Jmps([Call(Tid(1_391, "%0000056f"), Attrs([Attr("address","0x1184"), +Attr("insn","jmp -0x89")]), Int(1,1), +(Direct(Tid(2_912, "@register_tm_clones")),))]))])), Sub(Tid(2_905, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x1030"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_924, "%00000b6c"), 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_121, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_021, "@main"), +Attr("c.type","void*")]), Var("free_ptr",Imm(64)), Var("RDI",Imm(64)), +Both())]), Blks([Blk(Tid(1_865, "@free"), Attrs([Attr("address","0x1030")]), + Phis([]), Defs([]), Jmps([Call(Tid(2_480, "%000009b0"), + Attrs([Attr("address","0x1030"), Attr("insn","jmpq *0x2fca(%rip)")]), + Int(1,1), +(Direct(Tid(2_478, "@free:external")),Direct(Tid(2_482, "%000009b2"))))])), +Blk(Tid(2_482, "%000009b2"), Attrs([Attr("address","0x1036")]), Phis([]), +Defs([Def(Tid(2_491, "%000009bb"), Attrs([Attr("address","0x1036"), +Attr("insn","pushq $0x0")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_496, "%000009c0"), + Attrs([Attr("address","0x1036"), Attr("insn","pushq $0x0")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(0,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_500, "%000009c4"), Attrs([Attr("address","0x103B"), +Attr("insn","jmp -0x20")]), Int(1,1), +(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), +Sub(Tid(2_906, "@free@plt-0x10"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x1020"), Attr("stub","()")]), "free@plt-0x10", + Args([Arg(Tid(2_925, "%00000b6d"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("free@plt-0x10_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(2_442, "@free@plt-0x10"), Attrs([Attr("address","0x1020")]), + Phis([]), Defs([Def(Tid(2_454, "%00000996"), + Attrs([Attr("address","0x1020"), Attr("insn","pushq 0x2fca(%rip)")]), + Var("#12582862",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16368,64),LittleEndian(),64)), +Def(Tid(2_458, "%0000099a"), Attrs([Attr("address","0x1020"), +Attr("insn","pushq 0x2fca(%rip)")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_464, "%000009a0"), + Attrs([Attr("address","0x1020"), Attr("insn","pushq 0x2fca(%rip)")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582862",Imm(64)),LittleEndian(),64))]), +Jmps([Call(Tid(2_470, "%000009a6"), Attrs([Attr("address","0x1026"), +Attr("insn","jmpq *0x2fcc(%rip)")]), Int(1,1), +(Indirect(Load(Var("mem",Mem(64,8)),Int(16376,64),LittleEndian(),64)),))]))])), +Sub(Tid(2_907, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_045, "%000007fd"), +Attr("address","0x1190")]), "main", Args([Arg(Tid(2_926, "%00000b6e"), 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_046, "%000007fe"), +LOW(32,Var("RDI",Imm(64))), In()), Arg(Tid(2_927, "%00000b6f"), 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_047, "%000007ff"), +Var("RSI",Imm(64)), Both()), Arg(Tid(2_928, "%00000b70"), 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(850, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(854, "%00000356"), - Attrs([Attr("address","0x8D4"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), -Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x8D8"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(866, "%00000362"), - Attrs([Attr("address","0x8D8"), Attr("insn","stp x29, x30, [sp, #0x30]")]), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(1_398, "@main"), + Attrs([Attr("address","0x1190")]), Phis([]), +Defs([Def(Tid(1_410, "%00000582"), Attrs([Attr("address","0x1190"), +Attr("insn","pushq %rbp")]), Var("#12582881",Imm(64)), Var("RBP",Imm(64))), +Def(Tid(1_414, "%00000586"), Attrs([Attr("address","0x1190"), +Attr("insn","pushq %rbp")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_420, "%0000058c"), + Attrs([Attr("address","0x1190"), Attr("insn","pushq %rbp")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582881",Imm(64)),LittleEndian(),64)), +Def(Tid(1_428, "%00000594"), Attrs([Attr("address","0x1191"), +Attr("insn","movq %rsp, %rbp")]), Var("RBP",Imm(64)), Var("RSP",Imm(64))), +Def(Tid(1_454, "%000005ae"), Attrs([Attr("address","0x1194"), +Attr("insn","subq $0x20, %rsp")]), Var("#12582880",Imm(64)), +Var("RSP",Imm(64))), Def(Tid(1_458, "%000005b2"), + Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), + Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(32,64))), +Def(Tid(1_462, "%000005b6"), Attrs([Attr("address","0x1194"), +Attr("insn","subq $0x20, %rsp")]), Var("CF",Imm(1)), +LT(Var("#12582880",Imm(64)),Int(32,64))), Def(Tid(1_468, "%000005bc"), + Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), + Var("OF",Imm(1)), +HIGH(1,AND(XOR(Var("#12582880",Imm(64)),Int(32,64)),XOR(Var("#12582880",Imm(64)),Var("RSP",Imm(64)))))), +Def(Tid(1_473, "%000005c1"), Attrs([Attr("address","0x1194"), +Attr("insn","subq $0x20, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582880",Imm(64))),Int(32,64))))), +Def(Tid(1_478, "%000005c6"), Attrs([Attr("address","0x1194"), +Attr("insn","subq $0x20, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_482, "%000005ca"), Attrs([Attr("address","0x1194"), +Attr("insn","subq $0x20, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(1_486, "%000005ce"), + Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(1_496, "%000005d8"), Attrs([Attr("address","0x1198"), +Attr("insn","movq $0x0, -0x8(%rbp)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(1_506, "%000005e2"), Attrs([Attr("address","0x11A0"), +Attr("insn","movq $0x0, -0x10(%rbp)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(1_512, "%000005e8"), Attrs([Attr("address","0x11A8"), +Attr("insn","movl $0xb, %edi")]), Var("RDI",Imm(64)), Int(11,64)), +Def(Tid(1_524, "%000005f4"), Attrs([Attr("address","0x11AD"), +Attr("insn","callq -0x132")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_529, "%000005f9"), + Attrs([Attr("address","0x11AD"), Attr("insn","callq -0x132")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4530,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_531, "%000005fb"), Attrs([Attr("address","0x11AD"), +Attr("insn","callq -0x132")]), Int(1,1), +(Direct(Tid(2_908, "@malloc")),Direct(Tid(1_533, "%000005fd"))))])), +Blk(Tid(1_533, "%000005fd"), Attrs([Attr("address","0x11B2")]), Phis([]), +Defs([Def(Tid(1_541, "%00000605"), Attrs([Attr("address","0x11B2"), +Attr("insn","movq %rax, 0x2e9f(%rip)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Int(16472,64),Var("RAX",Imm(64)),LittleEndian(),64)), +Def(Tid(1_549, "%0000060d"), Attrs([Attr("address","0x11B9"), +Attr("insn","movq 0x2e98(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_561, "%00000619"), Attrs([Attr("address","0x11C0"), +Attr("insn","movq %rax, -0x20(%rbp)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551584,64)),Var("RAX",Imm(64)),LittleEndian(),64)), +Def(Tid(1_567, "%0000061f"), Attrs([Attr("address","0x11C4"), +Attr("insn","leaq 0x2e76(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16449,64)), +Def(Tid(1_579, "%0000062b"), Attrs([Attr("address","0x11CB"), +Attr("insn","callq -0x180")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_584, "%00000630"), + Attrs([Attr("address","0x11CB"), Attr("insn","callq -0x180")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4560,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_586, "%00000632"), Attrs([Attr("address","0x11CB"), +Attr("insn","callq -0x180")]), Int(1,1), +(Direct(Tid(2_915, "@strlen")),Direct(Tid(1_588, "%00000634"))))])), +Blk(Tid(1_588, "%00000634"), Attrs([Attr("address","0x11D0")]), Phis([]), +Defs([Def(Tid(1_596, "%0000063c"), Attrs([Attr("address","0x11D0"), +Attr("insn","movq -0x20(%rbp), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551584,64)),LittleEndian(),64)), +Def(Tid(1_604, "%00000644"), Attrs([Attr("address","0x11D4"), +Attr("insn","movq %rax, %rdx")]), Var("RDX",Imm(64)), Var("RAX",Imm(64))), +Def(Tid(1_610, "%0000064a"), Attrs([Attr("address","0x11D7"), +Attr("insn","leaq 0x2e63(%rip), %rsi")]), Var("RSI",Imm(64)), Int(16449,64)), +Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x11DE"), +Attr("insn","callq -0x173")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_627, "%0000065b"), + Attrs([Attr("address","0x11DE"), Attr("insn","callq -0x173")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4579,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_629, "%0000065d"), Attrs([Attr("address","0x11DE"), +Attr("insn","callq -0x173")]), Int(1,1), +(Direct(Tid(2_909, "@memcpy")),Direct(Tid(1_631, "%0000065f"))))])), +Blk(Tid(1_631, "%0000065f"), Attrs([Attr("address","0x11E3")]), Phis([]), +Defs([Def(Tid(1_637, "%00000665"), Attrs([Attr("address","0x11E3"), +Attr("insn","movq 0x2e6e(%rip), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_649, "%00000671"), Attrs([Attr("address","0x11EA"), +Attr("insn","callq -0x1af")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_654, "%00000676"), + Attrs([Attr("address","0x11EA"), Attr("insn","callq -0x1af")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(872, "%00000368"), Attrs([Attr("address","0x8D8"), -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(878, "%0000036e"), Attrs([Attr("address","0x8DC"), -Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(885, "%00000375"), - Attrs([Attr("address","0x8E0"), Attr("insn","stur xzr, [x29, #-0x8]")]), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4591,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_656, "%00000678"), Attrs([Attr("address","0x11EA"), +Attr("insn","callq -0x1af")]), Int(1,1), +(Direct(Tid(2_911, "@puts")),Direct(Tid(1_658, "%0000067a"))))])), +Blk(Tid(1_658, "%0000067a"), Attrs([Attr("address","0x11EF")]), Phis([]), +Defs([Def(Tid(1_664, "%00000680"), Attrs([Attr("address","0x11EF"), +Attr("insn","movq 0x2e62(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_693, "%0000069d"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("#12582877",Imm(64)), +Var("RAX",Imm(64))), Def(Tid(1_697, "%000006a1"), + Attrs([Attr("address","0x11F6"), Attr("insn","addq $0x4, %rax")]), + Var("RAX",Imm(64)), PLUS(Var("RAX",Imm(64)),Int(4,64))), +Def(Tid(1_702, "%000006a6"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("CF",Imm(1)), +LT(Var("RAX",Imm(64)),Var("#12582877",Imm(64)))), +Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("OF",Imm(1)), +AND(EQ(HIGH(1,Var("#12582877",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582877",Imm(64))),HIGH(1,Var("RAX",Imm(64)))),NOT(AND(HIGH(1,Var("#12582877",Imm(64))),HIGH(1,Var("RAX",Imm(64)))))))), +Def(Tid(1_715, "%000006b3"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RAX",Imm(64)),Var("#12582877",Imm(64))),Int(4,64))))), +Def(Tid(1_720, "%000006b8"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RAX",Imm(64)),Int(4,64)),Var("RAX",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_724, "%000006bc"), Attrs([Attr("address","0x11F6"), +Attr("insn","addq $0x4, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("RAX",Imm(64)))), Def(Tid(1_728, "%000006c0"), + Attrs([Attr("address","0x11F6"), Attr("insn","addq $0x4, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RAX",Imm(64)))), +Def(Tid(1_740, "%000006cc"), Attrs([Attr("address","0x11FA"), +Attr("insn","movq %rax, -0x8(%rbp)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551608,64)),Var("RAX",Imm(64)),LittleEndian(),64)), +Def(Tid(1_750, "%000006d6"), Attrs([Attr("address","0x11FE"), +Attr("insn","movq -0x8(%rbp), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), +Def(Tid(1_760, "%000006e0"), Attrs([Attr("address","0x1202"), +Attr("insn","movb $0x0, (%rax)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RAX",Imm(64)),Int(0,8),LittleEndian(),8)), +Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x1205"), +Attr("insn","movq 0x2e4c(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_780, "%000006f4"), Attrs([Attr("address","0x120C"), +Attr("insn","movq %rax, -0x18(%rbp)")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551592,64)),Var("RAX",Imm(64)),LittleEndian(),64)), +Def(Tid(1_788, "%000006fc"), Attrs([Attr("address","0x1210"), +Attr("insn","movq 0x2e41(%rip), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_799, "%00000707"), Attrs([Attr("address","0x1217"), +Attr("insn","callq -0x1cc")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_804, "%0000070c"), + Attrs([Attr("address","0x1217"), Attr("insn","callq -0x1cc")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x8E4"), -Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(897, "%00000381"), Attrs([Attr("address","0x8E8"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(905, "%00000389"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_022, "@malloc")),Direct(Tid(907, "%0000038b"))))])), -Blk(Tid(907, "%0000038b"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8F0"), -Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(918, "%00000396"), Attrs([Attr("address","0x8F4"), -Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x8F8"), -Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(933, "%000003a5"), Attrs([Attr("address","0x8FC"), -Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x900"), -Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x904"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(952, "%000003b8"), Attrs([Attr("address","0x908"), -Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(960, "%000003c0"), - Attrs([Attr("address","0x90C"), Attr("insn","str x0, [sp]")]), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4636,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_806, "%0000070e"), Attrs([Attr("address","0x1217"), +Attr("insn","callq -0x1cc")]), Int(1,1), +(Direct(Tid(2_915, "@strlen")),Direct(Tid(1_808, "%00000710"))))])), +Blk(Tid(1_808, "%00000710"), Attrs([Attr("address","0x121C")]), Phis([]), +Defs([Def(Tid(1_816, "%00000718"), Attrs([Attr("address","0x121C"), +Attr("insn","movq -0x18(%rbp), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551592,64)),LittleEndian(),64)), +Def(Tid(1_824, "%00000720"), Attrs([Attr("address","0x1220"), +Attr("insn","movq %rax, %rdx")]), Var("RDX",Imm(64)), Var("RAX",Imm(64))), +Def(Tid(1_830, "%00000726"), Attrs([Attr("address","0x1223"), +Attr("insn","movl $0x1, %esi")]), Var("RSI",Imm(64)), Int(1,64)), +Def(Tid(1_842, "%00000732"), Attrs([Attr("address","0x1228"), +Attr("insn","callq -0x1cd")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_847, "%00000737"), + Attrs([Attr("address","0x1228"), Attr("insn","callq -0x1cd")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x910"), -Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2324,64))]), -Jmps([Call(Tid(968, "%000003c8"), Attrs([Attr("address","0x910"), -Attr("insn","bl #-0x1f0")]), Int(1,1), -(Direct(Tid(2_029, "@strlen")),Direct(Tid(970, "%000003ca"))))])), -Blk(Tid(970, "%000003ca"), Attrs([Attr("address","0x914")]), Phis([]), -Defs([Def(Tid(975, "%000003cf"), Attrs([Attr("address","0x914"), -Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x918"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(988, "%000003dc"), Attrs([Attr("address","0x91C"), -Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x920"), -Attr("insn","bl #-0x210")]), Var("R30",Imm(64)), Int(2340,64))]), -Jmps([Call(Tid(996, "%000003e4"), Attrs([Attr("address","0x920"), -Attr("insn","bl #-0x210")]), Int(1,1), -(Direct(Tid(2_023, "@memcpy")),Direct(Tid(998, "%000003e6"))))])), -Blk(Tid(998, "%000003e6"), Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x924"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x928"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_025, "@puts")),Direct(Tid(1_020, "%000003fc"))))])), -Blk(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x930"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x934"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x938"), -Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_046, "%00000416"), - Attrs([Attr("address","0x93C"), Attr("insn","stur x9, [x29, #-0x8]")]), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4653,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_849, "%00000739"), Attrs([Attr("address","0x1228"), +Attr("insn","callq -0x1cd")]), Int(1,1), +(Direct(Tid(2_910, "@memset")),Direct(Tid(1_851, "%0000073b"))))])), +Blk(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x122D")]), Phis([]), +Defs([Def(Tid(1_857, "%00000741"), Attrs([Attr("address","0x122D"), +Attr("insn","movq 0x2e24(%rip), %rdi")]), Var("RDI",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), +Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x1234"), +Attr("insn","callq -0x209")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_874, "%00000752"), + Attrs([Attr("address","0x1234"), Attr("insn","callq -0x209")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x940"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x944"), -Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x948"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x94C"), -Attr("insn","bl #-0x22c")]), Var("R30",Imm(64)), Int(2384,64))]), -Jmps([Call(Tid(1_075, "%00000433"), Attrs([Attr("address","0x94C"), -Attr("insn","bl #-0x22c")]), Int(1,1), -(Direct(Tid(2_029, "@strlen")),Direct(Tid(1_077, "%00000435"))))])), -Blk(Tid(1_077, "%00000435"), Attrs([Attr("address","0x950")]), Phis([]), -Defs([Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x950"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x954"), -Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x958"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x95C"), -Attr("insn","bl #-0x1fc")]), Var("R30",Imm(64)), Int(2400,64))]), -Jmps([Call(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x95C"), -Attr("insn","bl #-0x1fc")]), Int(1,1), -(Direct(Tid(2_024, "@memset")),Direct(Tid(1_103, "%0000044f"))))])), -Blk(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x960")]), Phis([]), -Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x960"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x964"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x1c8")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x1c8")]), Int(1,1), -(Direct(Tid(2_020, "@free")),Direct(Tid(1_125, "%00000465"))))])), -Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x96C"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x970"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_139, "%00000473"), - Attrs([Attr("address","0x970"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), - Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), -Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x970"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x974"), -Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_155, "%00000483"), - Attrs([Attr("address","0x978"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_022, "@malloc"), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4665,64),LittleEndian(),64))]), +Jmps([Call(Tid(1_876, "%00000754"), Attrs([Attr("address","0x1234"), +Attr("insn","callq -0x209")]), Int(1,1), +(Direct(Tid(2_905, "@free")),Direct(Tid(1_878, "%00000756"))))])), +Blk(Tid(1_878, "%00000756"), Attrs([Attr("address","0x1239")]), Phis([]), +Defs([Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x1239"), +Attr("insn","xorl %eax, %eax")]), Var("RAX",Imm(64)), Int(0,64)), +Def(Tid(1_891, "%00000763"), Attrs([Attr("address","0x1239"), +Attr("insn","xorl %eax, %eax")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x1239"), +Attr("insn","xorl %eax, %eax")]), Var("ZF",Imm(1)), Int(1,1)), +Def(Tid(1_897, "%00000769"), Attrs([Attr("address","0x1239"), +Attr("insn","xorl %eax, %eax")]), Var("PF",Imm(1)), Int(1,1)), +Def(Tid(1_900, "%0000076c"), Attrs([Attr("address","0x1239"), +Attr("insn","xorl %eax, %eax")]), Var("OF",Imm(1)), Int(0,1)), +Def(Tid(1_903, "%0000076f"), Attrs([Attr("address","0x1239"), +Attr("insn","xorl %eax, %eax")]), Var("CF",Imm(1)), Int(0,1)), +Def(Tid(1_906, "%00000772"), Attrs([Attr("address","0x1239"), +Attr("insn","xorl %eax, %eax")]), Var("SF",Imm(1)), Int(0,1)), +Def(Tid(1_935, "%0000078f"), Attrs([Attr("address","0x123B"), +Attr("insn","addq $0x20, %rsp")]), Var("#12582874",Imm(64)), +Var("RSP",Imm(64))), Def(Tid(1_939, "%00000793"), + Attrs([Attr("address","0x123B"), Attr("insn","addq $0x20, %rsp")]), + Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(32,64))), +Def(Tid(1_944, "%00000798"), Attrs([Attr("address","0x123B"), +Attr("insn","addq $0x20, %rsp")]), Var("CF",Imm(1)), +LT(Var("RSP",Imm(64)),Var("#12582874",Imm(64)))), +Def(Tid(1_952, "%000007a0"), Attrs([Attr("address","0x123B"), +Attr("insn","addq $0x20, %rsp")]), Var("OF",Imm(1)), +AND(EQ(HIGH(1,Var("#12582874",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582874",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582874",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), +Def(Tid(1_957, "%000007a5"), Attrs([Attr("address","0x123B"), +Attr("insn","addq $0x20, %rsp")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582874",Imm(64))),Int(32,64))))), +Def(Tid(1_962, "%000007aa"), Attrs([Attr("address","0x123B"), +Attr("insn","addq $0x20, %rsp")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_966, "%000007ae"), Attrs([Attr("address","0x123B"), +Attr("insn","addq $0x20, %rsp")]), Var("SF",Imm(1)), +HIGH(1,Var("RSP",Imm(64)))), Def(Tid(1_970, "%000007b2"), + Attrs([Attr("address","0x123B"), Attr("insn","addq $0x20, %rsp")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), +Def(Tid(1_982, "%000007be"), Attrs([Attr("address","0x123F"), +Attr("insn","popq %rbp")]), Var("RBP",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(1_986, "%000007c2"), Attrs([Attr("address","0x123F"), +Attr("insn","popq %rbp")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_999, "%000007cf"), + Attrs([Attr("address","0x1240"), Attr("insn","retq")]), + Var("#12582871",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(2_003, "%000007d3"), Attrs([Attr("address","0x1240"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(2_006, "%000007d6"), + Attrs([Attr("address","0x1240"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582871",Imm(64))),))]))])), Sub(Tid(2_908, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_048, "%00000800"), Attrs([Attr("alloc-size","()"), +Attr("address","0x1080"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_929, "%00000b71"), 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_049, "%00000801"), +Var("RDI",Imm(64)), In()), Arg(Tid(2_930, "%00000b72"), 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(903, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x750"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_023, "@memcpy"), + Var("malloc_result",Imm(64)), Var("RAX",Imm(64)), Out())]), +Blks([Blk(Tid(1_520, "@malloc"), Attrs([Attr("address","0x1080")]), Phis([]), +Defs([]), Jmps([Call(Tid(2_605, "%00000a2d"), + Attrs([Attr("address","0x1080"), Attr("insn","jmpq *0x2fa2(%rip)")]), + Int(1,1), +(Direct(Tid(2_603, "@malloc:external")),Direct(Tid(2_607, "%00000a2f"))))])), +Blk(Tid(2_607, "%00000a2f"), Attrs([Attr("address","0x1086")]), Phis([]), +Defs([Def(Tid(2_616, "%00000a38"), Attrs([Attr("address","0x1086"), +Attr("insn","pushq $0x5")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_621, "%00000a3d"), + Attrs([Attr("address","0x1086"), Attr("insn","pushq $0x5")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(5,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_625, "%00000a41"), Attrs([Attr("address","0x108B"), +Attr("insn","jmp -0x70")]), Int(1,1), +(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), Sub(Tid(2_909, "@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_050, "%00000802"), Attrs([Attr("nonnull","()"), +Attr("address","0x1070"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_931, "%00000b73"), 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_051, "%00000803"), +Var("RDI",Imm(64)), Both()), Arg(Tid(2_932, "%00000b74"), 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_052, "%00000804"), Attrs([Attr("c.layout","[unsigned long : 64]"), + Var("memcpy_src",Imm(64)), Var("RSI",Imm(64)), Both()), +Arg(Tid(2_933, "%00000b75"), 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_053, "%00000805"), Attrs([Attr("c.layout","*[ : 8]"), + Var("memcpy_n",Imm(64)), Var("RDX",Imm(64)), In()), +Arg(Tid(2_934, "%00000b76"), 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(994, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_534, "%000005fe"), Attrs([Attr("address","0x710"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_541, "%00000605"), 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_547, "%0000060b"), Attrs([Attr("address","0x718"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_552, "%00000610"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_024, "@memset"), + Var("memcpy_result",Imm(64)), Var("RAX",Imm(64)), Out())]), +Blks([Blk(Tid(1_618, "@memcpy"), Attrs([Attr("address","0x1070")]), Phis([]), +Defs([]), Jmps([Call(Tid(2_580, "%00000a14"), + Attrs([Attr("address","0x1070"), Attr("insn","jmpq *0x2faa(%rip)")]), + Int(1,1), +(Direct(Tid(2_578, "@memcpy:external")),Direct(Tid(2_582, "%00000a16"))))])), +Blk(Tid(2_582, "%00000a16"), Attrs([Attr("address","0x1076")]), Phis([]), +Defs([Def(Tid(2_591, "%00000a1f"), Attrs([Attr("address","0x1076"), +Attr("insn","pushq $0x4")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_596, "%00000a24"), + Attrs([Attr("address","0x1076"), Attr("insn","pushq $0x4")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_600, "%00000a28"), Attrs([Attr("address","0x107B"), +Attr("insn","jmp -0x60")]), Int(1,1), +(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), Sub(Tid(2_910, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_054, "%00000806"), Attrs([Attr("nonnull","()"), +Attr("address","0x1060"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_935, "%00000b77"), 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_055, "%00000807"), +Attr("c.type","void*")]), Var("memset_buf",Imm(64)), Var("RDI",Imm(64)), +Both()), Arg(Tid(2_936, "%00000b78"), 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_056, "%00000808"), +LOW(32,Var("RSI",Imm(64))), In()), Arg(Tid(2_937, "%00000b79"), 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_057, "%00000809"), 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_099, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_025, "@puts"), +Attr("c.type","unsigned long")]), Var("memset_n",Imm(64)), +Var("RDX",Imm(64)), In()), Arg(Tid(2_938, "%00000b7a"), + Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), +Attr("c.type","void*")]), Var("memset_result",Imm(64)), Var("RAX",Imm(64)), +Out())]), Blks([Blk(Tid(1_838, "@memset"), Attrs([Attr("address","0x1060")]), + Phis([]), Defs([]), Jmps([Call(Tid(2_555, "%000009fb"), + Attrs([Attr("address","0x1060"), Attr("insn","jmpq *0x2fb2(%rip)")]), + Int(1,1), +(Direct(Tid(2_553, "@memset:external")),Direct(Tid(2_557, "%000009fd"))))])), +Blk(Tid(2_557, "%000009fd"), Attrs([Attr("address","0x1066")]), Phis([]), +Defs([Def(Tid(2_566, "%00000a06"), Attrs([Attr("address","0x1066"), +Attr("insn","pushq $0x3")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_571, "%00000a0b"), + Attrs([Attr("address","0x1066"), Attr("insn","pushq $0x3")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(3,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_575, "%00000a0f"), Attrs([Attr("address","0x106B"), +Attr("insn","jmp -0x50")]), Int(1,1), +(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), Sub(Tid(2_911, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_058, "%0000080a"), Attrs([Attr("c.layout","*[char : 8]"), +Attr("address","0x1040"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_939, "%00000b7b"), 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_059, "%0000080b"), Attrs([Attr("c.layout","[signed : 32]"), + Var("puts_s",Imm(64)), Var("RDI",Imm(64)), In()), +Arg(Tid(2_940, "%00000b7c"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_016, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_026, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_060, "%0000080c"), + Var("puts_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(1_645, "@puts"), Attrs([Attr("address","0x1040")]), Phis([]), +Defs([]), Jmps([Call(Tid(2_505, "%000009c9"), + Attrs([Attr("address","0x1040"), Attr("insn","jmpq *0x2fc2(%rip)")]), + Int(1,1), +(Direct(Tid(2_503, "@puts:external")),Direct(Tid(2_507, "%000009cb"))))])), +Blk(Tid(2_507, "%000009cb"), Attrs([Attr("address","0x1046")]), Phis([]), +Defs([Def(Tid(2_516, "%000009d4"), Attrs([Attr("address","0x1046"), +Attr("insn","pushq $0x1")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_521, "%000009d9"), + Attrs([Attr("address","0x1046"), Attr("insn","pushq $0x1")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(1,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_525, "%000009dd"), Attrs([Attr("address","0x104B"), +Attr("insn","jmp -0x30")]), Int(1,1), +(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), +Sub(Tid(2_912, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1100")]), + "register_tm_clones", Args([Arg(Tid(2_941, "%00000b7d"), 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(697, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x840"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(706, "%000002c2"), Attrs([Attr("address","0x844"), -Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(711, "%000002c7"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(717, "%000002cd"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x70")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(724, "%000002d4"), Attrs([Attr("address","0x850"), -Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(730, "%000002da"), Attrs([Attr("address","0x854"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(737, "%000002e1"), Attrs([Attr("address","0x858"), -Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x85C"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(749, "%000002ed"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(747, "%000002eb"))), Goto(Tid(2_027, "%000007eb"), Attrs([]), - Int(1,1), Direct(Tid(1_216, "%000004c0")))])), Blk(Tid(1_216, "%000004c0"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x864"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x868"), -Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(747, "%000002eb"))), Goto(Tid(2_028, "%000007ec"), Attrs([]), - Int(1,1), Direct(Tid(1_235, "%000004d3")))])), Blk(Tid(747, "%000002eb"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(755, "%000002f3"), Attrs([Attr("address","0x878"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x870"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x874"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_029, "@strlen"), +LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([Blk(Tid(955, "@register_tm_clones"), Attrs([Attr("address","0x1100")]), + Phis([]), Defs([Def(Tid(959, "%000003bf"), Attrs([Attr("address","0x1100"), +Attr("insn","leaq 0x2f49(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16464,64)), +Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x1107"), +Attr("insn","leaq 0x2f42(%rip), %rsi")]), Var("RSI",Imm(64)), Int(16464,64)), +Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("#12582897",Imm(64)), +Var("RSI",Imm(64))), Def(Tid(1_001, "%000003e9"), + Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), + Var("#12582896",Imm(64)), Var("RDI",Imm(64))), Def(Tid(1_006, "%000003ee"), + Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), + Var("RSI",Imm(64)), MINUS(Var("RSI",Imm(64)),Var("RDI",Imm(64)))), +Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("CF",Imm(1)), +LT(Var("#12582897",Imm(64)),Var("#12582896",Imm(64)))), +Def(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("OF",Imm(1)), +HIGH(1,AND(XOR(Var("#12582897",Imm(64)),Var("#12582896",Imm(64))),XOR(Var("#12582897",Imm(64)),Var("RSI",Imm(64)))))), +Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSI",Imm(64)),Var("#12582897",Imm(64))),Var("#12582896",Imm(64)))))), +Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x110E"), +Attr("insn","subq %rdi, %rsi")]), Var("SF",Imm(1)), +HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_037, "%0000040d"), + Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), +Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x1111"), +Attr("insn","movq %rsi, %rax")]), Var("RAX",Imm(64)), Var("RSI",Imm(64))), +Def(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("#12582894",Imm(64)), +Var("RSI",Imm(64))), Def(Tid(1_070, "%0000042e"), + Attrs([Attr("address","0x1114"), Attr("insn","shrq $0x3f, %rsi")]), + Var("RSI",Imm(64)), RSHIFT(Var("RSI",Imm(64)),Int(63,64))), +Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("CF",Imm(1)), +HIGH(1,LSHIFT(Var("#12582894",Imm(64)),Int(1,64)))), +Def(Tid(1_078, "%00000436"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("SF",Imm(1)), +HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_082, "%0000043a"), + Attrs([Attr("address","0x1114"), Attr("insn","shrq $0x3f, %rsi")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), +Def(Tid(1_087, "%0000043f"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_090, "%00000442"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x1114"), +Attr("insn","shrq $0x3f, %rsi")]), Var("OF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_114, "%0000045a"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("#12582892",Imm(64)), +Var("RAX",Imm(64))), Def(Tid(1_118, "%0000045e"), + Attrs([Attr("address","0x1118"), Attr("insn","sarq $0x3, %rax")]), + Var("RAX",Imm(64)), ARSHIFT(Var("RAX",Imm(64)),Int(3,64))), +Def(Tid(1_122, "%00000462"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("CF",Imm(1)), +HIGH(1,LSHIFT(Var("#12582892",Imm(64)),Int(61,64)))), +Def(Tid(1_126, "%00000466"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("RAX",Imm(64)))), Def(Tid(1_130, "%0000046a"), + Attrs([Attr("address","0x1118"), Attr("insn","sarq $0x3, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RAX",Imm(64)))), +Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RAX",Imm(64)),Int(4,64)),Var("RAX",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_141, "%00000475"), Attrs([Attr("address","0x1118"), +Attr("insn","sarq $0x3, %rax")]), Var("OF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_175, "%00000497"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("#12582890",Imm(64)), +Var("RSI",Imm(64))), Def(Tid(1_179, "%0000049b"), + Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), + Var("#12582889",Imm(64)), Var("RAX",Imm(64))), Def(Tid(1_184, "%000004a0"), + Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), + Var("RSI",Imm(64)), PLUS(Var("RSI",Imm(64)),Var("#12582889",Imm(64)))), +Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("CF",Imm(1)), +LT(Var("RSI",Imm(64)),Var("#12582890",Imm(64)))), +Def(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("OF",Imm(1)), +AND(EQ(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("#12582889",Imm(64)))),AND(OR(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("RSI",Imm(64)))),NOT(AND(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("RSI",Imm(64)))))))), +Def(Tid(1_204, "%000004b4"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("AF",Imm(1)), +EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSI",Imm(64)),Var("#12582890",Imm(64))),Var("#12582889",Imm(64)))))), +Def(Tid(1_209, "%000004b9"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x111C"), +Attr("insn","addq %rax, %rsi")]), Var("SF",Imm(1)), +HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_217, "%000004c1"), + Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), +Def(Tid(1_238, "%000004d6"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("#12582887",Imm(64)), Var("RSI",Imm(64))), +Def(Tid(1_242, "%000004da"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("RSI",Imm(64)), +ARSHIFT(Var("RSI",Imm(64)),Int(1,64))), Def(Tid(1_246, "%000004de"), + Attrs([Attr("address","0x111F"), Attr("insn","sarq %rsi")]), + Var("CF",Imm(1)), HIGH(1,LSHIFT(Var("#12582887",Imm(64)),Int(63,64)))), +Def(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("SF",Imm(1)), HIGH(1,Var("RSI",Imm(64)))), +Def(Tid(1_254, "%000004e6"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("ZF",Imm(1)), +EQ(Int(0,64),Var("RSI",Imm(64)))), Def(Tid(1_259, "%000004eb"), + Attrs([Attr("address","0x111F"), Attr("insn","sarq %rsi")]), + Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), +Def(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x111F"), +Attr("insn","sarq %rsi")]), Var("OF",Imm(1)), Int(0,1))]), +Jmps([Goto(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x1122"), +Attr("insn","je 0x14")]), Var("ZF",Imm(1)), Direct(Tid(1_269, "%000004f5"))), +Goto(Tid(2_913, "%00000b61"), Attrs([]), Int(1,1), +Direct(Tid(2_194, "%00000892")))])), Blk(Tid(2_194, "%00000892"), + Attrs([Attr("address","0x1124")]), Phis([]), +Defs([Def(Tid(2_200, "%00000898"), Attrs([Attr("address","0x1124"), +Attr("insn","movq 0x2ead(%rip), %rax")]), Var("RAX",Imm(64)), +Load(Var("mem",Mem(64,8)),Int(16344,64),LittleEndian(),64)), +Def(Tid(2_218, "%000008aa"), Attrs([Attr("address","0x112B"), +Attr("insn","testq %rax, %rax")]), Var("#12582866",Imm(64)), +Var("RAX",Imm(64))), Def(Tid(2_221, "%000008ad"), + Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), + Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_224, "%000008b0"), + Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), + Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_227, "%000008b3"), + Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), + Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_232, "%000008b8"), + Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), + Var("PF",Imm(1)), +NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582866",Imm(64)),Int(4,64)),Var("#12582866",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), +Def(Tid(2_236, "%000008bc"), Attrs([Attr("address","0x112B"), +Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), +HIGH(1,Var("#12582866",Imm(64)))), Def(Tid(2_240, "%000008c0"), + Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), + Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582866",Imm(64))))]), +Jmps([Goto(Tid(2_246, "%000008c6"), Attrs([Attr("address","0x112E"), +Attr("insn","je 0x8")]), Var("ZF",Imm(1)), Direct(Tid(1_269, "%000004f5"))), +Goto(Tid(2_914, "%00000b62"), Attrs([]), Int(1,1), +Direct(Tid(2_250, "%000008ca")))])), Blk(Tid(1_269, "%000004f5"), + Attrs([Attr("address","0x1138")]), Phis([]), +Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x1138"), +Attr("insn","retq")]), Var("#12582885",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), +Def(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x1138"), +Attr("insn","retq")]), Var("RSP",Imm(64)), +PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_293, "%0000050d"), + Attrs([Attr("address","0x1138"), Attr("insn","retq")]), Int(1,1), +(Indirect(Var("#12582885",Imm(64))),))])), Blk(Tid(2_250, "%000008ca"), + Attrs([Attr("address","0x1130")]), Phis([]), Defs([]), +Jmps([Call(Tid(2_254, "%000008ce"), Attrs([Attr("address","0x1130"), +Attr("insn","jmpq *%rax")]), Int(1,1), +(Indirect(Var("RAX",Imm(64))),))]))])), Sub(Tid(2_915, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_061, "%0000080d"), Attrs([Attr("nonnull","()"), +Attr("pure","()"), Attr("address","0x1050"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_942, "%00000b7e"), 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_062, "%0000080e"), +Attr("c.type"," const char*")]), Var("strlen_s",Imm(64)), Var("RDI",Imm(64)), +In()), Arg(Tid(2_943, "%00000b7f"), 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(966, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x720"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_563, "%0000061b"), 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_569, "%00000621"), 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_574, "%00000626"), - Attrs([Attr("address","0x72C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))]))]))) \ No newline at end of file +Var("RAX",Imm(64)), Out())]), Blks([Blk(Tid(1_575, "@strlen"), + Attrs([Attr("address","0x1050")]), Phis([]), Defs([]), +Jmps([Call(Tid(2_530, "%000009e2"), Attrs([Attr("address","0x1050"), +Attr("insn","jmpq *0x2fba(%rip)")]), Int(1,1), +(Direct(Tid(2_528, "@strlen:external")),Direct(Tid(2_532, "%000009e4"))))])), +Blk(Tid(2_532, "%000009e4"), Attrs([Attr("address","0x1056")]), Phis([]), +Defs([Def(Tid(2_541, "%000009ed"), Attrs([Attr("address","0x1056"), +Attr("insn","pushq $0x2")]), Var("RSP",Imm(64)), +MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_546, "%000009f2"), + Attrs([Attr("address","0x1056"), Attr("insn","pushq $0x2")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(2,64),LittleEndian(),64))]), +Jmps([Call(Tid(2_550, "%000009f6"), Attrs([Attr("address","0x105B"), +Attr("insn","jmp -0x40")]), Int(1,1), +(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), +Sub(Tid(831, "@__libc_start_main"), + Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), +Attr("synthetic","()"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_944, "%00000b80"), + 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("RDI",Imm(64)), In()), +Arg(Tid(2_945, "%00000b81"), 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("RSI",Imm(64))), In()), +Arg(Tid(2_946, "%00000b82"), 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("RDX",Imm(64)), Both()), +Arg(Tid(2_947, "%00000b83"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("__libc_start_main_auxv",Imm(64)), Var("RCX",Imm(64)), Both()), +Arg(Tid(2_948, "%00000b84"), 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("RAX",Imm(64))), +Out())]), Blks([])), Sub(Tid(836, "@intrinsic:hlt"), + Attrs([Attr("intrinsic","()"), Attr("synthetic","()"), Attr("stub","()")]), + "intrinsic:hlt", Args([]), Blks([])), Sub(Tid(2_478, "@free:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "free:external", Args([Arg(Tid(2_949, "%00000b85"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("free:external_result",Imm(32)), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), +Sub(Tid(2_503, "@puts:external"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("synthetic","()"), Attr("stub","()")]), "puts:external", + Args([Arg(Tid(2_950, "%00000b86"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts:external_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), +Blks([])), Sub(Tid(2_528, "@strlen:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "strlen:external", Args([Arg(Tid(2_951, "%00000b87"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("strlen:external_result",Imm(32)), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), +Sub(Tid(2_553, "@memset:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "memset:external", Args([Arg(Tid(2_952, "%00000b88"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("memset:external_result",Imm(32)), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), +Sub(Tid(2_578, "@memcpy:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "memcpy:external", Args([Arg(Tid(2_953, "%00000b89"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("memcpy:external_result",Imm(32)), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), +Sub(Tid(2_603, "@malloc:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "malloc:external", Args([Arg(Tid(2_954, "%00000b8a"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("malloc:external_result",Imm(32)), +LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), +Sub(Tid(2_887, "@__cxa_finalize:external"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), +Attr("stub","()")]), "__cxa_finalize:external", + Args([Arg(Tid(2_955, "%00000b8b"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("__cxa_finalize:external_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), +Out())]), +Blks([]))]))) \ No newline at end of file diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir index b8bf42653..851be613c 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir @@ -1,352 +1,557 @@ -000007ee: program -000007d2: sub __cxa_finalize(__cxa_finalize_result) -000007ef: __cxa_finalize_result :: out u32 = low:32[R0] - -000004bc: -00000640: R16 := 0x20000 -00000647: R17 := mem[R16 + 0x18, el]:u64 -0000064d: R16 := R16 + 0x18 -00000652: call R17 with noreturn - -000007d3: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000007f0: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -000002f7: -000002fb: #3 := R31 - 0x20 -00000301: mem := mem with [#3, el]:u64 <- R29 -00000307: mem := mem with [#3 + 8, el]:u64 <- R30 -0000030b: R31 := #3 -00000311: R29 := R31 -00000319: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000031e: R19 := 0x20000 -00000325: R0 := pad:64[mem[R19 + 0x70]] -0000032b: when 0:0[R0] goto %00000329 -000007d4: goto %00000485 - -00000485: -00000488: R0 := 0x1F000 -0000048f: R0 := mem[R0 + 0xFC8, el]:u64 -00000495: when R0 = 0 goto %00000493 -000007d5: goto %000004ac - -000004ac: -000004af: R0 := 0x20000 -000004b6: R0 := mem[R0 + 0x58, el]:u64 -000004bb: R30 := 0x8B0 -000004be: call @__cxa_finalize with return %00000493 - -00000493: -0000049b: R30 := 0x8B4 -0000049d: call @deregister_tm_clones with return %0000049f - -0000049f: -000004a2: R0 := 1 -000004aa: mem := mem with [R19 + 0x70] <- 7:0[R0] -000007d6: goto %00000329 - -00000329: -00000333: R19 := mem[R31 + 0x10, el]:u64 -0000033a: R29 := mem[R31, el]:u64 -0000033f: R30 := mem[R31 + 8, el]:u64 -00000343: R31 := R31 + 0x20 -00000348: call R30 with noreturn - -000007d7: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000007f1: __libc_start_main_main :: in u64 = R0 -000007f2: __libc_start_main_arg2 :: in u32 = low:32[R1] -000007f3: __libc_start_main_arg3 :: in out u64 = R2 -000007f4: __libc_start_main_auxv :: in out u64 = R3 -000007f5: __libc_start_main_result :: out u32 = low:32[R0] - -00000250: -0000062a: R16 := 0x20000 -00000631: R17 := mem[R16 + 0x10, el]:u64 -00000637: R16 := R16 + 0x10 -0000063c: call R17 with noreturn - -000007d8: sub _fini(_fini_result) -000007f6: _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 - -000007d9: sub _init(_init_result) -000007f7: _init_result :: out u32 = low:32[R0] - -000006f2: -000006f8: #7 := R31 - 0x10 -000006fe: mem := mem with [#7, el]:u64 <- R29 -00000704: mem := mem with [#7 + 8, el]:u64 <- R30 -00000708: R31 := #7 -0000070e: R29 := R31 -00000713: R30 := 0x6E8 -00000715: call @call_weak_fn with return %00000717 - -00000717: -0000071c: R29 := mem[R31, el]:u64 -00000721: R30 := mem[R31 + 8, el]:u64 -00000725: R31 := R31 + 0x10 -0000072a: call R30 with noreturn - -000007da: sub _start(_start_result) -000007f8: _start_result :: out u32 = low:32[R0] - -00000211: -00000216: R29 := 0 -0000021b: R30 := 0 -00000221: R5 := R0 -00000228: R1 := mem[R31, el]:u64 -0000022e: R2 := R31 + 8 -00000234: R6 := R31 -00000239: R0 := 0x1F000 -00000240: R0 := mem[R0 + 0xFD8, el]:u64 -00000245: R3 := 0 -0000024a: R4 := 0 -0000024f: R30 := 0x7F0 -00000252: call @__libc_start_main with return %00000254 - -00000254: -00000257: R30 := 0x7F4 -0000025a: call @abort with return %000007db - -000007db: -000007dc: call @call_weak_fn with noreturn - -000007dd: sub abort() - - -00000258: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x38, el]:u64 -000006a5: R16 := R16 + 0x38 -000006aa: call R17 with noreturn - -000007de: sub call_weak_fn(call_weak_fn_result) -000007f9: call_weak_fn_result :: out u32 = low:32[R0] - -0000025c: -0000025f: R0 := 0x1F000 -00000266: R0 := mem[R0 + 0xFD0, el]:u64 -0000026c: when R0 = 0 goto %0000026a -000007df: goto %000004fc - -0000026a: -00000272: call R30 with noreturn - -000004fc: -000004ff: goto @__gmon_start__ - -000004fd: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x30, el]:u64 -0000068f: R16 := R16 + 0x30 -00000694: call R17 with noreturn - -000007e0: sub deregister_tm_clones(deregister_tm_clones_result) -000007fa: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000278: -0000027b: R0 := 0x20000 -00000281: R0 := R0 + 0x70 -00000286: R1 := 0x20000 -0000028c: R1 := R1 + 0x70 -00000292: #1 := ~R0 -00000297: #2 := R1 + ~R0 -0000029d: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002a3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002a7: ZF := #2 + 1 = 0 -000002ab: NF := 63:63[#2 + 1] -000002b1: when ZF goto %000002af -000007e1: goto %000004de - -000004de: -000004e1: R1 := 0x1F000 -000004e8: R1 := mem[R1 + 0xFC0, el]:u64 -000004ed: when R1 = 0 goto %000002af -000007e2: goto %000004f1 - -000002af: -000002b7: call R30 with noreturn - -000004f1: -000004f5: R16 := R1 -000004fa: call R16 with noreturn - -000007e3: sub frame_dummy(frame_dummy_result) -000007fb: frame_dummy_result :: out u32 = low:32[R0] - -0000034e: -00000350: call @register_tm_clones with noreturn - -000007e4: sub free(free_ptr) -000007fc: free_ptr :: in out u64 = R0 - -00000461: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x48, el]:u64 -000006d1: R16 := R16 + 0x48 -000006d6: call R17 with noreturn - -000007e5: sub main(main_argc, main_argv, main_result) -000007fd: main_argc :: in u32 = low:32[R0] -000007fe: main_argv :: in out u64 = R1 -000007ff: main_result :: out u32 = low:32[R0] +00000b64: program +00000b4c: sub __cxa_finalize(__cxa_finalize_result) +00000b65: __cxa_finalize_result :: out u32 = low:32[RAX] + +00000885: +00000b49: call @__cxa_finalize:external with noreturn + +00000b4d: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000b66: __do_global_dtors_aux_result :: out u32 = low:32[RAX] + +00000514: +0000052c: #12582884 := mem[0x4050] +00000530: CF := mem[0x4050] < 0 +00000536: OF := high:1[mem[0x4050] & (mem[0x4050] ^ #12582884)] +0000053b: AF := 0x10 = (0x10 & (#12582884 ^ mem[0x4050])) +00000540: PF := + ~low:1[let $0 = #12582884 >> 4 ^ #12582884 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000544: SF := high:1[#12582884] +00000548: ZF := 0 = #12582884 +0000054f: when ~ZF goto %0000054c +00000b4e: goto %000007d8 + +0000054c: +0000055d: #12582882 := mem[RSP, el]:u64 +00000561: RSP := RSP + 8 +00000564: call #12582882 with noreturn + +000007d8: +000007e4: #12582870 := RBP +000007e8: RSP := RSP - 8 +000007ee: mem := mem with [RSP, el]:u64 <- #12582870 +00000806: #12582869 := mem[0x3FE0, el]:u64 +0000080a: CF := mem[0x3FE0, el]:u64 < 0 +00000810: OF := high:1[mem[0x3FE0, el]:u64 & + (mem[0x3FE0, el]:u64 ^ #12582869)] +00000815: AF := 0x10 = (0x10 & (#12582869 ^ mem[0x3FE0, el]:u64)) +0000081a: PF := + ~low:1[let $0 = #12582869 >> 4 ^ #12582869 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +0000081e: SF := high:1[#12582869] +00000822: ZF := 0 = #12582869 +0000082a: RBP := RSP +00000831: when ZF goto %0000082e +00000b4f: goto %00000877 + +00000877: +0000087d: RDI := mem[0x4038, el]:u64 +00000889: RSP := RSP - 8 +0000088e: mem := mem with [RSP, el]:u64 <- 0x1167 +00000890: call @__cxa_finalize with return %0000082e + +0000082e: +0000083d: RSP := RSP - 8 +00000842: mem := mem with [RSP, el]:u64 <- 0x116C +00000844: call @deregister_tm_clones with return %00000846 + +00000846: +0000084c: mem := mem with [0x4050] <- 1 +00000858: RBP := mem[RSP, el]:u64 +0000085c: RSP := RSP + 8 +00000869: #12582867 := mem[RSP, el]:u64 +0000086d: RSP := RSP + 8 +00000870: call #12582867 with noreturn + +00000b50: sub _fini(_fini_result) +00000b67: _fini_result :: out u32 = low:32[RAX] + +00000015: +00000038: #12582911 := RSP +0000003c: RSP := RSP - 8 +00000040: CF := #12582911 < 8 +00000046: OF := high:1[(#12582911 ^ 8) & (#12582911 ^ RSP)] +0000004b: AF := 0x10 = (0x10 & (RSP ^ #12582911 ^ 8)) +00000050: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000054: SF := high:1[RSP] +00000058: ZF := 0 = RSP +00000075: #12582908 := RSP +00000079: RSP := RSP + 8 +0000007e: CF := RSP < #12582908 +00000086: OF := ~high:1[#12582908] & (high:1[#12582908] | high:1[RSP]) & + ~(high:1[#12582908] & high:1[RSP]) +0000008b: AF := 0x10 = (0x10 & (RSP ^ #12582908 ^ 8)) +00000090: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000094: SF := high:1[RSP] +00000098: ZF := 0 = RSP +000000a5: #12582905 := mem[RSP, el]:u64 +000000a9: RSP := RSP + 8 +000000ac: call #12582905 with noreturn + +00000b51: sub _init(_init_result) +00000b68: _init_result :: out u32 = low:32[RAX] + +00000a5c: +00000a74: #12582855 := RSP +00000a78: RSP := RSP - 8 +00000a7c: CF := #12582855 < 8 +00000a82: OF := high:1[(#12582855 ^ 8) & (#12582855 ^ RSP)] +00000a87: AF := 0x10 = (0x10 & (RSP ^ #12582855 ^ 8)) +00000a8c: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000a90: SF := high:1[RSP] +00000a94: ZF := 0 = RSP +00000a9c: RAX := mem[0x3FD0, el]:u64 +00000aae: #12582852 := RAX +00000ab1: OF := 0 +00000ab4: CF := 0 +00000ab7: AF := unknown[bits]:u1 +00000abc: PF := + ~low:1[let $0 = #12582852 >> 4 ^ #12582852 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000ac0: SF := high:1[#12582852] +00000ac4: ZF := 0 = #12582852 +00000acb: when ZF goto %00000ac8 +00000b52: goto %00000b22 + +00000b22: +00000b2e: #12582846 := RAX +00000b32: RSP := RSP - 8 +00000b37: mem := mem with [RSP, el]:u64 <- 0x1012 +00000b3a: call #12582846 with return %00000ac8 + +00000ac8: +00000ae9: #12582850 := RSP +00000aed: RSP := RSP + 8 +00000af2: CF := RSP < #12582850 +00000afa: OF := ~high:1[#12582850] & (high:1[#12582850] | high:1[RSP]) & + ~(high:1[#12582850] & high:1[RSP]) +00000aff: AF := 0x10 = (0x10 & (RSP ^ #12582850 ^ 8)) +00000b04: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000b08: SF := high:1[RSP] +00000b0c: ZF := 0 = RSP +00000b19: #12582847 := mem[RSP, el]:u64 +00000b1d: RSP := RSP + 8 +00000b20: call #12582847 with noreturn + +00000b53: sub _start(_start_result) +00000b69: _start_result :: out u32 = low:32[RAX] + +00000251: +0000025b: RBP := 0 +0000025e: AF := unknown[bits]:u1 +00000261: ZF := 1 +00000264: PF := 1 +00000267: OF := 0 +0000026a: CF := 0 +0000026d: SF := 0 +00000275: R9 := RDX +00000281: RSI := mem[RSP, el]:u64 +00000285: RSP := RSP + 8 +0000028d: RDX := RSP +0000029f: RSP := RSP & 0xFFFFFFFFFFFFFFF0 +000002a2: OF := 0 +000002a5: CF := 0 +000002a8: AF := unknown[bits]:u1 +000002ad: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000002b1: SF := high:1[RSP] +000002b5: ZF := 0 = RSP +000002c3: #12582903 := RAX +000002c7: RSP := RSP - 8 +000002cd: mem := mem with [RSP, el]:u64 <- #12582903 +000002db: #12582902 := RSP +000002df: RSP := RSP - 8 +000002e5: mem := mem with [RSP, el]:u64 <- #12582902 +000002f1: R8 := 0 +000002f4: AF := unknown[bits]:u1 +000002f7: ZF := 1 +000002fa: PF := 1 +000002fd: OF := 0 +00000300: CF := 0 +00000303: SF := 0 +0000030f: RCX := 0 +00000312: AF := unknown[bits]:u1 +00000315: ZF := 1 +00000318: PF := 1 +0000031b: OF := 0 +0000031e: CF := 0 +00000321: SF := 0 +00000327: RDI := 0x1190 +00000335: #12582901 := mem[0x3FC0, el]:u64 +00000339: RSP := RSP - 8 +0000033e: mem := mem with [RSP, el]:u64 <- 0x10C1 +00000341: call @__libc_start_main with return %00000343 + +00000343: +00000346: call @intrinsic:hlt with return %00000348 + +00000348: +00000b54: call @deregister_tm_clones with noreturn + +00000b55: sub deregister_tm_clones(deregister_tm_clones_result) +00000b6a: deregister_tm_clones_result :: out u32 = low:32[RAX] 00000352: -00000356: R31 := R31 - 0x40 -0000035c: #4 := R31 + 0x30 -00000362: mem := mem with [#4, el]:u64 <- R29 -00000368: mem := mem with [#4 + 8, el]:u64 <- R30 -0000036e: R29 := R31 + 0x30 -00000375: mem := mem with [R29 - 8, el]:u64 <- 0 -0000037c: mem := mem with [R29 - 0x10, el]:u64 <- 0 -00000381: R0 := 0xB -00000386: R30 := 0x8F0 -00000389: call @malloc with return %0000038b - -0000038b: -0000038e: R8 := 0x20000 -00000396: mem := mem with [R31 + 0x18, el]:u64 <- R8 -0000039e: mem := mem with [R8 + 0x78, el]:u64 <- R0 -000003a5: R8 := mem[R8 + 0x78, el]:u64 -000003ad: mem := mem with [R31 + 8, el]:u64 <- R8 -000003b2: R0 := 0x20000 -000003b8: R0 := R0 + 0x61 -000003c0: mem := mem with [R31, el]:u64 <- R0 -000003c5: R30 := 0x914 -000003c8: call @strlen with return %000003ca - -000003ca: -000003cf: R1 := mem[R31, el]:u64 -000003d5: R2 := R0 -000003dc: R0 := mem[R31 + 8, el]:u64 -000003e1: R30 := 0x924 -000003e4: call @memcpy with return %000003e6 - -000003e6: -000003eb: R8 := mem[R31 + 0x18, el]:u64 -000003f2: R0 := mem[R8 + 0x78, el]:u64 -000003f7: R30 := 0x930 -000003fa: call @puts with return %000003fc - -000003fc: -00000401: R8 := mem[R31 + 0x18, el]:u64 -00000408: R9 := mem[R8 + 0x78, el]:u64 -0000040e: R9 := R9 + 4 -00000416: mem := mem with [R29 - 8, el]:u64 <- R9 -0000041d: R9 := mem[R8 + 0x78, el]:u64 -00000425: mem := mem with [R31 + 0x10, el]:u64 <- R9 -0000042c: R0 := mem[R8 + 0x78, el]:u64 -00000431: R30 := 0x950 -00000433: call @strlen with return %00000435 - -00000435: -00000439: R2 := R0 -00000440: R0 := mem[R31 + 0x10, el]:u64 -00000445: R1 := 1 -0000044a: R30 := 0x960 -0000044d: call @memset with return %0000044f - -0000044f: -00000454: R8 := mem[R31 + 0x18, el]:u64 -0000045b: R0 := mem[R8 + 0x78, el]:u64 -00000460: R30 := 0x96C -00000463: call @free with return %00000465 - -00000465: -00000468: R0 := 0 -0000046e: #5 := R31 + 0x30 -00000473: R29 := mem[#5, el]:u64 -00000478: R30 := mem[#5 + 8, el]:u64 -0000047e: R31 := R31 + 0x40 -00000483: call R30 with noreturn - -000007e6: sub malloc(malloc_size, malloc_result) -00000800: malloc_size :: in u64 = R0 -00000801: malloc_result :: out u64 = R0 - -00000387: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16 + 0x20, el]:u64 -00000663: R16 := R16 + 0x20 -00000668: call R17 with noreturn - -000007e7: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000802: memcpy_dst :: in out u64 = R0 -00000803: memcpy_src :: in out u64 = R1 -00000804: memcpy_n :: in u64 = R2 -00000805: memcpy_result :: out u64 = R0 - -000003e2: -000005fe: R16 := 0x20000 -00000605: R17 := mem[R16, el]:u64 -0000060b: R16 := R16 -00000610: call R17 with noreturn - -000007e8: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000806: memset_buf :: in out u64 = R0 -00000807: memset_c :: in u32 = low:32[R1] -00000808: memset_n :: in u64 = R2 -00000809: memset_result :: out u64 = R0 - -0000044b: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 0x28, el]:u64 -00000679: R16 := R16 + 0x28 -0000067e: call R17 with noreturn - -000007e9: sub puts(puts_s, puts_result) -0000080a: puts_s :: in u64 = R0 -0000080b: puts_result :: out u32 = low:32[R0] - -000003f8: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x40, el]:u64 -000006bb: R16 := R16 + 0x40 -000006c0: call R17 with noreturn - -000007ea: sub register_tm_clones(register_tm_clones_result) -0000080c: register_tm_clones_result :: out u32 = low:32[R0] - -000002b9: -000002bc: R0 := 0x20000 -000002c2: R0 := R0 + 0x70 -000002c7: R1 := 0x20000 -000002cd: R1 := R1 + 0x70 -000002d4: R1 := R1 + ~R0 + 1 -000002da: R2 := 0.63:63[R1] -000002e1: R1 := R2 + (R1 ~>> 3) -000002e7: R1 := extend:64[63:1[R1]] -000002ed: when R1 = 0 goto %000002eb -000007eb: goto %000004c0 - -000004c0: -000004c3: R2 := 0x1F000 -000004ca: R2 := mem[R2 + 0xFE0, el]:u64 -000004cf: when R2 = 0 goto %000002eb -000007ec: goto %000004d3 - -000002eb: -000002f3: call R30 with noreturn - -000004d3: -000004d7: R16 := R2 -000004dc: call R16 with noreturn - -000007ed: sub strlen(strlen_s, strlen_result) -0000080d: strlen_s :: in u64 = R0 -0000080e: strlen_result :: out u64 = R0 - -000003c6: -00000614: R16 := 0x20000 -0000061b: R17 := mem[R16 + 8, el]:u64 -00000621: R16 := R16 + 8 -00000626: call R17 with noreturn +00000356: RDI := 0x4050 +0000035c: RAX := 0x4050 +00000379: #12582900 := RAX - RDI +0000037e: CF := RAX < RDI +00000385: OF := high:1[(RAX ^ RDI) & (RAX ^ #12582900)] +0000038b: AF := 0x10 = (0x10 & (#12582900 ^ RAX ^ RDI)) +00000390: PF := + ~low:1[let $0 = #12582900 >> 4 ^ #12582900 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000394: SF := high:1[#12582900] +00000398: ZF := 0 = #12582900 +0000039f: when ZF goto %0000039c +00000b56: goto %000008d5 + +000008d5: +000008db: RAX := mem[0x3FC8, el]:u64 +000008ed: #12582864 := RAX +000008f0: OF := 0 +000008f3: CF := 0 +000008f6: AF := unknown[bits]:u1 +000008fb: PF := + ~low:1[let $0 = #12582864 >> 4 ^ #12582864 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000008ff: SF := high:1[#12582864] +00000903: ZF := 0 = #12582864 +00000909: when ZF goto %0000039c +00000b57: goto %0000090d + +0000039c: +000003ad: #12582898 := mem[RSP, el]:u64 +000003b1: RSP := RSP + 8 +000003b4: call #12582898 with noreturn + +0000090d: +00000911: call RAX with noreturn + +00000b58: sub frame_dummy(frame_dummy_result) +00000b6b: frame_dummy_result :: out u32 = low:32[RAX] + +0000056b: +0000056f: call @register_tm_clones with noreturn + +00000b59: sub free(free_ptr) +00000b6c: free_ptr :: in out u64 = RDI + +00000749: +000009b0: call @free:external with return %000009b2 + +000009b2: +000009bb: RSP := RSP - 8 +000009c0: mem := mem with [RSP, el]:u64 <- 0 +000009c4: call @free@plt-0x10 with noreturn + +00000b5a: sub free@plt-0x10(free@plt-0x10_result) +00000b6d: free@plt-0x10_result :: out u32 = low:32[RAX] + +0000098a: +00000996: #12582862 := mem[0x3FF0, el]:u64 +0000099a: RSP := RSP - 8 +000009a0: mem := mem with [RSP, el]:u64 <- #12582862 +000009a6: call mem[0x3FF8, el]:u64 with noreturn + +00000b5b: sub main(main_argc, main_argv, main_result) +00000b6e: main_argc :: in u32 = low:32[RDI] +00000b6f: main_argv :: in out u64 = RSI +00000b70: main_result :: out u32 = low:32[RAX] + +00000576: +00000582: #12582881 := RBP +00000586: RSP := RSP - 8 +0000058c: mem := mem with [RSP, el]:u64 <- #12582881 +00000594: RBP := RSP +000005ae: #12582880 := RSP +000005b2: RSP := RSP - 0x20 +000005b6: CF := #12582880 < 0x20 +000005bc: OF := high:1[(#12582880 ^ 0x20) & (#12582880 ^ RSP)] +000005c1: AF := 0x10 = (0x10 & (RSP ^ #12582880 ^ 0x20)) +000005c6: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000005ca: SF := high:1[RSP] +000005ce: ZF := 0 = RSP +000005d8: mem := mem with [RBP - 8, el]:u64 <- 0 +000005e2: mem := mem with [RBP - 0x10, el]:u64 <- 0 +000005e8: RDI := 0xB +000005f4: RSP := RSP - 8 +000005f9: mem := mem with [RSP, el]:u64 <- 0x11B2 +000005fb: call @malloc with return %000005fd + +000005fd: +00000605: mem := mem with [0x4058, el]:u64 <- RAX +0000060d: RAX := mem[0x4058, el]:u64 +00000619: mem := mem with [RBP - 0x20, el]:u64 <- RAX +0000061f: RDI := 0x4041 +0000062b: RSP := RSP - 8 +00000630: mem := mem with [RSP, el]:u64 <- 0x11D0 +00000632: call @strlen with return %00000634 + +00000634: +0000063c: RDI := mem[RBP - 0x20, el]:u64 +00000644: RDX := RAX +0000064a: RSI := 0x4041 +00000656: RSP := RSP - 8 +0000065b: mem := mem with [RSP, el]:u64 <- 0x11E3 +0000065d: call @memcpy with return %0000065f + +0000065f: +00000665: RDI := mem[0x4058, el]:u64 +00000671: RSP := RSP - 8 +00000676: mem := mem with [RSP, el]:u64 <- 0x11EF +00000678: call @puts with return %0000067a + +0000067a: +00000680: RAX := mem[0x4058, el]:u64 +0000069d: #12582877 := RAX +000006a1: RAX := RAX + 4 +000006a6: CF := RAX < #12582877 +000006ae: OF := ~high:1[#12582877] & (high:1[#12582877] | high:1[RAX]) & + ~(high:1[#12582877] & high:1[RAX]) +000006b3: AF := 0x10 = (0x10 & (RAX ^ #12582877 ^ 4)) +000006b8: PF := + ~low:1[let $0 = RAX >> 4 ^ RAX in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000006bc: SF := high:1[RAX] +000006c0: ZF := 0 = RAX +000006cc: mem := mem with [RBP - 8, el]:u64 <- RAX +000006d6: RAX := mem[RBP - 8, el]:u64 +000006e0: mem := mem with [RAX] <- 0 +000006e8: RAX := mem[0x4058, el]:u64 +000006f4: mem := mem with [RBP - 0x18, el]:u64 <- RAX +000006fc: RDI := mem[0x4058, el]:u64 +00000707: RSP := RSP - 8 +0000070c: mem := mem with [RSP, el]:u64 <- 0x121C +0000070e: call @strlen with return %00000710 + +00000710: +00000718: RDI := mem[RBP - 0x18, el]:u64 +00000720: RDX := RAX +00000726: RSI := 1 +00000732: RSP := RSP - 8 +00000737: mem := mem with [RSP, el]:u64 <- 0x122D +00000739: call @memset with return %0000073b + +0000073b: +00000741: RDI := mem[0x4058, el]:u64 +0000074d: RSP := RSP - 8 +00000752: mem := mem with [RSP, el]:u64 <- 0x1239 +00000754: call @free with return %00000756 + +00000756: +00000760: RAX := 0 +00000763: AF := unknown[bits]:u1 +00000766: ZF := 1 +00000769: PF := 1 +0000076c: OF := 0 +0000076f: CF := 0 +00000772: SF := 0 +0000078f: #12582874 := RSP +00000793: RSP := RSP + 0x20 +00000798: CF := RSP < #12582874 +000007a0: OF := ~high:1[#12582874] & (high:1[#12582874] | high:1[RSP]) & + ~(high:1[#12582874] & high:1[RSP]) +000007a5: AF := 0x10 = (0x10 & (RSP ^ #12582874 ^ 0x20)) +000007aa: PF := + ~low:1[let $0 = RSP >> 4 ^ RSP in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000007ae: SF := high:1[RSP] +000007b2: ZF := 0 = RSP +000007be: RBP := mem[RSP, el]:u64 +000007c2: RSP := RSP + 8 +000007cf: #12582871 := mem[RSP, el]:u64 +000007d3: RSP := RSP + 8 +000007d6: call #12582871 with noreturn + +00000b5c: sub malloc(malloc_size, malloc_result) +00000b71: malloc_size :: in u64 = RDI +00000b72: malloc_result :: out u64 = RAX + +000005f0: +00000a2d: call @malloc:external with return %00000a2f + +00000a2f: +00000a38: RSP := RSP - 8 +00000a3d: mem := mem with [RSP, el]:u64 <- 5 +00000a41: call @free@plt-0x10 with noreturn + +00000b5d: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000b73: memcpy_dst :: in out u64 = RDI +00000b74: memcpy_src :: in out u64 = RSI +00000b75: memcpy_n :: in u64 = RDX +00000b76: memcpy_result :: out u64 = RAX + +00000652: +00000a14: call @memcpy:external with return %00000a16 + +00000a16: +00000a1f: RSP := RSP - 8 +00000a24: mem := mem with [RSP, el]:u64 <- 4 +00000a28: call @free@plt-0x10 with noreturn + +00000b5e: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000b77: memset_buf :: in out u64 = RDI +00000b78: memset_c :: in u32 = low:32[RSI] +00000b79: memset_n :: in u64 = RDX +00000b7a: memset_result :: out u64 = RAX + +0000072e: +000009fb: call @memset:external with return %000009fd + +000009fd: +00000a06: RSP := RSP - 8 +00000a0b: mem := mem with [RSP, el]:u64 <- 3 +00000a0f: call @free@plt-0x10 with noreturn + +00000b5f: sub puts(puts_s, puts_result) +00000b7b: puts_s :: in u64 = RDI +00000b7c: puts_result :: out u32 = low:32[RAX] + +0000066d: +000009c9: call @puts:external with return %000009cb + +000009cb: +000009d4: RSP := RSP - 8 +000009d9: mem := mem with [RSP, el]:u64 <- 1 +000009dd: call @free@plt-0x10 with noreturn + +00000b60: sub register_tm_clones(register_tm_clones_result) +00000b7d: register_tm_clones_result :: out u32 = low:32[RAX] + +000003bb: +000003bf: RDI := 0x4050 +000003c5: RSI := 0x4050 +000003e5: #12582897 := RSI +000003e9: #12582896 := RDI +000003ee: RSI := RSI - RDI +000003f3: CF := #12582897 < #12582896 +000003fa: OF := high:1[(#12582897 ^ #12582896) & (#12582897 ^ RSI)] +00000400: AF := 0x10 = (0x10 & (RSI ^ #12582897 ^ #12582896)) +00000405: PF := + ~low:1[let $0 = RSI >> 4 ^ RSI in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000409: SF := high:1[RSI] +0000040d: ZF := 0 = RSI +00000415: RAX := RSI +0000042a: #12582894 := RSI +0000042e: RSI := RSI >> 0x3F +00000432: CF := high:1[#12582894 << 1] +00000436: SF := high:1[RSI] +0000043a: ZF := 0 = RSI +0000043f: PF := + ~low:1[let $0 = RSI >> 4 ^ RSI in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000442: AF := unknown[bits]:u1 +00000445: OF := unknown[bits]:u1 +0000045a: #12582892 := RAX +0000045e: RAX := RAX ~>> 3 +00000462: CF := high:1[#12582892 << 0x3D] +00000466: SF := high:1[RAX] +0000046a: ZF := 0 = RAX +0000046f: PF := + ~low:1[let $0 = RAX >> 4 ^ RAX in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +00000472: AF := unknown[bits]:u1 +00000475: OF := unknown[bits]:u1 +00000497: #12582890 := RSI +0000049b: #12582889 := RAX +000004a0: RSI := RSI + #12582889 +000004a5: CF := RSI < #12582890 +000004ae: OF := high:1[#12582890] = high:1[#12582889] & + (high:1[#12582890] | high:1[RSI]) & + ~(high:1[#12582890] & high:1[RSI]) +000004b4: AF := 0x10 = (0x10 & (RSI ^ #12582890 ^ #12582889)) +000004b9: PF := + ~low:1[let $0 = RSI >> 4 ^ RSI in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000004bd: SF := high:1[RSI] +000004c1: ZF := 0 = RSI +000004d6: #12582887 := RSI +000004da: RSI := RSI ~>> 1 +000004de: CF := high:1[#12582887 << 0x3F] +000004e2: SF := high:1[RSI] +000004e6: ZF := 0 = RSI +000004eb: PF := + ~low:1[let $0 = RSI >> 4 ^ RSI in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000004ee: AF := unknown[bits]:u1 +000004f1: OF := 0 +000004f8: when ZF goto %000004f5 +00000b61: goto %00000892 + +00000892: +00000898: RAX := mem[0x3FD8, el]:u64 +000008aa: #12582866 := RAX +000008ad: OF := 0 +000008b0: CF := 0 +000008b3: AF := unknown[bits]:u1 +000008b8: PF := + ~low:1[let $0 = #12582866 >> 4 ^ #12582866 in + let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] +000008bc: SF := high:1[#12582866] +000008c0: ZF := 0 = #12582866 +000008c6: when ZF goto %000004f5 +00000b62: goto %000008ca + +000004f5: +00000506: #12582885 := mem[RSP, el]:u64 +0000050a: RSP := RSP + 8 +0000050d: call #12582885 with noreturn + +000008ca: +000008ce: call RAX with noreturn + +00000b63: sub strlen(strlen_s, strlen_result) +00000b7e: strlen_s :: in u64 = RDI +00000b7f: strlen_result :: out u64 = RAX + +00000627: +000009e2: call @strlen:external with return %000009e4 + +000009e4: +000009ed: RSP := RSP - 8 +000009f2: mem := mem with [RSP, el]:u64 <- 2 +000009f6: call @free@plt-0x10 with noreturn + +0000033f: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000b80: __libc_start_main_main :: in u64 = RDI +00000b81: __libc_start_main_arg2 :: in u32 = low:32[RSI] +00000b82: __libc_start_main_arg3 :: in out u64 = RDX +00000b83: __libc_start_main_auxv :: in out u64 = RCX +00000b84: __libc_start_main_result :: out u32 = low:32[RAX] + +00000344: sub intrinsic:hlt() + + +000009ae: sub free:external(free:external_result) +00000b85: free:external_result :: out u32 = low:32[RAX] + +000009c7: sub puts:external(puts:external_result) +00000b86: puts:external_result :: out u32 = low:32[RAX] + +000009e0: sub strlen:external(strlen:external_result) +00000b87: strlen:external_result :: out u32 = low:32[RAX] + +000009f9: sub memset:external(memset:external_result) +00000b88: memset:external_result :: out u32 = low:32[RAX] + +00000a12: sub memcpy:external(memcpy:external_result) +00000b89: memcpy:external_result :: out u32 = low:32[RAX] + +00000a2b: sub malloc:external(malloc:external_result) +00000b8a: malloc:external_result :: out u32 = low:32[RAX] + +00000b47: sub __cxa_finalize:external(__cxa_finalize:external_result) +00000b8b: __cxa_finalize:external_result :: out u32 = low:32[RAX] diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf index b8d9040b4..20ae7e5a2 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf @@ -1,144 +1,82 @@ -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: +Relocation section '.rela.dyn' at offset 0x600 contains 8 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 -000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 +0000000000003dd0 0000000000000008 R_X86_64_RELATIVE 1180 +0000000000003dd8 0000000000000008 R_X86_64_RELATIVE 1140 +0000000000004038 0000000000000008 R_X86_64_RELATIVE 4038 +0000000000003fc0 0000000200000006 R_X86_64_GLOB_DAT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000003fc8 0000000300000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +0000000000003fd0 0000000700000006 R_X86_64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +0000000000003fd8 0000000a00000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 +0000000000003fe0 0000000b00000006 R_X86_64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.2.5 + 0 -Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: +Relocation section '.rela.plt' at offset 0x6c0 contains 6 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 +0000000000004000 0000000100000007 R_X86_64_JUMP_SLOT 0000000000000000 free@GLIBC_2.2.5 + 0 +0000000000004008 0000000400000007 R_X86_64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.2.5 + 0 +0000000000004010 0000000500000007 R_X86_64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.2.5 + 0 +0000000000004018 0000000600000007 R_X86_64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.2.5 + 0 +0000000000004020 0000000800000007 R_X86_64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.14 + 0 +0000000000004028 0000000900000007 R_X86_64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.2.5 + 0 -Symbol table '.dynsym' contains 15 entries: +Symbol table '.dynsym' contains 12 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 + 1: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.2.5 (2) + 2: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 3: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.2.5 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.2.5 (2) + 6: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.2.5 (2) + 7: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.14 (4) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.2.5 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 11: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 (2) -Symbol table '.symtab' contains 99 entries: +Symbol table '.symtab' contains 44 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: 000000000000097c 0 SECTION LOCAL DEFAULT 14 .fini - 15: 0000000000000990 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 0000000000000994 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009d0 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 00000000000009e4 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 0000000000000990 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 000000000000097c 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 0000000000000988 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 00000000000009f8 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 - 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 - 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 - 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 - 59: 0000000000000a58 0 NOTYPE LOCAL DEFAULT 17 $d.4 - 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 61: 0000000000000a94 0 NOTYPE LOCAL DEFAULT 17 $d - 62: 0000000000000a94 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 65: 0000000000000994 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata - 77: 000000000000097c 0 FUNC GLOBAL HIDDEN 14 _fini - 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 86: 0000000000000990 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end - 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf - 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext - 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 95: 00000000000008d4 168 FUNC GLOBAL DEFAULT 13 main - 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init + 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 2: 000000000000037c 32 OBJECT LOCAL DEFAULT 4 __abi_tag + 3: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 4: 00000000000010d0 0 FUNC LOCAL DEFAULT 15 deregister_tm_clones + 5: 0000000000001100 0 FUNC LOCAL DEFAULT 15 register_tm_clones + 6: 0000000000001140 0 FUNC LOCAL DEFAULT 15 __do_global_dtors_aux + 7: 0000000000004050 1 OBJECT LOCAL DEFAULT 26 completed.0 + 8: 0000000000003dd8 0 OBJECT LOCAL DEFAULT 21 __do_global_dtors_aux_fini_array_entry + 9: 0000000000001180 0 FUNC LOCAL DEFAULT 15 frame_dummy + 10: 0000000000003dd0 0 OBJECT LOCAL DEFAULT 20 __frame_dummy_init_array_entry + 11: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 12: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 13: 00000000000020d8 0 OBJECT LOCAL DEFAULT 19 __FRAME_END__ + 14: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 15: 0000000000003de0 0 OBJECT LOCAL DEFAULT 22 _DYNAMIC + 16: 0000000000002004 0 NOTYPE LOCAL DEFAULT 18 __GNU_EH_FRAME_HDR + 17: 0000000000003fe8 0 OBJECT LOCAL DEFAULT 24 _GLOBAL_OFFSET_TABLE_ + 18: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.2.5 + 19: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 20: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 21: 0000000000004030 0 NOTYPE WEAK DEFAULT 25 data_start + 22: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.2.5 + 23: 000000000000404c 0 NOTYPE GLOBAL DEFAULT 25 _edata + 24: 0000000000001244 0 FUNC GLOBAL HIDDEN 16 _fini + 25: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.2.5 + 26: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.2.5 + 27: 0000000000004040 1 OBJECT GLOBAL DEFAULT 25 password + 28: 0000000000004030 0 NOTYPE GLOBAL DEFAULT 25 __data_start + 29: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 30: 0000000000004038 0 OBJECT GLOBAL HIDDEN 25 __dso_handle + 31: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.14 + 32: 0000000000002000 4 OBJECT GLOBAL DEFAULT 17 _IO_stdin_used + 33: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.2.5 + 34: 0000000000004060 0 NOTYPE GLOBAL DEFAULT 26 _end + 35: 00000000000010a0 34 FUNC GLOBAL DEFAULT 15 _start + 36: 0000000000004058 8 OBJECT GLOBAL DEFAULT 26 buf + 37: 0000000000004041 11 OBJECT GLOBAL DEFAULT 25 stext + 38: 000000000000404c 0 NOTYPE GLOBAL DEFAULT 26 __bss_start + 39: 0000000000001190 177 FUNC GLOBAL DEFAULT 15 main + 40: 0000000000004050 0 OBJECT GLOBAL HIDDEN 25 __TMC_END__ + 41: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 42: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 + 43: 0000000000001000 0 FUNC GLOBAL HIDDEN 12 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/Makefile deleted file mode 100644 index 46de10ac0..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -CC=clang -CFLAGS=-target $(TARGET) -O2 - -include ../../../make/lift.mk - 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 index 82df9a672..b503d2aa0 100644 --- 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 @@ -1,12 +1,12 @@ 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 2392 20 2392)\n(code-region 1984 408 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 132)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2392 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2392 20)\n(llvm:code-entry .text 1984 408)\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 2416 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 2688)\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 2416 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 2688)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2480 208 2480)\n(llvm:section-entry .eh_frame_hdr 2416 60 2416)\n(llvm:section-entry .rodata 2412 4 2412)\n(llvm:section-entry .fini 2392 20 2392)\n(llvm:section-entry .text 1984 408 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 132 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2392 0 2392 2392)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2688 0)\n(mapped 130504 676 64968)\n(named-region 0 2688 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 408 .text)\n(named-region 2392 20 .fini)\n(named-region 2412 4 .rodata)\n(named-region 2416 60 .eh_frame_hdr)\n(named-region 2480 208 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2392 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 408)\n(section 2392 20)\n(section 2412 4)\n(section 2416 60)\n(section 2480 208)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2688 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 132 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2392 2392)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("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 2400 20 2400)\n(code-region 1984 416 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 140)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2400 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2400 20)\n(llvm:code-entry .text 1984 416)\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 2424 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 2696)\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 2424 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 2696)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2488 208 2488)\n(llvm:section-entry .eh_frame_hdr 2424 60 2424)\n(llvm:section-entry .rodata 2420 4 2420)\n(llvm:section-entry .fini 2400 20 2400)\n(llvm:section-entry .text 1984 416 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 140 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2400 0 2400 2400)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2696 0)\n(mapped 130504 676 64968)\n(named-region 0 2696 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 416 .text)\n(named-region 2400 20 .fini)\n(named-region 2420 4 .rodata)\n(named-region 2424 60 .eh_frame_hdr)\n(named-region 2488 208 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2400 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 416)\n(section 2400 20)\n(section 2420 4)\n(section 2424 60)\n(section 2488 208)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2696 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 140 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2400 2400)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\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\x70\x09\x00\x00\x00\x00\x00\x00\x70\x09\x00\x00\x00\x00\x00\x00\x70\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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e\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"), -Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\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\x70\x09\x00\x00\x00\x00\x00\x00\x70\x09\x00\x00\x00\x00\x00\x00\x70\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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7e\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x8a\xff\xff\x97\xa0\x3e\x40\xf9\x98\xff\xff\x97\xe0\x03\x1f\x2a"), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x88\x0a\x00\x00\x00\x00\x00\x00\x88\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x88\x0a\x00\x00\x00\x00\x00\x00\x88\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\x78\x09\x00\x00\x00\x00\x00\x00\x78\x09\x00\x00\x00\x00\x00\x00\x78\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\x5b\x10\x8b\xba\x47\xb7\xda\x9b\xd0\xcb\x03\x1e\x2f\x08\xb4\x7c\x89\x28\xe0\x38\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"), +Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x88\x0a\x00\x00\x00\x00\x00\x00\x88\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\x78\x09\x00\x00\x00\x00\x00\x00\x78\x09\x00\x00\x00\x00\x00\x00\x78\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\x5b\x10\x8b\xba\x47\xb7\xda\x9b\xd0\xcb\x03\x1e\x2f\x08\xb4\x7c\x89\x28\xe0\x38\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xa8\x3e\x40\xf9\x1f\x11\x00\x39\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7c\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x88\xff\xff\x97\xa0\x3e\x40\xf9"), Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), 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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x5b\x10\x8b\xba\x47\xb7\xda\x9b\xd0\xcb\x03\x1e\x2f\x08\xb4\x7c\x89\x28\xe0\x38"), 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"), @@ -17,18 +17,18 @@ Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x0 Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x958, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x96C, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x970, "\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", 0x9B0, "\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", 0x960, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x974, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x978, "\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", 0x9B8, "\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", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x58\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(".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\x60\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), -Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7e\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x8a\xff\xff\x97\xa0\x3e\x40\xf9\x98\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,0xA7F), Attr("segment","02 0 2688")), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xa8\x3e\x40\xf9\x1f\x11\x00\x39\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7c\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x88\xff\xff\x97\xa0\x3e\x40\xf9\x96\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,0xA87), Attr("segment","02 0 2696")), Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), @@ -51,12 +51,12 @@ Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x957), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x957), Attr("symbol-info","main 0x8D4 132")), -Annotation(Region(0x958,0x96B), Attr("section","\".fini\"")), -Annotation(Region(0x96C,0x96F), Attr("section","\".rodata\"")), -Annotation(Region(0x970,0x9AB), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x9B0,0xA7F), Attr("section","\".eh_frame\"")), +Annotation(Region(0x8D4,0x95F), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x95F), Attr("symbol-info","main 0x8D4 140")), +Annotation(Region(0x960,0x973), Attr("section","\".fini\"")), +Annotation(Region(0x974,0x977), Attr("section","\".rodata\"")), +Annotation(Region(0x978,0x9B3), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9B8,0xA87), Attr("section","\".eh_frame\"")), Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), @@ -64,677 +64,697 @@ Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), -Annotation(Region(0x7C0,0x957), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x957), Attr("code-region","()")), -Annotation(Region(0x958,0x96B), Attr("code-region","()"))]), -Program(Tid(1_938, "%00000792"), Attrs([]), - Subs([Sub(Tid(1_910, "@__cxa_finalize"), +Annotation(Region(0x7C0,0x95F), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x95F), Attr("code-region","()")), +Annotation(Region(0x960,0x973), Attr("code-region","()"))]), +Program(Tid(2_109, "%0000083d"), Attrs([]), + Subs([Sub(Tid(2_081, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(1_939, "%00000793"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_110, "%0000083e"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_243, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_517, "%000005ed"), Attrs([Attr("address","0x740"), +Defs([Def(Tid(1_663, "%0000067f"), Attrs([Attr("address","0x740"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_524, "%000005f4"), Attrs([Attr("address","0x744"), +Def(Tid(1_671, "%00000687"), 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_530, "%000005fa"), Attrs([Attr("address","0x748"), +Def(Tid(1_678, "%0000068e"), 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_535, "%000005ff"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_683, "%00000693"), Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(1_911, "@__do_global_dtors_aux"), +Sub(Tid(2_082, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(1_940, "%00000794"), + "__do_global_dtors_aux", Args([Arg(Tid(2_111, "%0000083f"), 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","0x880")]), Phis([]), Defs([Def(Tid(727, "%000002d7"), +Blks([Blk(Tid(766, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(773, "%00000305"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(733, "%000002dd"), Attrs([Attr("address","0x880"), +Def(Tid(778, "%0000030a"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(739, "%000002e3"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(787, "%00000313"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(749, "%000002ed"), +Var("#34",Imm(64))), Def(Tid(794, "%0000031a"), Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(757, "%000002f5"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(802, "%00000322"), Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x88C"), +Def(Tid(808, "%00000328"), Attrs([Attr("address","0x88C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(769, "%00000301"), Attrs([Attr("address","0x890"), +Def(Tid(817, "%00000331"), Attrs([Attr("address","0x890"), 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","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(773, "%00000305"))), -Goto(Tid(1_912, "%00000778"), Attrs([]), Int(1,1), -Direct(Tid(1_074, "%00000432")))])), Blk(Tid(1_074, "%00000432"), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), +Def(Tid(829, "%0000033d"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(823, "%00000337"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(821, "%00000335"))), Goto(Tid(2_083, "%00000823"), Attrs([]), + Int(1,1), Direct(Tid(1_177, "%00000499")))])), Blk(Tid(1_177, "%00000499"), Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x898"), +Defs([Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x898"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x89C"), +Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x89C"), Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_090, "%00000442"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_088, "%00000440"))), Goto(Tid(1_913, "%00000779"), Attrs([]), - Int(1,1), Direct(Tid(1_113, "%00000459")))])), Blk(Tid(1_113, "%00000459"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(1_201, "%000004b1"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), Var("#86",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_195, "%000004ab"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Var("#86",Imm(1)), Direct(Tid(1_193, "%000004a9"))), +Goto(Tid(2_084, "%00000824"), Attrs([]), Int(1,1), +Direct(Tid(1_225, "%000004c9")))])), Blk(Tid(1_225, "%000004c9"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_229, "%000004cd"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8A8"), Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_242, "%000004da"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_131, "%0000046b"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(1_910, "@__cxa_finalize")),Direct(Tid(1_088, "%00000440"))))])), -Blk(Tid(1_088, "%00000440"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x8B0"), +(Direct(Tid(2_081, "@__cxa_finalize")),Direct(Tid(1_193, "%000004a9"))))])), +Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(1_208, "%000004b8"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(1_924, "@deregister_tm_clones")),Direct(Tid(1_100, "%0000044c"))))])), -Blk(Tid(1_100, "%0000044c"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_095, "@deregister_tm_clones")),Direct(Tid(1_210, "%000004ba"))))])), +Blk(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x8B4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x8B8"), 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(1_914, "%0000077a"), Attrs([]), Int(1,1), -Direct(Tid(773, "%00000305")))])), Blk(Tid(773, "%00000305"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(783, "%0000030f"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_085, "%00000825"), Attrs([]), Int(1,1), +Direct(Tid(821, "%00000335")))])), Blk(Tid(821, "%00000335"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(837, "%00000345"), Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(790, "%00000316"), Attrs([Attr("address","0x8C0"), +Def(Tid(847, "%0000034f"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(795, "%0000031b"), Attrs([Attr("address","0x8C0"), +Def(Tid(851, "%00000353"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(799, "%0000031f"), Attrs([Attr("address","0x8C0"), +Def(Tid(854, "%00000356"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(804, "%00000324"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(859, "%0000035b"), Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_915, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_086, "@__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(1_941, "%00000795"), + Args([Arg(Tid(2_112, "%00000840"), 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_942, "%00000796"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_113, "%00000841"), 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_943, "%00000797"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_114, "%00000842"), 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_944, "%00000798"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_115, "%00000843"), 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_945, "%00000799"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_116, "%00000844"), 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"), +Out())]), Blks([Blk(Tid(578, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_495, "%000005d7"), Attrs([Attr("address","0x730"), +Defs([Def(Tid(1_638, "%00000666"), Attrs([Attr("address","0x730"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_502, "%000005de"), Attrs([Attr("address","0x734"), +Def(Tid(1_646, "%0000066e"), 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_508, "%000005e4"), Attrs([Attr("address","0x738"), +Def(Tid(1_653, "%00000675"), 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_513, "%000005e9"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_658, "%0000067a"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_916, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x958")]), - "_fini", Args([Arg(Tid(1_946, "%0000079a"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_087, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x960")]), + "_fini", Args([Arg(Tid(2_117, "%00000845"), 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","0x958")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0x95C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), + Attrs([Attr("address","0x960")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x964"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x95C"), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x964"), 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","0x95C"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x964"), 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","0x95C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(55, "%00000037"), Attrs([Attr("address","0x964"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x960"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x968"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x964"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x96C"), 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","0x964"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x96C"), 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","0x964"), +Def(Tid(79, "%0000004f"), Attrs([Attr("address","0x96C"), 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","0x968"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_917, "@_init"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0x970"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_088, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(1_947, "%0000079b"), + "_init", Args([Arg(Tid(2_118, "%00000846"), 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_695, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_861, "@_init"), Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_701, "%000006a5"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#8",Imm(64)), +Defs([Def(Tid(1_870, "%0000074e"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#117",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_707, "%000006ab"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_875, "%00000753"), 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_713, "%000006b1"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),Var("#117",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_880, "%00000758"), 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_717, "%000006b5"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#117",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#8",Imm(64))), Def(Tid(1_723, "%000006bb"), +Var("#117",Imm(64))), Def(Tid(1_891, "%00000763"), Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_728, "%000006c0"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_896, "%00000768"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_730, "%000006c2"), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_898, "%0000076a"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(1_922, "@call_weak_fn")),Direct(Tid(1_732, "%000006c4"))))])), -Blk(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_737, "%000006c9"), Attrs([Attr("address","0x6E8"), +(Direct(Tid(2_093, "@call_weak_fn")),Direct(Tid(1_900, "%0000076c"))))])), +Blk(Tid(1_900, "%0000076c"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_908, "%00000774"), 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_742, "%000006ce"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_912, "%00000778"), 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_746, "%000006d2"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_915, "%0000077b"), 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_751, "%000006d7"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_920, "%00000780"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_918, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_089, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(1_948, "%0000079c"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_119, "%00000847"), 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","0x7C0")]), Phis([]), Defs([Def(Tid(498, "%000001f2"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(504, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(510, "%000001fe"), Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(503, "%000001f7"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(516, "%00000204"), Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(509, "%000001fd"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(524, "%0000020c"), Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(516, "%00000204"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(532, "%00000214"), Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(522, "%0000020a"), Attrs([Attr("address","0x7D4"), +Def(Tid(539, "%0000021b"), Attrs([Attr("address","0x7D4"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(528, "%00000210"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(546, "%00000222"), Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(533, "%00000215"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(552, "%00000228"), Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(540, "%0000021c"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(560, "%00000230"), Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(545, "%00000221"), Attrs([Attr("address","0x7E4"), +Def(Tid(566, "%00000236"), Attrs([Attr("address","0x7E4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(550, "%00000226"), Attrs([Attr("address","0x7E8"), +Def(Tid(572, "%0000023c"), Attrs([Attr("address","0x7E8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(555, "%0000022b"), Attrs([Attr("address","0x7EC"), +Def(Tid(577, "%00000241"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(558, "%0000022e"), Attrs([Attr("address","0x7EC"), +Jmps([Call(Tid(580, "%00000244"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(1_915, "@__libc_start_main")),Direct(Tid(560, "%00000230"))))])), -Blk(Tid(560, "%00000230"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(563, "%00000233"), Attrs([Attr("address","0x7F0"), +(Direct(Tid(2_086, "@__libc_start_main")),Direct(Tid(582, "%00000246"))))])), +Blk(Tid(582, "%00000246"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(585, "%00000249"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(566, "%00000236"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(588, "%0000024c"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(1_921, "@abort")),Direct(Tid(1_919, "%0000077f"))))])), -Blk(Tid(1_919, "%0000077f"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(1_920, "%00000780"), Attrs([]), Int(1,1), -(Direct(Tid(1_922, "@call_weak_fn")),))]))])), Sub(Tid(1_921, "@abort"), +(Direct(Tid(2_092, "@abort")),Direct(Tid(2_090, "%0000082a"))))])), +Blk(Tid(2_090, "%0000082a"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_091, "%0000082b"), Attrs([]), Int(1,1), +(Direct(Tid(2_093, "@call_weak_fn")),))]))])), Sub(Tid(2_092, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(564, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_605, "%00000645"), Attrs([Attr("address","0x780"), +Blks([Blk(Tid(586, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_763, "%000006e3"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_612, "%0000064c"), Attrs([Attr("address","0x784"), +Def(Tid(1_771, "%000006eb"), 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_618, "%00000652"), Attrs([Attr("address","0x788"), +Def(Tid(1_778, "%000006f2"), 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_623, "%00000657"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_783, "%000006f7"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_922, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_093, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(1_949, "%0000079d"), + "call_weak_fn", Args([Arg(Tid(2_120, "%00000848"), 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","0x7F4")]), Phis([]), Defs([Def(Tid(571, "%0000023b"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(590, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(594, "%00000252"), Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(578, "%00000242"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(602, "%0000025a"), Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(584, "%00000248"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(582, "%00000246"))), Goto(Tid(1_923, "%00000783"), Attrs([]), - Int(1,1), Direct(Tid(1_193, "%000004a9")))])), Blk(Tid(582, "%00000246"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(614, "%00000266"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(608, "%00000260"), + Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(606, "%0000025e"))), +Goto(Tid(2_094, "%0000082e"), Attrs([]), Int(1,1), +Direct(Tid(1_325, "%0000052d")))])), Blk(Tid(606, "%0000025e"), Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(590, "%0000024e"), Attrs([Attr("address","0x804"), +Jmps([Call(Tid(619, "%0000026b"), Attrs([Attr("address","0x804"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x800"), +Blk(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_328, "%00000530"), Attrs([Attr("address","0x800"), Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_194, "@__gmon_start__")))])), Blk(Tid(1_194, "@__gmon_start__"), +Direct(Tid(1_326, "@__gmon_start__")))])), Blk(Tid(1_326, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_583, "%0000062f"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_738, "%000006ca"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_590, "%00000636"), Attrs([Attr("address","0x774"), +Def(Tid(1_746, "%000006d2"), 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_596, "%0000063c"), Attrs([Attr("address","0x778"), +Def(Tid(1_753, "%000006d9"), 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_601, "%00000641"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_758, "%000006de"), Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(1_924, "@deregister_tm_clones"), +Sub(Tid(2_095, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(1_950, "%0000079e"), + "deregister_tm_clones", Args([Arg(Tid(2_121, "%00000849"), 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","0x810")]), Phis([]), Defs([Def(Tid(599, "%00000257"), +Blks([Blk(Tid(625, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(629, "%00000275"), Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(605, "%0000025d"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(636, "%0000027c"), Attrs([Attr("address","0x814"), 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","0x818"), +Def(Tid(642, "%00000282"), Attrs([Attr("address","0x818"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(616, "%00000268"), Attrs([Attr("address","0x81C"), +Def(Tid(649, "%00000289"), Attrs([Attr("address","0x81C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(622, "%0000026e"), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(657, "%00000291"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(627, "%00000273"), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(661, "%00000295"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(664, "%00000298"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(633, "%00000279"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), -NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), -NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(643, "%00000283"), Attrs([Attr("address","0x820"), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(667, "%0000029b"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(647, "%00000287"), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(653, "%0000028d"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(651, "%0000028b"))), Goto(Tid(1_925, "%00000785"), Attrs([]), - Int(1,1), Direct(Tid(1_163, "%0000048b")))])), Blk(Tid(1_163, "%0000048b"), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(684, "%000002ac"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(678, "%000002a6"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(676, "%000002a4"))), Goto(Tid(2_096, "%00000830"), Attrs([]), + Int(1,1), Direct(Tid(1_286, "%00000506")))])), Blk(Tid(1_286, "%00000506"), Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x828"), +Defs([Def(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x828"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x82C"), +Def(Tid(1_298, "%00000512"), Attrs([Attr("address","0x82C"), Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_178, "%0000049a"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(651, "%0000028b"))), Goto(Tid(1_926, "%00000786"), Attrs([]), - Int(1,1), Direct(Tid(1_182, "%0000049e")))])), Blk(Tid(651, "%0000028b"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), Var("#94",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_303, "%00000517"), + Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Var("#94",Imm(1)), Direct(Tid(676, "%000002a4"))), +Goto(Tid(2_097, "%00000831"), Attrs([]), Int(1,1), +Direct(Tid(1_312, "%00000520")))])), Blk(Tid(676, "%000002a4"), Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(659, "%00000293"), Attrs([Attr("address","0x83C"), +Jmps([Call(Tid(689, "%000002b1"), Attrs([Attr("address","0x83C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x834"), +Blk(Tid(1_312, "%00000520"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_318, "%00000526"), Attrs([Attr("address","0x834"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_323, "%0000052b"), Attrs([Attr("address","0x838"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(1_927, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(1_951, "%0000079f"), +Sub(Tid(2_098, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_122, "%0000084a"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(865, "@frame_dummy"), Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(812, "%0000032c"), Attrs([Attr("address","0x8D0"), +Jmps([Call(Tid(867, "%00000363"), Attrs([Attr("address","0x8D0"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(1_934, "@register_tm_clones")),))]))])), Sub(Tid(1_928, "@free"), +(Direct(Tid(2_105, "@register_tm_clones")),))]))])), Sub(Tid(2_099, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(1_952, "%000007a0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_123, "%0000084b"), 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","0x7A0")]), - Phis([]), Defs([Def(Tid(1_649, "%00000671"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_121, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_813, "%00000715"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_656, "%00000678"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_821, "%0000071d"), 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_662, "%0000067e"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_828, "%00000724"), 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_667, "%00000683"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_833, "%00000729"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_929, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_100, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(1_953, "%000007a1"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_124, "%0000084c"), 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_954, "%000007a2"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_125, "%0000084d"), 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_955, "%000007a3"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_126, "%0000084e"), 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","0x8D4")]), Phis([]), Defs([Def(Tid(818, "%00000332"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(869, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(824, "%00000338"), Attrs([Attr("address","0x8D4"), +Def(Tid(881, "%00000371"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(830, "%0000033e"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(886, "%00000376"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(834, "%00000342"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(890, "%0000037a"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#4",Imm(64))), Def(Tid(842, "%0000034a"), +Var("#42",Imm(64))), Def(Tid(898, "%00000382"), Attrs([Attr("address","0x8D8"), 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","0x8DC"), -Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#5",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(854, "%00000356"), +Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x8DC"), +Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#47",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(911, "%0000038f"), Attrs([Attr("address","0x8DC"), 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","0x8DC"), +Store(Var("mem",Mem(64,8)),Var("#47",Imm(64)),Var("R20",Imm(64)),LittleEndian(),64)), +Def(Tid(916, "%00000394"), Attrs([Attr("address","0x8DC"), 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","0x8E0"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#47",Imm(64)),Int(8,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x8E0"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(871, "%00000367"), Attrs([Attr("address","0x8E4"), +Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x8E4"), Attr("insn","mov w0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x8E8"), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x8E8"), Attr("insn","bl #-0x198")]), Var("R30",Imm(64)), Int(2284,64))]), -Jmps([Call(Tid(879, "%0000036f"), Attrs([Attr("address","0x8E8"), +Jmps([Call(Tid(938, "%000003aa"), Attrs([Attr("address","0x8E8"), Attr("insn","bl #-0x198")]), Int(1,1), -(Direct(Tid(1_930, "@malloc")),Direct(Tid(881, "%00000371"))))])), -Blk(Tid(881, "%00000371"), Attrs([Attr("address","0x8EC")]), Phis([]), -Defs([Def(Tid(884, "%00000374"), Attrs([Attr("address","0x8EC"), +(Direct(Tid(2_101, "@malloc")),Direct(Tid(940, "%000003ac"))))])), +Blk(Tid(940, "%000003ac"), Attrs([Attr("address","0x8EC")]), Phis([]), +Defs([Def(Tid(944, "%000003b0"), Attrs([Attr("address","0x8EC"), Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), -Def(Tid(889, "%00000379"), Attrs([Attr("address","0x8F0"), +Def(Tid(950, "%000003b6"), Attrs([Attr("address","0x8F0"), Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), -Def(Tid(895, "%0000037f"), Attrs([Attr("address","0x8F4"), +Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8F4"), Attr("insn","add x20, x20, #0x61")]), Var("R20",Imm(64)), -PLUS(Var("R20",Imm(64)),Int(97,64))), Def(Tid(901, "%00000385"), +PLUS(Var("R20",Imm(64)),Int(97,64))), Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x8F8"), Attr("insn","mov x19, x0")]), - Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(909, "%0000038d"), + Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x8FC"), 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","0x900"), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x900"), Attr("insn","mov x0, x20")]), Var("R0",Imm(64)), Var("R20",Imm(64))), -Def(Tid(920, "%00000398"), Attrs([Attr("address","0x904"), +Def(Tid(986, "%000003da"), Attrs([Attr("address","0x904"), Attr("insn","bl #-0x1e4")]), Var("R30",Imm(64)), Int(2312,64))]), -Jmps([Call(Tid(923, "%0000039b"), Attrs([Attr("address","0x904"), +Jmps([Call(Tid(989, "%000003dd"), Attrs([Attr("address","0x904"), Attr("insn","bl #-0x1e4")]), Int(1,1), -(Direct(Tid(1_937, "@strlen")),Direct(Tid(925, "%0000039d"))))])), -Blk(Tid(925, "%0000039d"), Attrs([Attr("address","0x908")]), Phis([]), -Defs([Def(Tid(929, "%000003a1"), Attrs([Attr("address","0x908"), +(Direct(Tid(2_108, "@strlen")),Direct(Tid(991, "%000003df"))))])), +Blk(Tid(991, "%000003df"), Attrs([Attr("address","0x908")]), Phis([]), +Defs([Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x908"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x90C"), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x90C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x910"), +Def(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x910"), Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), -Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x914"), +Def(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2328,64))]), -Jmps([Call(Tid(949, "%000003b5"), Attrs([Attr("address","0x914"), +Jmps([Call(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x204")]), Int(1,1), -(Direct(Tid(1_931, "@memcpy")),Direct(Tid(951, "%000003b7"))))])), -Blk(Tid(951, "%000003b7"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(955, "%000003bb"), Attrs([Attr("address","0x918"), +(Direct(Tid(2_102, "@memcpy")),Direct(Tid(1_023, "%000003ff"))))])), +Blk(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x918"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x91C"), +Def(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x91C"), Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2336,64))]), -Jmps([Call(Tid(963, "%000003c3"), Attrs([Attr("address","0x91C"), +Jmps([Call(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x91C"), Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(1_933, "@puts")),Direct(Tid(965, "%000003c5"))))])), -Blk(Tid(965, "%000003c5"), Attrs([Attr("address","0x920")]), Phis([]), -Defs([Def(Tid(970, "%000003ca"), Attrs([Attr("address","0x920"), +(Direct(Tid(2_104, "@puts")),Direct(Tid(1_039, "%0000040f"))))])), +Blk(Tid(1_039, "%0000040f"), Attrs([Attr("address","0x920")]), Phis([]), +Defs([Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x920"), +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(1_053, "%0000041d"), Attrs([Attr("address","0x924"), +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),BigEndian(),8)), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x928"), 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","0x924"), +Def(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x92C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x928"), -Attr("insn","bl #-0x208")]), Var("R30",Imm(64)), Int(2348,64))]), -Jmps([Call(Tid(983, "%000003d7"), Attrs([Attr("address","0x928"), -Attr("insn","bl #-0x208")]), Int(1,1), -(Direct(Tid(1_937, "@strlen")),Direct(Tid(985, "%000003d9"))))])), -Blk(Tid(985, "%000003d9"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x92C"), +Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x930"), +Attr("insn","bl #-0x210")]), Var("R30",Imm(64)), Int(2356,64))]), +Jmps([Call(Tid(1_076, "%00000434"), Attrs([Attr("address","0x930"), +Attr("insn","bl #-0x210")]), Int(1,1), +(Direct(Tid(2_108, "@strlen")),Direct(Tid(1_078, "%00000436"))))])), +Blk(Tid(1_078, "%00000436"), Attrs([Attr("address","0x934")]), Phis([]), +Defs([Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x934"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x930"), +Def(Tid(1_092, "%00000444"), Attrs([Attr("address","0x938"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x934"), +Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x93C"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1d8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1d8")]), Int(1,1), -(Direct(Tid(1_932, "@memset")),Direct(Tid(1_010, "%000003f2"))))])), -Blk(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x93C"), +Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x940"), +Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2372,64))]), +Jmps([Call(Tid(1_107, "%00000453"), Attrs([Attr("address","0x940"), +Attr("insn","bl #-0x1e0")]), Int(1,1), +(Direct(Tid(2_103, "@memset")),Direct(Tid(1_109, "%00000455"))))])), +Blk(Tid(1_109, "%00000455"), Attrs([Attr("address","0x944")]), Phis([]), +Defs([Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x944"), 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","0x940"), -Attr("insn","bl #-0x1a0")]), Var("R30",Imm(64)), Int(2372,64))]), -Jmps([Call(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x940"), -Attr("insn","bl #-0x1a0")]), Int(1,1), -(Direct(Tid(1_928, "@free")),Direct(Tid(1_025, "%00000401"))))])), -Blk(Tid(1_025, "%00000401"), Attrs([Attr("address","0x944")]), Phis([]), -Defs([Def(Tid(1_028, "%00000404"), Attrs([Attr("address","0x944"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x948"), -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","0x948"), 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","0x948"), +Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x948"), +Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2380,64))]), +Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x948"), +Attr("insn","bl #-0x1a8")]), Int(1,1), +(Direct(Tid(2_099, "@free")),Direct(Tid(1_125, "%00000465"))))])), +Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x94C")]), Phis([]), +Defs([Def(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x94C"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), +Def(Tid(1_141, "%00000475"), Attrs([Attr("address","0x950"), +Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R20",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),LittleEndian(),64)), +Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x950"), 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","0x94C"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), +Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x954"), 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","0x950"), +Def(Tid(1_163, "%0000048b"), Attrs([Attr("address","0x958"), 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","0x950"), +Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x958"), 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","0x950"), +Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x958"), 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","0x954"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_930, "@malloc"), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_175, "%00000497"), + Attrs([Attr("address","0x95C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_101, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(1_956, "%000007a4"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_127, "%0000084f"), 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(1_957, "%000007a5"), +Var("R0",Imm(64)), In()), Arg(Tid(2_128, "%00000850"), 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","0x750")]), Phis([]), -Defs([Def(Tid(1_539, "%00000603"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(936, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x750"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_546, "%0000060a"), Attrs([Attr("address","0x754"), +Def(Tid(1_696, "%000006a0"), 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_552, "%00000610"), Attrs([Attr("address","0x758"), +Def(Tid(1_703, "%000006a7"), 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_557, "%00000615"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_708, "%000006ac"), Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_931, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_102, "@memcpy"), Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), Attr("address","0x710"), Attr("stub","()")]), "memcpy", - Args([Arg(Tid(1_958, "%000007a6"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_129, "%00000851"), 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_959, "%000007a7"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_130, "%00000852"), 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_960, "%000007a8"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_131, "%00000853"), 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_961, "%000007a9"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_132, "%00000854"), 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","0x710")]), Phis([]), -Defs([Def(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_019, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_588, "%00000634"), Attrs([Attr("address","0x710"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_458, "%000005b2"), Attrs([Attr("address","0x714"), +Def(Tid(1_596, "%0000063c"), 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_464, "%000005b8"), Attrs([Attr("address","0x718"), +Def(Tid(1_603, "%00000643"), Attrs([Attr("address","0x718"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_469, "%000005bd"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_608, "%00000648"), Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_932, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_103, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(1_962, "%000007aa"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_133, "%00000855"), 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(1_963, "%000007ab"), +Both()), Arg(Tid(2_134, "%00000856"), 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(1_964, "%000007ac"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_135, "%00000857"), 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(1_965, "%000007ad"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_136, "%00000858"), 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","0x760")]), Phis([]), -Defs([Def(Tid(1_561, "%00000619"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_105, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_713, "%000006b1"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_568, "%00000620"), Attrs([Attr("address","0x764"), +Def(Tid(1_721, "%000006b9"), 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_574, "%00000626"), Attrs([Attr("address","0x768"), +Def(Tid(1_728, "%000006c0"), 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_579, "%0000062b"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_733, "%000006c5"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_933, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_104, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(1_966, "%000007ae"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_137, "%00000859"), 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(1_967, "%000007af"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_138, "%0000085a"), 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","0x790")]), Phis([]), -Defs([Def(Tid(1_627, "%0000065b"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_035, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_788, "%000006fc"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_634, "%00000662"), Attrs([Attr("address","0x794"), +Def(Tid(1_796, "%00000704"), 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_640, "%00000668"), Attrs([Attr("address","0x798"), +Def(Tid(1_803, "%0000070b"), 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_645, "%0000066d"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_808, "%00000710"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(1_934, "@register_tm_clones"), +Sub(Tid(2_105, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(1_968, "%000007b0"), + "register_tm_clones", Args([Arg(Tid(2_139, "%0000085b"), 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","0x840")]), - Phis([]), Defs([Def(Tid(664, "%00000298"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(691, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x840"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x844"), +Def(Tid(702, "%000002be"), Attrs([Attr("address","0x844"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(675, "%000002a3"), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(708, "%000002c4"), Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x84C"), 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","0x850"), +Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x850"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(694, "%000002b6"), Attrs([Attr("address","0x854"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x858"), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(730, "%000002da"), + Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x858"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x85C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(745, "%000002e9"), Attrs([Attr("address","0x85C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(713, "%000002c9"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(711, "%000002c7"))), Goto(Tid(1_935, "%0000078f"), Attrs([]), - Int(1,1), Direct(Tid(1_133, "%0000046d")))])), Blk(Tid(1_133, "%0000046d"), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(757, "%000002f5"), + Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(751, "%000002ef"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(749, "%000002ed"))), Goto(Tid(2_106, "%0000083a"), Attrs([]), + Int(1,1), Direct(Tid(1_247, "%000004df")))])), Blk(Tid(1_247, "%000004df"), Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_136, "%00000470"), Attrs([Attr("address","0x864"), +Defs([Def(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x864"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x868"), +Def(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x868"), Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(711, "%000002c7"))), Goto(Tid(1_936, "%00000790"), Attrs([]), - Int(1,1), Direct(Tid(1_152, "%00000480")))])), Blk(Tid(711, "%000002c7"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), +Def(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), Var("#89",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_264, "%000004f0"), + Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Var("#89",Imm(1)), Direct(Tid(749, "%000002ed"))), +Goto(Tid(2_107, "%0000083b"), Attrs([]), Int(1,1), +Direct(Tid(1_273, "%000004f9")))])), Blk(Tid(749, "%000002ed"), Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(719, "%000002cf"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(762, "%000002fa"), Attrs([Attr("address","0x878"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_152, "%00000480"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x870"), +Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x870"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_161, "%00000489"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_284, "%00000504"), Attrs([Attr("address","0x874"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(1_937, "@strlen"), +Sub(Tid(2_108, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(1_969, "%000007b1"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_140, "%0000085c"), 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(1_970, "%000007b2"), +In()), Arg(Tid(2_141, "%0000085d"), 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"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(987, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_473, "%000005c1"), Attrs([Attr("address","0x720"), +Defs([Def(Tid(1_613, "%0000064d"), Attrs([Attr("address","0x720"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_480, "%000005c8"), Attrs([Attr("address","0x724"), +Def(Tid(1_621, "%00000655"), 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_486, "%000005ce"), Attrs([Attr("address","0x728"), +Def(Tid(1_628, "%0000065c"), 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_491, "%000005d3"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_633, "%00000661"), 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/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 index 7a2981d48..50ab96027 100644 --- 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 @@ -1,348 +1,357 @@ -00000792: program -00000776: sub __cxa_finalize(__cxa_finalize_result) -00000793: __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 - -00000777: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000794: __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 -00000778: goto %00000432 - -00000432: -00000435: R0 := 0x1F000 -0000043c: R0 := mem[R0 + 0xFC8, el]:u64 -00000442: when R0 = 0 goto %00000440 -00000779: goto %00000459 - -00000459: -0000045c: R0 := 0x20000 -00000463: R0 := mem[R0 + 0x58, el]:u64 -00000468: R30 := 0x8B0 -0000046b: call @__cxa_finalize with return %00000440 - -00000440: -00000448: R30 := 0x8B4 -0000044a: call @deregister_tm_clones with return %0000044c - -0000044c: -0000044f: R0 := 1 -00000457: mem := mem with [R19 + 0x70] <- 7:0[R0] -0000077a: 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 - -0000077b: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000795: __libc_start_main_main :: in u64 = R0 -00000796: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000797: __libc_start_main_arg3 :: in out u64 = R2 -00000798: __libc_start_main_auxv :: in out u64 = R3 -00000799: __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 - -0000077c: sub _fini(_fini_result) -0000079a: _fini_result :: out u32 = low:32[R0] +0000083d: program +00000821: sub __cxa_finalize(__cxa_finalize_result) +0000083e: __cxa_finalize_result :: out u32 = low:32[R0] + +000004db: +0000067f: R16 := 0x20000 +00000687: R17 := mem[R16 + 0x18, el]:u64 +0000068e: R16 := R16 + 0x18 +00000693: call R17 with noreturn + +00000822: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000083f: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002fe: +00000305: #34 := R31 - 0x20 +0000030a: mem := mem with [#34, el]:u64 <- R29 +0000030f: mem := mem with [#34 + 8, el]:u64 <- R30 +00000313: R31 := #34 +0000031a: R29 := R31 +00000322: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000328: R19 := 0x20000 +00000331: R0 := pad:32[mem[R19 + 0x70]] +0000033d: #36 := ~~0:0[R0] +00000337: when #36 goto %00000335 +00000823: goto %00000499 + +00000499: +0000049d: R0 := 0x1F000 +000004a5: R0 := mem[R0 + 0xFC8, el]:u64 +000004b1: #86 := R0 = 0 +000004ab: when #86 goto %000004a9 +00000824: goto %000004c9 + +000004c9: +000004cd: R0 := 0x20000 +000004d5: R0 := mem[R0 + 0x58, el]:u64 +000004da: R30 := 0x8B0 +000004dd: call @__cxa_finalize with return %000004a9 + +000004a9: +000004b6: R30 := 0x8B4 +000004b8: call @deregister_tm_clones with return %000004ba + +000004ba: +000004bf: R0 := 1 +000004c7: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] +00000825: goto %00000335 + +00000335: +00000345: R19 := mem[R31 + 0x10, el]:u64 +0000034f: R29 := mem[R31, el]:u64 +00000353: R30 := mem[R31 + 8, el]:u64 +00000356: R31 := R31 + 0x20 +0000035b: call R30 with noreturn + +00000826: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000840: __libc_start_main_main :: in u64 = R0 +00000841: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000842: __libc_start_main_arg3 :: in out u64 = R2 +00000843: __libc_start_main_auxv :: in out u64 = R3 +00000844: __libc_start_main_result :: out u32 = low:32[R0] + +00000242: +00000666: R16 := 0x20000 +0000066e: R17 := mem[R16 + 0x10, el]:u64 +00000675: R16 := R16 + 0x10 +0000067a: call R17 with noreturn + +00000827: sub _fini(_fini_result) +00000845: _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 - -0000077d: sub _init(_init_result) -0000079b: _init_result :: out u32 = low:32[R0] - -0000069f: -000006a5: #8 := R31 - 0x10 -000006ab: mem := mem with [#8, el]:u64 <- R29 -000006b1: mem := mem with [#8 + 8, el]:u64 <- R30 -000006b5: R31 := #8 -000006bb: R29 := R31 -000006c0: R30 := 0x6E8 -000006c2: call @call_weak_fn with return %000006c4 - -000006c4: -000006c9: R29 := mem[R31, el]:u64 -000006ce: R30 := mem[R31 + 8, el]:u64 -000006d2: R31 := R31 + 0x10 -000006d7: call R30 with noreturn - -0000077e: sub _start(_start_result) -0000079c: _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 := 0x7F0 -0000022e: call @__libc_start_main with return %00000230 - -00000230: -00000233: R30 := 0x7F4 -00000236: call @abort with return %0000077f - -0000077f: -00000780: call @call_weak_fn with noreturn - -00000781: sub abort() - - -00000234: -00000645: R16 := 0x20000 -0000064c: R17 := mem[R16 + 0x38, el]:u64 -00000652: R16 := R16 + 0x38 -00000657: call R17 with noreturn - -00000782: sub call_weak_fn(call_weak_fn_result) -0000079d: 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 -00000783: goto %000004a9 +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +00000828: sub _init(_init_result) +00000846: _init_result :: out u32 = low:32[R0] + +00000745: +0000074e: #117 := R31 - 0x10 +00000753: mem := mem with [#117, el]:u64 <- R29 +00000758: mem := mem with [#117 + 8, el]:u64 <- R30 +0000075c: R31 := #117 +00000763: R29 := R31 +00000768: R30 := 0x6E8 +0000076a: call @call_weak_fn with return %0000076c + +0000076c: +00000774: R29 := mem[R31, el]:u64 +00000778: R30 := mem[R31 + 8, el]:u64 +0000077b: R31 := R31 + 0x10 +00000780: call R30 with noreturn + +00000829: sub _start(_start_result) +00000847: _start_result :: out u32 = low:32[R0] + +000001f8: +000001fe: R29 := 0 +00000204: R30 := 0 +0000020c: R5 := R0 +00000214: R1 := mem[R31, el]:u64 +0000021b: R2 := R31 + 8 +00000222: R6 := R31 +00000228: R0 := 0x1F000 +00000230: R0 := mem[R0 + 0xFD8, el]:u64 +00000236: R3 := 0 +0000023c: R4 := 0 +00000241: R30 := 0x7F0 +00000244: call @__libc_start_main with return %00000246 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 - -00000784: sub deregister_tm_clones(deregister_tm_clones_result) -0000079e: 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 -00000785: goto %0000048b - -0000048b: -0000048e: R1 := 0x1F000 -00000495: R1 := mem[R1 + 0xFC0, el]:u64 -0000049a: when R1 = 0 goto %0000028b -00000786: goto %0000049e - -0000028b: -00000293: call R30 with noreturn - -0000049e: -000004a2: R16 := R1 -000004a7: call R16 with noreturn - -00000787: sub frame_dummy(frame_dummy_result) -0000079f: frame_dummy_result :: out u32 = low:32[R0] - -0000032a: -0000032c: call @register_tm_clones with noreturn - -00000788: sub free(free_ptr) -000007a0: 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 - -00000789: sub main(main_argc, main_argv, main_result) -000007a1: main_argc :: in u32 = low:32[R0] -000007a2: main_argv :: in out u64 = R1 -000007a3: 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 := 0x8EC -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 := 0x908 -0000039b: call @strlen with return %0000039d - -0000039d: -000003a1: R2 := R0 -000003a7: R0 := R19 -000003ad: R1 := R20 -000003b2: R30 := 0x918 -000003b5: call @memcpy with return %000003b7 - -000003b7: -000003bb: R0 := R19 -000003c0: R30 := 0x920 -000003c3: call @puts with return %000003c5 - -000003c5: -000003ca: R19 := mem[R21 + 0x78, el]:u64 -000003d0: R0 := R19 -000003d5: R30 := 0x92C -000003d7: call @strlen with return %000003d9 - -000003d9: -000003dd: R2 := R0 -000003e3: R0 := R19 -000003e8: R1 := 1 -000003ed: R30 := 0x93C -000003f0: call @memset with return %000003f2 - -000003f2: -000003f7: R0 := mem[R21 + 0x78, el]:u64 -000003fc: R30 := 0x944 -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 - -0000078a: sub malloc(malloc_size, malloc_result) -000007a4: malloc_size :: in u64 = R0 -000007a5: 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 - -0000078b: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000007a6: memcpy_dst :: in out u64 = R0 -000007a7: memcpy_src :: in out u64 = R1 -000007a8: memcpy_n :: in u64 = R2 -000007a9: memcpy_result :: out u64 = R0 - -000003b3: -000005ab: R16 := 0x20000 -000005b2: R17 := mem[R16, el]:u64 -000005b8: R16 := R16 -000005bd: call R17 with noreturn - -0000078c: sub memset(memset_buf, memset_c, memset_n, memset_result) -000007aa: memset_buf :: in out u64 = R0 -000007ab: memset_c :: in u32 = low:32[R1] -000007ac: memset_n :: in u64 = R2 -000007ad: 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 - -0000078d: sub puts(puts_s, puts_result) -000007ae: puts_s :: in u64 = R0 -000007af: 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 - -0000078e: sub register_tm_clones(register_tm_clones_result) -000007b0: 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 -0000078f: goto %0000046d - -0000046d: -00000470: R2 := 0x1F000 -00000477: R2 := mem[R2 + 0xFE0, el]:u64 -0000047c: when R2 = 0 goto %000002c7 -00000790: goto %00000480 - -000002c7: -000002cf: call R30 with noreturn - -00000480: -00000484: R16 := R2 -00000489: call R16 with noreturn - -00000791: sub strlen(strlen_s, strlen_result) -000007b1: strlen_s :: in u64 = R0 -000007b2: 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 +00000249: R30 := 0x7F4 +0000024c: call @abort with return %0000082a + +0000082a: +0000082b: call @call_weak_fn with noreturn + +0000082c: sub abort() + + +0000024a: +000006e3: R16 := 0x20000 +000006eb: R17 := mem[R16 + 0x38, el]:u64 +000006f2: R16 := R16 + 0x38 +000006f7: call R17 with noreturn + +0000082d: sub call_weak_fn(call_weak_fn_result) +00000848: call_weak_fn_result :: out u32 = low:32[R0] + +0000024e: +00000252: R0 := 0x1F000 +0000025a: R0 := mem[R0 + 0xFD0, el]:u64 +00000266: #12 := R0 = 0 +00000260: when #12 goto %0000025e +0000082e: goto %0000052d + +0000025e: +0000026b: call R30 with noreturn + +0000052d: +00000530: goto @__gmon_start__ + +0000052e: +000006ca: R16 := 0x20000 +000006d2: R17 := mem[R16 + 0x30, el]:u64 +000006d9: R16 := R16 + 0x30 +000006de: call R17 with noreturn + +0000082f: sub deregister_tm_clones(deregister_tm_clones_result) +00000849: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000271: +00000275: R0 := 0x20000 +0000027c: R0 := R0 + 0x70 +00000282: R1 := 0x20000 +00000289: R1 := R1 + 0x70 +00000291: #16 := 1 + ~R0 + R1 +00000295: NF := 63:63[#16] +00000298: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +0000029b: ZF := #16 = 0 +0000029e: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002ac: #21 := ZF +000002a6: when #21 goto %000002a4 +00000830: goto %00000506 + +00000506: +0000050a: R1 := 0x1F000 +00000512: R1 := mem[R1 + 0xFC0, el]:u64 +0000051d: #94 := R1 = 0 +00000517: when #94 goto %000002a4 +00000831: goto %00000520 + +000002a4: +000002b1: call R30 with noreturn + +00000520: +00000526: R16 := R1 +0000052b: call R16 with noreturn + +00000832: sub frame_dummy(frame_dummy_result) +0000084a: frame_dummy_result :: out u32 = low:32[R0] + +00000361: +00000363: call @register_tm_clones with noreturn + +00000833: sub free(free_ptr) +0000084b: free_ptr :: in out u64 = R0 + +00000461: +00000715: R16 := 0x20000 +0000071d: R17 := mem[R16 + 0x48, el]:u64 +00000724: R16 := R16 + 0x48 +00000729: call R17 with noreturn + +00000834: sub main(main_argc, main_argv, main_result) +0000084c: main_argc :: in u32 = low:32[R0] +0000084d: main_argv :: in out u64 = R1 +0000084e: main_result :: out u32 = low:32[R0] + +00000365: +0000036c: #42 := R31 - 0x30 +00000371: mem := mem with [#42, el]:u64 <- R29 +00000376: mem := mem with [#42 + 8, el]:u64 <- R30 +0000037a: R31 := #42 +00000382: mem := mem with [R31 + 0x10, el]:u64 <- R21 +0000038a: #47 := R31 + 0x20 +0000038f: mem := mem with [#47, el]:u64 <- R20 +00000394: mem := mem with [#47 + 8, el]:u64 <- R19 +0000039b: R29 := R31 +000003a2: R0 := 0xB +000003a7: R30 := 0x8EC +000003aa: call @malloc with return %000003ac + +000003ac: +000003b0: R21 := 0x20000 +000003b6: R20 := 0x20000 +000003bd: R20 := R20 + 0x61 +000003c5: R19 := R0 +000003cd: mem := mem with [R21 + 0x78, el]:u64 <- R0 +000003d5: R0 := R20 +000003da: R30 := 0x908 +000003dd: call @strlen with return %000003df + +000003df: +000003e5: R2 := R0 +000003ed: R0 := R19 +000003f5: R1 := R20 +000003fa: R30 := 0x918 +000003fd: call @memcpy with return %000003ff + +000003ff: +00000405: R0 := R19 +0000040a: R30 := 0x920 +0000040d: call @puts with return %0000040f + +0000040f: +00000415: R8 := mem[R21 + 0x78, el]:u64 +0000041d: mem := mem with [R8 + 4] <- 0 +00000425: R19 := mem[R21 + 0x78, el]:u64 +0000042d: R0 := R19 +00000432: R30 := 0x934 +00000434: call @strlen with return %00000436 + +00000436: +0000043c: R2 := R0 +00000444: R0 := R19 +0000044b: R1 := 1 +00000450: R30 := 0x944 +00000453: call @memset with return %00000455 + +00000455: +0000045b: R0 := mem[R21 + 0x78, el]:u64 +00000460: R30 := 0x94C +00000463: call @free with return %00000465 + +00000465: +0000046c: R0 := 0 +00000475: R20 := mem[R31 + 0x20, el]:u64 +00000479: R19 := mem[R31 + 0x28, el]:u64 +00000481: R21 := mem[R31 + 0x10, el]:u64 +0000048b: R29 := mem[R31, el]:u64 +0000048f: R30 := mem[R31 + 8, el]:u64 +00000492: R31 := R31 + 0x30 +00000497: call R30 with noreturn + +00000835: sub malloc(malloc_size, malloc_result) +0000084f: malloc_size :: in u64 = R0 +00000850: malloc_result :: out u64 = R0 + +000003a8: +00000698: R16 := 0x20000 +000006a0: R17 := mem[R16 + 0x20, el]:u64 +000006a7: R16 := R16 + 0x20 +000006ac: call R17 with noreturn + +00000836: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000851: memcpy_dst :: in out u64 = R0 +00000852: memcpy_src :: in out u64 = R1 +00000853: memcpy_n :: in u64 = R2 +00000854: memcpy_result :: out u64 = R0 + +000003fb: +00000634: R16 := 0x20000 +0000063c: R17 := mem[R16, el]:u64 +00000643: R16 := R16 +00000648: call R17 with noreturn + +00000837: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000855: memset_buf :: in out u64 = R0 +00000856: memset_c :: in u32 = low:32[R1] +00000857: memset_n :: in u64 = R2 +00000858: memset_result :: out u64 = R0 + +00000451: +000006b1: R16 := 0x20000 +000006b9: R17 := mem[R16 + 0x28, el]:u64 +000006c0: R16 := R16 + 0x28 +000006c5: call R17 with noreturn + +00000838: sub puts(puts_s, puts_result) +00000859: puts_s :: in u64 = R0 +0000085a: puts_result :: out u32 = low:32[R0] + +0000040b: +000006fc: R16 := 0x20000 +00000704: R17 := mem[R16 + 0x40, el]:u64 +0000070b: R16 := R16 + 0x40 +00000710: call R17 with noreturn + +00000839: sub register_tm_clones(register_tm_clones_result) +0000085b: register_tm_clones_result :: out u32 = low:32[R0] + +000002b3: +000002b7: R0 := 0x20000 +000002be: R0 := R0 + 0x70 +000002c4: R1 := 0x20000 +000002cb: R1 := R1 + 0x70 +000002d3: R1 := R1 - R0 +000002da: R2 := R1 >> 0x3F +000002e2: R1 := R2 + (R1 ~>> 3) +000002e9: R1 := R1 >> 1 +000002f5: #30 := R1 = 0 +000002ef: when #30 goto %000002ed +0000083a: goto %000004df + +000004df: +000004e3: R2 := 0x1F000 +000004eb: R2 := mem[R2 + 0xFE0, el]:u64 +000004f6: #89 := R2 = 0 +000004f0: when #89 goto %000002ed +0000083b: goto %000004f9 + +000002ed: +000002fa: call R30 with noreturn + +000004f9: +000004ff: R16 := R2 +00000504: call R16 with noreturn + +0000083c: sub strlen(strlen_s, strlen_result) +0000085c: strlen_s :: in u64 = R0 +0000085d: strlen_result :: out u64 = R0 + +000003db: +0000064d: R16 := 0x20000 +00000655: R17 := mem[R16 + 8, el]:u64 +0000065c: R16 := R16 + 8 +00000661: call R17 with noreturn 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 index e70b5eeec..3382b0fb3 100644 --- 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 @@ -57,10 +57,10 @@ Symbol table '.symtab' contains 99 entries: 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: 0000000000000958 0 SECTION LOCAL DEFAULT 14 .fini - 15: 000000000000096c 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 0000000000000970 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009b0 0 SECTION LOCAL DEFAULT 17 .eh_frame + 14: 0000000000000960 0 SECTION LOCAL DEFAULT 14 .fini + 15: 0000000000000974 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 0000000000000978 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009b8 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 @@ -73,16 +73,16 @@ Symbol table '.symtab' contains 99 entries: 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 00000000000009c4 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 000000000000096c 0 NOTYPE LOCAL DEFAULT 15 $d + 30: 00000000000009cc 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 0000000000000974 0 NOTYPE LOCAL DEFAULT 15 $d 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 0000000000000958 0 NOTYPE LOCAL DEFAULT 14 $x + 36: 0000000000000960 0 NOTYPE LOCAL DEFAULT 14 $x 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 0000000000000964 0 NOTYPE LOCAL DEFAULT 14 $x + 39: 000000000000096c 0 NOTYPE LOCAL DEFAULT 14 $x 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones @@ -95,20 +95,20 @@ Symbol table '.symtab' contains 99 entries: 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 00000000000009d8 0 NOTYPE LOCAL DEFAULT 17 $d + 52: 00000000000009e0 0 NOTYPE LOCAL DEFAULT 17 $d 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 - 59: 0000000000000a38 0 NOTYPE LOCAL DEFAULT 17 $d.4 + 59: 0000000000000a40 0 NOTYPE LOCAL DEFAULT 17 $d.4 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 61: 0000000000000a7c 0 NOTYPE LOCAL DEFAULT 17 $d - 62: 0000000000000a7c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 61: 0000000000000a84 0 NOTYPE LOCAL DEFAULT 17 $d + 62: 0000000000000a84 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 65: 0000000000000970 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 65: 0000000000000978 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 @@ -120,7 +120,7 @@ Symbol table '.symtab' contains 99 entries: 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata - 77: 0000000000000958 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000000960 0 FUNC GLOBAL HIDDEN 14 _fini 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 @@ -129,7 +129,7 @@ Symbol table '.symtab' contains 99 entries: 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 86: 000000000000096c 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000974 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 @@ -138,7 +138,7 @@ Symbol table '.symtab' contains 99 entries: 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 95: 00000000000008d4 132 FUNC GLOBAL DEFAULT 13 main + 95: 00000000000008d4 140 FUNC GLOBAL DEFAULT 13 main 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..32718d866 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,779 @@ +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 2436 20 2436)\n(code-region 1984 452 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 176)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2436 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2436 20)\n(llvm:code-entry .text 1984 452)\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 2460 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 2720)\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 2460 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 2720)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2520 200 2520)\n(llvm:section-entry .eh_frame_hdr 2460 60 2460)\n(llvm:section-entry .rodata 2456 4 2456)\n(llvm:section-entry .fini 2436 20 2436)\n(llvm:section-entry .text 1984 452 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 176 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2436 0 2436 2436)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2720 0)\n(mapped 130504 676 64968)\n(named-region 0 2720 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 452 .text)\n(named-region 2436 20 .fini)\n(named-region 2456 4 .rodata)\n(named-region 2460 60 .eh_frame_hdr)\n(named-region 2520 200 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2436 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 452)\n(section 2436 20)\n(section 2456 4)\n(section 2460 60)\n(section 2520 200)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2720 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 176 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2436 2436)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\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\x9c\x09\x00\x00\x00\x00\x00\x00\x9c\x09\x00\x00\x00\x00\x00\x00\x9c\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\x70\xc6\x6a\x89\xe9\x7c\x20\xe5\xd8\x2d\x59\xd2\x32\xff\xf0\x9f\xfb\x53\x96\x2f\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"), +Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\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\x9c\x09\x00\x00\x00\x00\x00\x00\x9c\x09\x00\x00\x00\x00\x00\x00\x9c\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\x70\xc6\x6a\x89\xe9\x7c\x20\xe5\xd8\x2d\x59\xd2\x32\xff\xf0\x9f\xfb\x53\x96\x2f\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\xa9\x83\x5f\xf8\x3f\x01\x00\x39"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\x70\xc6\x6a\x89\xe9\x7c\x20\xe5\xd8\x2d\x59\xd2\x32\xff\xf0\x9f\xfb\x53\x96\x2f"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x984, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x998, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x99C, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x24\xfe\xff\xff\x50\x00\x00\x00\x74\xfe\xff\xff\x64\x00\x00\x00\xa4\xfe\xff\xff\x78\x00\x00\x00\xe4\xfe\xff\xff\x8c\x00\x00\x00\x34\xff\xff\xff\xb0\x00\x00\x00\x38\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0x9D8, "\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\xcc\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x08\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x24\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x50\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\x7c\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\x24\x00\x00\x00\x18\x00\x00\x00\x58\xfe\xff\xff\xb0\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x98\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x84\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\xa9\x83\x5f\xf8\x3f\x01\x00\x39\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x73\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x7f\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x8c\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xA9F), Attr("segment","02 0 2720")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), +Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), +Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), +Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), +Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), +Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), +Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), +Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), +Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x983), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x983), Attr("symbol-info","main 0x8D4 176")), +Annotation(Region(0x984,0x997), Attr("section","\".fini\"")), +Annotation(Region(0x998,0x99B), Attr("section","\".rodata\"")), +Annotation(Region(0x99C,0x9D7), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9D8,0xA9F), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x983), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x983), Attr("code-region","()")), +Annotation(Region(0x984,0x997), Attr("code-region","()"))]), +Program(Tid(2_198, "%00000896"), Attrs([]), + Subs([Sub(Tid(2_170, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_199, "%00000897"), + 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_323, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_743, "%000006cf"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_751, "%000006d7"), 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_758, "%000006de"), 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_763, "%000006e3"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_171, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_200, "%00000898"), + 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(802, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(809, "%00000329"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(819, "%00000333"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(823, "%00000337"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#34",Imm(64))), Def(Tid(830, "%0000033e"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(838, "%00000346"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(844, "%0000034c"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(853, "%00000355"), Attrs([Attr("address","0x890"), +Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), +Def(Tid(865, "%00000361"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(859, "%0000035b"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(857, "%00000359"))), Goto(Tid(2_172, "%0000087c"), Attrs([]), + Int(1,1), Direct(Tid(1_257, "%000004e9")))])), Blk(Tid(1_257, "%000004e9"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(1_281, "%00000501"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_275, "%000004fb"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Var("#67",Imm(1)), Direct(Tid(1_273, "%000004f9"))), +Goto(Tid(2_173, "%0000087d"), Attrs([]), Int(1,1), +Direct(Tid(1_305, "%00000519")))])), Blk(Tid(1_305, "%00000519"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_317, "%00000525"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_322, "%0000052a"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_170, "@__cxa_finalize")),Direct(Tid(1_273, "%000004f9"))))])), +Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_288, "%00000508"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_184, "@deregister_tm_clones")),Direct(Tid(1_290, "%0000050a"))))])), +Blk(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_295, "%0000050f"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_303, "%00000517"), Attrs([Attr("address","0x8B8"), +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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_174, "%0000087e"), Attrs([]), Int(1,1), +Direct(Tid(857, "%00000359")))])), Blk(Tid(857, "%00000359"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(873, "%00000369"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(883, "%00000373"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(887, "%00000377"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(890, "%0000037a"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(895, "%0000037f"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_175, "@__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_201, "%00000899"), + 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_202, "%0000089a"), 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_203, "%0000089b"), 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_204, "%0000089c"), 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_205, "%0000089d"), 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(614, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_726, "%000006be"), 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_733, "%000006c5"), 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_738, "%000006ca"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_176, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x984")]), + "_fini", Args([Arg(Tid(2_206, "%0000089e"), + 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","0x984")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x988"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x988"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x988"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x988"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x98C"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x990"), +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(76, "%0000004c"), Attrs([Attr("address","0x990"), +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(79, "%0000004f"), Attrs([Attr("address","0x990"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0x994"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_177, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_207, "%0000089f"), + 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_941, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_950, "%0000079e"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#98",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_955, "%000007a3"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#98",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_960, "%000007a8"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#98",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_964, "%000007ac"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#98",Imm(64))), Def(Tid(1_971, "%000007b3"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_976, "%000007b8"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_978, "%000007ba"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_182, "@call_weak_fn")),Direct(Tid(1_980, "%000007bc"))))])), +Blk(Tid(1_980, "%000007bc"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_988, "%000007c4"), 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_992, "%000007c8"), 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_995, "%000007cb"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_000, "%000007d0"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_178, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_208, "%000008a0"), + 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(540, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(546, "%00000222"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(552, "%00000228"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(560, "%00000230"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(568, "%00000238"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(575, "%0000023f"), Attrs([Attr("address","0x7D4"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(582, "%00000246"), + Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(588, "%0000024c"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(596, "%00000254"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(602, "%0000025a"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(608, "%00000260"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(613, "%00000265"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_175, "@__libc_start_main")),Direct(Tid(618, "%0000026a"))))])), +Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_181, "@abort")),Direct(Tid(2_179, "%00000883"))))])), +Blk(Tid(2_179, "%00000883"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_180, "%00000884"), Attrs([]), Int(1,1), +(Direct(Tid(2_182, "@call_weak_fn")),))]))])), Sub(Tid(2_181, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(622, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_851, "%0000073b"), 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_858, "%00000742"), 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_863, "%00000747"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_182, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(2_209, "%000008a1"), + 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(626, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(630, "%00000276"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(638, "%0000027e"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(650, "%0000028a"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(644, "%00000284"), + Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(642, "%00000282"))), +Goto(Tid(2_183, "%00000887"), Attrs([]), Int(1,1), +Direct(Tid(1_405, "%0000057d")))])), Blk(Tid(642, "%00000282"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(655, "%0000028f"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_405, "%0000057d"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_408, "%00000580"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_406, "@__gmon_start__")))])), Blk(Tid(1_406, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_818, "%0000071a"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_826, "%00000722"), 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_833, "%00000729"), 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_838, "%0000072e"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_184, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(2_210, "%000008a2"), + 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(661, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(665, "%00000299"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(672, "%000002a0"), + Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x81C"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(693, "%000002b5"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(700, "%000002bc"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(706, "%000002c2"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(714, "%000002ca"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(712, "%000002c8"))), Goto(Tid(2_185, "%00000889"), Attrs([]), + Int(1,1), Direct(Tid(1_366, "%00000556")))])), Blk(Tid(1_366, "%00000556"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_370, "%0000055a"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_378, "%00000562"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_383, "%00000567"), + Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Var("#75",Imm(1)), Direct(Tid(712, "%000002c8"))), +Goto(Tid(2_186, "%0000088a"), Attrs([]), Int(1,1), +Direct(Tid(1_392, "%00000570")))])), Blk(Tid(712, "%000002c8"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(725, "%000002d5"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_392, "%00000570"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_398, "%00000576"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_187, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_211, "%000008a3"), + 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(901, "@frame_dummy"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(903, "%00000387"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_194, "@register_tm_clones")),))]))])), Sub(Tid(2_188, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_212, "%000008a4"), + 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_219, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_893, "%00000765"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_901, "%0000076d"), 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_908, "%00000774"), 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_913, "%00000779"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_189, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_213, "%000008a5"), + 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_214, "%000008a6"), + 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_215, "%000008a7"), + 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(905, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(910, "%0000038e"), + Attrs([Attr("address","0x8D4"), Attr("insn","sub sp, sp, #0x40")]), + Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), +Def(Tid(918, "%00000396"), Attrs([Attr("address","0x8D8"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(923, "%0000039b"), + Attrs([Attr("address","0x8D8"), Attr("insn","stp x29, x30, [sp, #0x30]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x8D8"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x8DC"), +Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(943, "%000003af"), + Attrs([Attr("address","0x8E0"), Attr("insn","stur xzr, [x29, #-0x8]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(951, "%000003b7"), Attrs([Attr("address","0x8E4"), +Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8E8"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(965, "%000003c5"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_190, "@malloc")),Direct(Tid(967, "%000003c7"))))])), +Blk(Tid(967, "%000003c7"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x8F0"), +Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x8F4"), +Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x8F8"), +Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x8FC"), +Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x900"), +Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x904"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x908"), +Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(1_024, "%00000400"), + Attrs([Attr("address","0x90C"), Attr("insn","str x0, [sp]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x910"), +Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2324,64))]), +Jmps([Call(Tid(1_032, "%00000408"), Attrs([Attr("address","0x910"), +Attr("insn","bl #-0x1f0")]), Int(1,1), +(Direct(Tid(2_197, "@strlen")),Direct(Tid(1_034, "%0000040a"))))])), +Blk(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x914")]), Phis([]), +Defs([Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x914"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x918"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_056, "%00000420"), Attrs([Attr("address","0x91C"), +Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x920"), +Attr("insn","bl #-0x210")]), Var("R30",Imm(64)), Int(2340,64))]), +Jmps([Call(Tid(1_064, "%00000428"), Attrs([Attr("address","0x920"), +Attr("insn","bl #-0x210")]), Int(1,1), +(Direct(Tid(2_191, "@memcpy")),Direct(Tid(1_066, "%0000042a"))))])), +Blk(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x924")]), Phis([]), +Defs([Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x924"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x928"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(1_088, "%00000440"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_193, "@puts")),Direct(Tid(1_090, "%00000442"))))])), +Blk(Tid(1_090, "%00000442"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x930"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x934"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x938"), +Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_119, "%0000045f"), + Attrs([Attr("address","0x93C"), Attr("insn","stur x9, [x29, #-0x8]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x940"), +Attr("insn","ldur x9, [x29, #-0x8]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), +Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x944"), +Attr("insn","strb wzr, [x9]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),BigEndian(),8)), +Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x948"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x94C"), +Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x950"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x234")]), Var("R30",Imm(64)), Int(2392,64))]), +Jmps([Call(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x234")]), Int(1,1), +(Direct(Tid(2_197, "@strlen")),Direct(Tid(1_168, "%00000490"))))])), +Blk(Tid(1_168, "%00000490"), Attrs([Attr("address","0x958")]), Phis([]), +Defs([Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x958"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x95C"), +Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x960"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x964"), +Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2408,64))]), +Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x964"), +Attr("insn","bl #-0x204")]), Int(1,1), +(Direct(Tid(2_192, "@memset")),Direct(Tid(1_199, "%000004af"))))])), +Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x968")]), Phis([]), +Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x968"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x96C"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2420,64))]), +Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x1d0")]), Int(1,1), +(Direct(Tid(2_188, "@free")),Direct(Tid(1_223, "%000004c7"))))])), +Blk(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_230, "%000004ce"), Attrs([Attr("address","0x974"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), +Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x978"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), +Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x978"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), +Def(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x97C"), +Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_255, "%000004e7"), + Attrs([Attr("address","0x980"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_190, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_216, "%000008a8"), 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_217, "%000008a9"), + 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(963, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_776, "%000006f0"), 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_783, "%000006f7"), 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_788, "%000006fc"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_191, "@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_218, "%000008aa"), 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_219, "%000008ab"), + 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_220, "%000008ac"), 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_221, "%000008ad"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_062, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_668, "%00000684"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_676, "%0000068c"), 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_683, "%00000693"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_688, "%00000698"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_192, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_222, "%000008ae"), 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_223, "%000008af"), + 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_224, "%000008b0"), + 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_225, "%000008b1"), 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_195, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_793, "%00000701"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_801, "%00000709"), 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_808, "%00000710"), 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_813, "%00000715"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_193, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_226, "%000008b2"), 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_227, "%000008b3"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_086, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_868, "%0000074c"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_876, "%00000754"), 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_883, "%0000075b"), 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_888, "%00000760"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_194, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(2_228, "%000008b4"), + 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(727, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x844"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(744, "%000002e8"), + Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(751, "%000002ef"), + Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(766, "%000002fe"), + Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(774, "%00000306"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(781, "%0000030d"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(793, "%00000319"), + Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(787, "%00000313"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(785, "%00000311"))), Goto(Tid(2_195, "%00000893"), Attrs([]), + Int(1,1), Direct(Tid(1_327, "%0000052f")))])), Blk(Tid(1_327, "%0000052f"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_331, "%00000533"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_339, "%0000053b"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), +Def(Tid(1_350, "%00000546"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_344, "%00000540"), + Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Var("#70",Imm(1)), Direct(Tid(785, "%00000311"))), +Goto(Tid(2_196, "%00000894"), Attrs([]), Int(1,1), +Direct(Tid(1_353, "%00000549")))])), Blk(Tid(785, "%00000311"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(798, "%0000031e"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_364, "%00000554"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_197, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_229, "%000008b5"), 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_230, "%000008b6"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_030, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_693, "%0000069d"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_701, "%000006a5"), 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_708, "%000006ac"), 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_713, "%000006b1"), + 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/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..6395d0f72 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,361 @@ +00000896: program +0000087a: sub __cxa_finalize(__cxa_finalize_result) +00000897: __cxa_finalize_result :: out u32 = low:32[R0] + +0000052b: +000006cf: R16 := 0x20000 +000006d7: R17 := mem[R16 + 0x18, el]:u64 +000006de: R16 := R16 + 0x18 +000006e3: call R17 with noreturn + +0000087b: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000898: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000322: +00000329: #34 := R31 - 0x20 +0000032e: mem := mem with [#34, el]:u64 <- R29 +00000333: mem := mem with [#34 + 8, el]:u64 <- R30 +00000337: R31 := #34 +0000033e: R29 := R31 +00000346: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000034c: R19 := 0x20000 +00000355: R0 := pad:32[mem[R19 + 0x70]] +00000361: #36 := ~~0:0[R0] +0000035b: when #36 goto %00000359 +0000087c: goto %000004e9 + +000004e9: +000004ed: R0 := 0x1F000 +000004f5: R0 := mem[R0 + 0xFC8, el]:u64 +00000501: #67 := R0 = 0 +000004fb: when #67 goto %000004f9 +0000087d: goto %00000519 + +00000519: +0000051d: R0 := 0x20000 +00000525: R0 := mem[R0 + 0x58, el]:u64 +0000052a: R30 := 0x8B0 +0000052d: call @__cxa_finalize with return %000004f9 + +000004f9: +00000506: R30 := 0x8B4 +00000508: call @deregister_tm_clones with return %0000050a + +0000050a: +0000050f: R0 := 1 +00000517: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] +0000087e: goto %00000359 + +00000359: +00000369: R19 := mem[R31 + 0x10, el]:u64 +00000373: R29 := mem[R31, el]:u64 +00000377: R30 := mem[R31 + 8, el]:u64 +0000037a: R31 := R31 + 0x20 +0000037f: call R30 with noreturn + +0000087f: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000899: __libc_start_main_main :: in u64 = R0 +0000089a: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000089b: __libc_start_main_arg3 :: in out u64 = R2 +0000089c: __libc_start_main_auxv :: in out u64 = R3 +0000089d: __libc_start_main_result :: out u32 = low:32[R0] + +00000266: +000006b6: R16 := 0x20000 +000006be: R17 := mem[R16 + 0x10, el]:u64 +000006c5: R16 := R16 + 0x10 +000006ca: call R17 with noreturn + +00000880: sub _fini(_fini_result) +0000089e: _fini_result :: out u32 = low:32[R0] + +00000020: +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +00000881: sub _init(_init_result) +0000089f: _init_result :: out u32 = low:32[R0] + +00000795: +0000079e: #98 := R31 - 0x10 +000007a3: mem := mem with [#98, el]:u64 <- R29 +000007a8: mem := mem with [#98 + 8, el]:u64 <- R30 +000007ac: R31 := #98 +000007b3: R29 := R31 +000007b8: R30 := 0x6E8 +000007ba: call @call_weak_fn with return %000007bc + +000007bc: +000007c4: R29 := mem[R31, el]:u64 +000007c8: R30 := mem[R31 + 8, el]:u64 +000007cb: R31 := R31 + 0x10 +000007d0: call R30 with noreturn + +00000882: sub _start(_start_result) +000008a0: _start_result :: out u32 = low:32[R0] + +0000021c: +00000222: R29 := 0 +00000228: R30 := 0 +00000230: R5 := R0 +00000238: R1 := mem[R31, el]:u64 +0000023f: R2 := R31 + 8 +00000246: R6 := R31 +0000024c: R0 := 0x1F000 +00000254: R0 := mem[R0 + 0xFD8, el]:u64 +0000025a: R3 := 0 +00000260: R4 := 0 +00000265: R30 := 0x7F0 +00000268: call @__libc_start_main with return %0000026a + +0000026a: +0000026d: R30 := 0x7F4 +00000270: call @abort with return %00000883 + +00000883: +00000884: call @call_weak_fn with noreturn + +00000885: sub abort() + + +0000026e: +00000733: R16 := 0x20000 +0000073b: R17 := mem[R16 + 0x38, el]:u64 +00000742: R16 := R16 + 0x38 +00000747: call R17 with noreturn + +00000886: sub call_weak_fn(call_weak_fn_result) +000008a1: call_weak_fn_result :: out u32 = low:32[R0] + +00000272: +00000276: R0 := 0x1F000 +0000027e: R0 := mem[R0 + 0xFD0, el]:u64 +0000028a: #12 := R0 = 0 +00000284: when #12 goto %00000282 +00000887: goto %0000057d + +00000282: +0000028f: call R30 with noreturn + +0000057d: +00000580: goto @__gmon_start__ + +0000057e: +0000071a: R16 := 0x20000 +00000722: R17 := mem[R16 + 0x30, el]:u64 +00000729: R16 := R16 + 0x30 +0000072e: call R17 with noreturn + +00000888: sub deregister_tm_clones(deregister_tm_clones_result) +000008a2: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000295: +00000299: R0 := 0x20000 +000002a0: R0 := R0 + 0x70 +000002a6: R1 := 0x20000 +000002ad: R1 := R1 + 0x70 +000002b5: #16 := 1 + ~R0 + R1 +000002b9: NF := 63:63[#16] +000002bc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002bf: ZF := #16 = 0 +000002c2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002d0: #21 := ZF +000002ca: when #21 goto %000002c8 +00000889: goto %00000556 + +00000556: +0000055a: R1 := 0x1F000 +00000562: R1 := mem[R1 + 0xFC0, el]:u64 +0000056d: #75 := R1 = 0 +00000567: when #75 goto %000002c8 +0000088a: goto %00000570 + +000002c8: +000002d5: call R30 with noreturn + +00000570: +00000576: R16 := R1 +0000057b: call R16 with noreturn + +0000088b: sub frame_dummy(frame_dummy_result) +000008a3: frame_dummy_result :: out u32 = low:32[R0] + +00000385: +00000387: call @register_tm_clones with noreturn + +0000088c: sub free(free_ptr) +000008a4: free_ptr :: in out u64 = R0 + +000004c3: +00000765: R16 := 0x20000 +0000076d: R17 := mem[R16 + 0x48, el]:u64 +00000774: R16 := R16 + 0x48 +00000779: call R17 with noreturn + +0000088d: sub main(main_argc, main_argv, main_result) +000008a5: main_argc :: in u32 = low:32[R0] +000008a6: main_argv :: in out u64 = R1 +000008a7: main_result :: out u32 = low:32[R0] + +00000389: +0000038e: R31 := R31 - 0x40 +00000396: #42 := R31 + 0x30 +0000039b: mem := mem with [#42, el]:u64 <- R29 +000003a0: mem := mem with [#42 + 8, el]:u64 <- R30 +000003a7: R29 := R31 + 0x30 +000003af: mem := mem with [R29 - 8, el]:u64 <- 0 +000003b7: mem := mem with [R29 - 0x10, el]:u64 <- 0 +000003bd: R0 := 0xB +000003c2: R30 := 0x8F0 +000003c5: call @malloc with return %000003c7 + +000003c7: +000003cb: R8 := 0x20000 +000003d3: mem := mem with [R31 + 0x18, el]:u64 <- R8 +000003db: mem := mem with [R8 + 0x78, el]:u64 <- R0 +000003e3: R8 := mem[R8 + 0x78, el]:u64 +000003eb: mem := mem with [R31 + 8, el]:u64 <- R8 +000003f1: R0 := 0x20000 +000003f8: R0 := R0 + 0x61 +00000400: mem := mem with [R31, el]:u64 <- R0 +00000405: R30 := 0x914 +00000408: call @strlen with return %0000040a + +0000040a: +00000410: R1 := mem[R31, el]:u64 +00000418: R2 := R0 +00000420: R0 := mem[R31 + 8, el]:u64 +00000425: R30 := 0x924 +00000428: call @memcpy with return %0000042a + +0000042a: +00000430: R8 := mem[R31 + 0x18, el]:u64 +00000438: R0 := mem[R8 + 0x78, el]:u64 +0000043d: R30 := 0x930 +00000440: call @puts with return %00000442 + +00000442: +00000448: R8 := mem[R31 + 0x18, el]:u64 +00000450: R9 := mem[R8 + 0x78, el]:u64 +00000457: R9 := R9 + 4 +0000045f: mem := mem with [R29 - 8, el]:u64 <- R9 +00000467: R9 := mem[R29 - 8, el]:u64 +0000046f: mem := mem with [R9] <- 0 +00000477: R9 := mem[R8 + 0x78, el]:u64 +0000047f: mem := mem with [R31 + 0x10, el]:u64 <- R9 +00000487: R0 := mem[R8 + 0x78, el]:u64 +0000048c: R30 := 0x958 +0000048e: call @strlen with return %00000490 + +00000490: +00000496: R2 := R0 +0000049e: R0 := mem[R31 + 0x10, el]:u64 +000004a5: R1 := 1 +000004aa: R30 := 0x968 +000004ad: call @memset with return %000004af + +000004af: +000004b5: R8 := mem[R31 + 0x18, el]:u64 +000004bd: R0 := mem[R8 + 0x78, el]:u64 +000004c2: R30 := 0x974 +000004c5: call @free with return %000004c7 + +000004c7: +000004ce: R0 := 0 +000004d7: R29 := mem[R31 + 0x30, el]:u64 +000004db: R30 := mem[R31 + 0x38, el]:u64 +000004e2: R31 := R31 + 0x40 +000004e7: call R30 with noreturn + +0000088e: sub malloc(malloc_size, malloc_result) +000008a8: malloc_size :: in u64 = R0 +000008a9: malloc_result :: out u64 = R0 + +000003c3: +000006e8: R16 := 0x20000 +000006f0: R17 := mem[R16 + 0x20, el]:u64 +000006f7: R16 := R16 + 0x20 +000006fc: call R17 with noreturn + +0000088f: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008aa: memcpy_dst :: in out u64 = R0 +000008ab: memcpy_src :: in out u64 = R1 +000008ac: memcpy_n :: in u64 = R2 +000008ad: memcpy_result :: out u64 = R0 + +00000426: +00000684: R16 := 0x20000 +0000068c: R17 := mem[R16, el]:u64 +00000693: R16 := R16 +00000698: call R17 with noreturn + +00000890: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008ae: memset_buf :: in out u64 = R0 +000008af: memset_c :: in u32 = low:32[R1] +000008b0: memset_n :: in u64 = R2 +000008b1: memset_result :: out u64 = R0 + +000004ab: +00000701: R16 := 0x20000 +00000709: R17 := mem[R16 + 0x28, el]:u64 +00000710: R16 := R16 + 0x28 +00000715: call R17 with noreturn + +00000891: sub puts(puts_s, puts_result) +000008b2: puts_s :: in u64 = R0 +000008b3: puts_result :: out u32 = low:32[R0] + +0000043e: +0000074c: R16 := 0x20000 +00000754: R17 := mem[R16 + 0x40, el]:u64 +0000075b: R16 := R16 + 0x40 +00000760: call R17 with noreturn + +00000892: sub register_tm_clones(register_tm_clones_result) +000008b4: register_tm_clones_result :: out u32 = low:32[R0] + +000002d7: +000002db: R0 := 0x20000 +000002e2: R0 := R0 + 0x70 +000002e8: R1 := 0x20000 +000002ef: R1 := R1 + 0x70 +000002f7: R1 := R1 - R0 +000002fe: R2 := R1 >> 0x3F +00000306: R1 := R2 + (R1 ~>> 3) +0000030d: R1 := R1 >> 1 +00000319: #30 := R1 = 0 +00000313: when #30 goto %00000311 +00000893: goto %0000052f + +0000052f: +00000533: R2 := 0x1F000 +0000053b: R2 := mem[R2 + 0xFE0, el]:u64 +00000546: #70 := R2 = 0 +00000540: when #70 goto %00000311 +00000894: goto %00000549 + +00000311: +0000031e: call R30 with noreturn + +00000549: +0000054f: R16 := R2 +00000554: call R16 with noreturn + +00000895: sub strlen(strlen_s, strlen_result) +000008b5: strlen_s :: in u64 = R0 +000008b6: strlen_result :: out u64 = R0 + +00000406: +0000069d: R16 := 0x20000 +000006a5: R17 := mem[R16 + 8, el]:u64 +000006ac: R16 := R16 + 8 +000006b1: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..8b595940b --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,144 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 99 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: 0000000000000984 0 SECTION LOCAL DEFAULT 14 .fini + 15: 0000000000000998 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 000000000000099c 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009d8 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 00000000000009ec 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 0000000000000998 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 0000000000000984 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 0000000000000990 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 0000000000000a00 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 + 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 + 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 + 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 + 59: 0000000000000a60 0 NOTYPE LOCAL DEFAULT 17 $d.4 + 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 61: 0000000000000a9c 0 NOTYPE LOCAL DEFAULT 17 $d + 62: 0000000000000a9c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 65: 000000000000099c 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata + 77: 0000000000000984 0 FUNC GLOBAL HIDDEN 14 _fini + 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 86: 0000000000000998 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end + 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf + 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext + 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 95: 00000000000008d4 176 FUNC GLOBAL DEFAULT 13 main + 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/Makefile deleted file mode 100644 index aed00c0f5..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -CC=aarch64-linux-gnu-gcc - -include ../../../make/lift.mk diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt index 9c344b119..ad96adf48 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt @@ -1,12 +1,12 @@ 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 2460 20 2460)\n(code-region 1984 476 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 200)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2460 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2460 20)\n(llvm:code-entry .text 1984 476)\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 2484 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2720)\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 2484 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2720)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2544 176 2544)\n(llvm:section-entry .eh_frame_hdr 2484 60 2484)\n(llvm:section-entry .rodata 2480 4 2480)\n(llvm:section-entry .fini 2460 20 2460)\n(llvm:section-entry .text 1984 476 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 200 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2460 0 2460 2460)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2720 0)\n(mapped 130504 683 64968)\n(named-region 0 2720 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 476 .text)\n(named-region 2460 20 .fini)\n(named-region 2480 4 .rodata)\n(named-region 2484 60 .eh_frame_hdr)\n(named-region 2544 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2460 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 476)\n(section 2460 20)\n(section 2480 4)\n(section 2484 60)\n(section 2544 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2720 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 200 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2460 2460)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("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 1984 484 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 208)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 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 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2468 20)\n(llvm:code-entry .text 1984 484)\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 2492 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2728)\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 2492 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2728)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2552 176 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 1984 484 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 208 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 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 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2728 0)\n(mapped 130504 683 64968)\n(named-region 0 2728 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 484 .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 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 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 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 484)\n(section 2468 20)\n(section 2488 4)\n(section 2492 60)\n(section 2552 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2728 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 208 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2468 2468)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), -Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed"), 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"), @@ -17,18 +17,18 @@ Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x0 Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x99C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9B0, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9B4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x0c\xfe\xff\xff\x50\x00\x00\x00\x5c\xfe\xff\xff\x64\x00\x00\x00\x8c\xfe\xff\xff\x78\x00\x00\x00\xcc\xfe\xff\xff\x8c\x00\x00\x00\x1c\xff\xff\xff\xb0\x00\x00\x00\x20\xff\xff\xff\xc4\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\xb4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xf0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x0c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x38\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\x64\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x54\xfe\xff\xff\xc8\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x6e\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), +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\x04\xfe\xff\xff\x50\x00\x00\x00\x54\xfe\xff\xff\x64\x00\x00\x00\x84\xfe\xff\xff\x78\x00\x00\x00\xc4\xfe\xff\xff\x8c\x00\x00\x00\x14\xff\xff\xff\xb0\x00\x00\x00\x18\xff\xff\xff\xc4\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\xac\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xe8\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x04\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x30\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\x5c\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x4c\xfe\xff\xff\xd0\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x70\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x9c\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(".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\xa4\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), -Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6e\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x86\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xA9F), Attr("segment","02 0 2720")), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\xe0\x17\x40\xf9\x1f\x00\x00\x39\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6c\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x78\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x84\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xAA7), Attr("segment","02 0 2728")), Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), Annotation(Region(0x0,0x2B2), Attr("section","\".strtab\"")), @@ -51,12 +51,12 @@ Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x99B), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x99B), Attr("symbol-info","main 0x8D4 200")), -Annotation(Region(0x99C,0x9AF), Attr("section","\".fini\"")), -Annotation(Region(0x9B0,0x9B3), Attr("section","\".rodata\"")), -Annotation(Region(0x9B4,0x9EF), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x9F0,0xA9F), Attr("section","\".eh_frame\"")), +Annotation(Region(0x8D4,0x9A3), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x9A3), Attr("symbol-info","main 0x8D4 208")), +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,0xAA7), Attr("section","\".eh_frame\"")), Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), @@ -64,711 +64,734 @@ Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), -Annotation(Region(0x7C0,0x99B), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x99B), Attr("code-region","()")), -Annotation(Region(0x99C,0x9AF), Attr("code-region","()"))]), -Program(Tid(2_104, "%00000838"), Attrs([]), - Subs([Sub(Tid(2_076, "@__cxa_finalize"), +Annotation(Region(0x7C0,0x9A3), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x9A3), Attr("code-region","()")), +Annotation(Region(0x9A4,0x9B7), Attr("code-region","()"))]), +Program(Tid(2_289, "%000008f1"), Attrs([]), + Subs([Sub(Tid(2_261, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_105, "%00000839"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_290, "%000008f2"), 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_278, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_406, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x740"), +Defs([Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x740"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), Attrs([Attr("address","0x744"), +Def(Tid(1_834, "%0000072a"), 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_679, "%0000068f"), Attrs([Attr("address","0x748"), +Def(Tid(1_841, "%00000731"), 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_684, "%00000694"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_846, "%00000736"), Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_077, "@__do_global_dtors_aux"), +Sub(Tid(2_262, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_106, "%0000083a"), + "__do_global_dtors_aux", Args([Arg(Tid(2_291, "%000008f3"), 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(791, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(795, "%0000031b"), +Blks([Blk(Tid(834, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(841, "%00000349"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(801, "%00000321"), Attrs([Attr("address","0x880"), +Def(Tid(846, "%0000034e"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(807, "%00000327"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(851, "%00000353"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(855, "%00000357"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(817, "%00000331"), +Var("#34",Imm(64))), Def(Tid(862, "%0000035e"), Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(825, "%00000339"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(870, "%00000366"), Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(830, "%0000033e"), Attrs([Attr("address","0x88C"), +Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x88C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(837, "%00000345"), Attrs([Attr("address","0x890"), +Def(Tid(885, "%00000375"), Attrs([Attr("address","0x890"), Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), -Jmps([Goto(Tid(843, "%0000034b"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(841, "%00000349"))), -Goto(Tid(2_078, "%0000081e"), Attrs([]), Int(1,1), -Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), +Def(Tid(897, "%00000381"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(891, "%0000037b"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(889, "%00000379"))), Goto(Tid(2_263, "%000008d7"), Attrs([]), + Int(1,1), Direct(Tid(1_340, "%0000053c")))])), Blk(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x898"), +Defs([Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x898"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x89C"), +Def(Tid(1_352, "%00000548"), Attrs([Attr("address","0x89C"), Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_237, "%000004d5"))), Goto(Tid(2_079, "%0000081f"), Attrs([]), - Int(1,1), Direct(Tid(1_262, "%000004ee")))])), Blk(Tid(1_262, "%000004ee"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), Var("#69",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_358, "%0000054e"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Var("#69",Imm(1)), Direct(Tid(1_356, "%0000054c"))), +Goto(Tid(2_264, "%000008d8"), Attrs([]), Int(1,1), +Direct(Tid(1_388, "%0000056c")))])), Blk(Tid(1_388, "%0000056c"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_392, "%00000570"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_400, "%00000578"), Attrs([Attr("address","0x8A8"), Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_405, "%0000057d"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_280, "%00000500"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(1_408, "%00000580"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_076, "@__cxa_finalize")),Direct(Tid(1_237, "%000004d5"))))])), -Blk(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8B0"), +(Direct(Tid(2_261, "@__cxa_finalize")),Direct(Tid(1_356, "%0000054c"))))])), +Blk(Tid(1_356, "%0000054c"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_369, "%00000559"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_247, "%000004df"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_090, "@deregister_tm_clones")),Direct(Tid(1_249, "%000004e1"))))])), -Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_252, "%000004e4"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_275, "@deregister_tm_clones")),Direct(Tid(1_373, "%0000055d"))))])), +Blk(Tid(1_373, "%0000055d"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_378, "%00000562"), Attrs([Attr("address","0x8B4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_260, "%000004ec"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_386, "%0000056a"), Attrs([Attr("address","0x8B8"), Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), -Jmps([Goto(Tid(2_080, "%00000820"), Attrs([]), Int(1,1), -Direct(Tid(841, "%00000349")))])), Blk(Tid(841, "%00000349"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(851, "%00000353"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_265, "%000008d9"), Attrs([]), Int(1,1), +Direct(Tid(889, "%00000379")))])), Blk(Tid(889, "%00000379"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(905, "%00000389"), Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(858, "%0000035a"), Attrs([Attr("address","0x8C0"), +Def(Tid(915, "%00000393"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(863, "%0000035f"), Attrs([Attr("address","0x8C0"), +Def(Tid(919, "%00000397"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(867, "%00000363"), Attrs([Attr("address","0x8C0"), +Def(Tid(922, "%0000039a"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(872, "%00000368"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(927, "%0000039f"), Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_081, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_266, "@__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_107, "%0000083b"), + Args([Arg(Tid(2_292, "%000008f4"), 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_108, "%0000083c"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_293, "%000008f5"), 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_109, "%0000083d"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_294, "%000008f6"), 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_110, "%0000083e"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_295, "%000008f7"), 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_111, "%0000083f"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_296, "%000008f8"), 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(624, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(646, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x730"), +Defs([Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x730"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), Attrs([Attr("address","0x734"), +Def(Tid(1_809, "%00000711"), 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_657, "%00000679"), Attrs([Attr("address","0x738"), +Def(Tid(1_816, "%00000718"), 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_662, "%0000067e"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_821, "%0000071d"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_082, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x99C")]), - "_fini", Args([Arg(Tid(2_112, "%00000840"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_267, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A4")]), + "_fini", Args([Arg(Tid(2_297, "%000008f9"), 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","0x99C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0x9A0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), + Attrs([Attr("address","0x9A4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9A8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x9A0"), +Def(Tid(46, "%0000002e"), 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(50, "%00000032"), Attrs([Attr("address","0x9A0"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), 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(54, "%00000036"), Attrs([Attr("address","0x9A0"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(55, "%00000037"), Attrs([Attr("address","0x9A8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9A4"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9AC"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9A8"), +Def(Tid(72, "%00000048"), 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(72, "%00000048"), Attrs([Attr("address","0x9A8"), +Def(Tid(76, "%0000004c"), 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(76, "%0000004c"), Attrs([Attr("address","0x9A8"), +Def(Tid(79, "%0000004f"), 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(81, "%00000051"), - Attrs([Attr("address","0x9AC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_083, "@_init"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0x9B4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_268, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_113, "%00000841"), + "_init", Args([Arg(Tid(2_298, "%000008fa"), 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_844, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(2_024, "@_init"), Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_850, "%0000073a"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), +Defs([Def(Tid(2_033, "%000007f1"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#100",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_856, "%00000740"), Attrs([Attr("address","0x6DC"), +Def(Tid(2_038, "%000007f6"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_862, "%00000746"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),Var("#100",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(2_043, "%000007fb"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_866, "%0000074a"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#100",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#6",Imm(64))), Def(Tid(1_872, "%00000750"), +Var("#100",Imm(64))), Def(Tid(2_054, "%00000806"), Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_877, "%00000755"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_059, "%0000080b"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_879, "%00000757"), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(2_061, "%0000080d"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_088, "@call_weak_fn")),Direct(Tid(1_881, "%00000759"))))])), -Blk(Tid(1_881, "%00000759"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_886, "%0000075e"), Attrs([Attr("address","0x6E8"), +(Direct(Tid(2_273, "@call_weak_fn")),Direct(Tid(2_063, "%0000080f"))))])), +Blk(Tid(2_063, "%0000080f"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(2_071, "%00000817"), 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_891, "%00000763"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_075, "%0000081b"), 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_895, "%00000767"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_078, "%0000081e"), 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_900, "%0000076c"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_083, "%00000823"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_084, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_269, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_114, "%00000842"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_299, "%000008fb"), 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(561, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(566, "%00000236"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(572, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(578, "%00000242"), Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(571, "%0000023b"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(577, "%00000241"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(592, "%00000250"), Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(584, "%00000248"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(600, "%00000258"), Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(590, "%0000024e"), Attrs([Attr("address","0x7D4"), +Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x7D4"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(596, "%00000254"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(614, "%00000266"), Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(601, "%00000259"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(620, "%0000026c"), Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(608, "%00000260"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(628, "%00000274"), Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(613, "%00000265"), Attrs([Attr("address","0x7E4"), +Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x7E4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(618, "%0000026a"), Attrs([Attr("address","0x7E8"), +Def(Tid(640, "%00000280"), Attrs([Attr("address","0x7E8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(623, "%0000026f"), Attrs([Attr("address","0x7EC"), +Def(Tid(645, "%00000285"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x7EC"), +Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_081, "@__libc_start_main")),Direct(Tid(628, "%00000274"))))])), -Blk(Tid(628, "%00000274"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7F0"), +(Direct(Tid(2_266, "@__libc_start_main")),Direct(Tid(650, "%0000028a"))))])), +Blk(Tid(650, "%0000028a"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(656, "%00000290"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_087, "@abort")),Direct(Tid(2_085, "%00000825"))))])), -Blk(Tid(2_085, "%00000825"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_086, "%00000826"), Attrs([]), Int(1,1), -(Direct(Tid(2_088, "@call_weak_fn")),))]))])), Sub(Tid(2_087, "@abort"), +(Direct(Tid(2_272, "@abort")),Direct(Tid(2_270, "%000008de"))))])), +Blk(Tid(2_270, "%000008de"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_271, "%000008df"), Attrs([]), Int(1,1), +(Direct(Tid(2_273, "@call_weak_fn")),))]))])), Sub(Tid(2_272, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(632, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x780"), +Blks([Blk(Tid(654, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_761, "%000006e1"), Attrs([Attr("address","0x784"), +Def(Tid(1_934, "%0000078e"), 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_767, "%000006e7"), Attrs([Attr("address","0x788"), +Def(Tid(1_941, "%00000795"), 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_772, "%000006ec"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_946, "%0000079a"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_088, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_273, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_115, "%00000843"), + "call_weak_fn", Args([Arg(Tid(2_300, "%000008fc"), 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(636, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(639, "%0000027f"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(658, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(662, "%00000296"), Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(646, "%00000286"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(652, "%0000028c"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(650, "%0000028a"))), Goto(Tid(2_089, "%00000829"), Attrs([]), - Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(650, "%0000028a"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(682, "%000002aa"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(676, "%000002a4"), + Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(674, "%000002a2"))), +Goto(Tid(2_274, "%000008e2"), Attrs([]), Int(1,1), +Direct(Tid(1_488, "%000005d0")))])), Blk(Tid(674, "%000002a2"), Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(658, "%00000292"), Attrs([Attr("address","0x804"), +Jmps([Call(Tid(687, "%000002af"), Attrs([Attr("address","0x804"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_342, "%0000053e"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_345, "%00000541"), Attrs([Attr("address","0x800"), +Blk(Tid(1_488, "%000005d0"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_491, "%000005d3"), Attrs([Attr("address","0x800"), Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_343, "@__gmon_start__")))])), Blk(Tid(1_343, "@__gmon_start__"), +Direct(Tid(1_489, "@__gmon_start__")))])), Blk(Tid(1_489, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), Attrs([Attr("address","0x774"), +Def(Tid(1_909, "%00000775"), 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_745, "%000006d1"), Attrs([Attr("address","0x778"), +Def(Tid(1_916, "%0000077c"), 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_750, "%000006d6"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_921, "%00000781"), Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_090, "@deregister_tm_clones"), +Sub(Tid(2_275, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_116, "%00000844"), + "deregister_tm_clones", Args([Arg(Tid(2_301, "%000008fd"), 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(664, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(667, "%0000029b"), +Blks([Blk(Tid(693, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(673, "%000002a1"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(704, "%000002c0"), Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x818"), +Def(Tid(710, "%000002c6"), Attrs([Attr("address","0x818"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(684, "%000002ac"), Attrs([Attr("address","0x81C"), +Def(Tid(717, "%000002cd"), Attrs([Attr("address","0x81C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(690, "%000002b2"), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(725, "%000002d5"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(695, "%000002b7"), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(729, "%000002d9"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), -NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), -NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x820"), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(735, "%000002df"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(715, "%000002cb"), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(721, "%000002d1"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(719, "%000002cf"))), Goto(Tid(2_091, "%0000082b"), Attrs([]), - Int(1,1), Direct(Tid(1_312, "%00000520")))])), Blk(Tid(1_312, "%00000520"), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(752, "%000002f0"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(746, "%000002ea"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(744, "%000002e8"))), Goto(Tid(2_276, "%000008e4"), Attrs([]), + Int(1,1), Direct(Tid(1_449, "%000005a9")))])), Blk(Tid(1_449, "%000005a9"), Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_315, "%00000523"), Attrs([Attr("address","0x828"), +Defs([Def(Tid(1_453, "%000005ad"), Attrs([Attr("address","0x828"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_322, "%0000052a"), Attrs([Attr("address","0x82C"), +Def(Tid(1_461, "%000005b5"), Attrs([Attr("address","0x82C"), Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(719, "%000002cf"))), Goto(Tid(2_092, "%0000082c"), Attrs([]), - Int(1,1), Direct(Tid(1_331, "%00000533")))])), Blk(Tid(719, "%000002cf"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(1_472, "%000005c0"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), Var("#77",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_466, "%000005ba"), + Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Var("#77",Imm(1)), Direct(Tid(744, "%000002e8"))), +Goto(Tid(2_277, "%000008e5"), Attrs([]), Int(1,1), +Direct(Tid(1_475, "%000005c3")))])), Blk(Tid(744, "%000002e8"), Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(727, "%000002d7"), Attrs([Attr("address","0x83C"), +Jmps([Call(Tid(757, "%000002f5"), Attrs([Attr("address","0x83C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_331, "%00000533"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x834"), +Blk(Tid(1_475, "%000005c3"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_481, "%000005c9"), Attrs([Attr("address","0x834"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_486, "%000005ce"), Attrs([Attr("address","0x838"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_093, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_117, "%00000845"), +Sub(Tid(2_278, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_302, "%000008fe"), 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(878, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(933, "@frame_dummy"), Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(880, "%00000370"), Attrs([Attr("address","0x8D0"), +Jmps([Call(Tid(935, "%000003a7"), Attrs([Attr("address","0x8D0"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_100, "@register_tm_clones")),))]))])), Sub(Tid(2_094, "@free"), +(Direct(Tid(2_285, "@register_tm_clones")),))]))])), Sub(Tid(2_279, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_118, "%00000846"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_303, "%000008ff"), 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_186, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_299, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_976, "%000007b8"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_805, "%0000070d"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_984, "%000007c0"), 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_811, "%00000713"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_991, "%000007c7"), 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_816, "%00000718"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_996, "%000007cc"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_095, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_280, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_119, "%00000847"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_304, "%00000900"), 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_120, "%00000848"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_305, "%00000901"), 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_121, "%00000849"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_306, "%00000902"), 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(882, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(886, "%00000376"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(937, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(944, "%000003b0"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x8D4"), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(898, "%00000382"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(958, "%000003be"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#4",Imm(64))), Def(Tid(908, "%0000038c"), +Var("#42",Imm(64))), Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(916, "%00000394"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x8E0"), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x8E0"), Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x8E4"), +Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x8E4"), Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x8E8"), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x8E8"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(940, "%000003ac"), Attrs([Attr("address","0x8EC"), +Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(943, "%000003af"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_096, "@malloc")),Direct(Tid(945, "%000003b1"))))])), -Blk(Tid(945, "%000003b1"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8F0"), +(Direct(Tid(2_281, "@malloc")),Direct(Tid(1_005, "%000003ed"))))])), +Blk(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x8F0"), Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8F4"), +Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x8F4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x8F8"), +Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x8F8"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(968, "%000003c8"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x900"), +Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x900"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x904"), +Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x904"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(986, "%000003da"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(991, "%000003df"), Attrs([Attr("address","0x90C"), +Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x90C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x910"), +Def(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x910"), Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_002, "%000003ea"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_071, "%0000042f"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), - Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_005, "%000003ed"), + Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_074, "%00000432"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_007, "%000003ef"))))])), -Blk(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x918"), +(Direct(Tid(2_288, "@strlen")),Direct(Tid(1_076, "%00000434"))))])), +Blk(Tid(1_076, "%00000434"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_082, "%0000043a"), Attrs([Attr("address","0x918"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x91C"), +Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x91C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x920"), +Def(Tid(1_095, "%00000447"), Attrs([Attr("address","0x920"), Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_028, "%00000404"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_033, "%00000409"), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_036, "%0000040c"), + Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_111, "%00000457"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_097, "@memcpy")),Direct(Tid(1_038, "%0000040e"))))])), -Blk(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x92C"), +(Direct(Tid(2_282, "@memcpy")),Direct(Tid(1_113, "%00000459"))))])), +Blk(Tid(1_113, "%00000459"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x92C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x930"), +Def(Tid(1_124, "%00000464"), Attrs([Attr("address","0x930"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_054, "%0000041e"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x938"), +Def(Tid(1_137, "%00000471"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_062, "%00000426"), Attrs([Attr("address","0x938"), +Jmps([Call(Tid(1_140, "%00000474"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_099, "@puts")),Direct(Tid(1_064, "%00000428"))))])), -Blk(Tid(1_064, "%00000428"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x93C"), +(Direct(Tid(2_284, "@puts")),Direct(Tid(1_142, "%00000476"))))])), +Blk(Tid(1_142, "%00000476"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_146, "%0000047a"), Attrs([Attr("address","0x93C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x940"), +Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x940"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_080, "%00000438"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_161, "%00000489"), Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x948"), +Def(Tid(1_168, "%00000490"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_094, "%00000446"), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_176, "%00000498"), Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x950"), +Def(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x950"), +Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), +Def(Tid(1_192, "%000004a8"), Attrs([Attr("address","0x954"), +Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),BigEndian(),8)), +Def(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x958"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_105, "%00000451"), Attrs([Attr("address","0x954"), +Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x95C"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_112, "%00000458"), - Attrs([Attr("address","0x958"), Attr("insn","ldr x19, [x0]")]), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_213, "%000004bd"), + Attrs([Attr("address","0x960"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x95C"), +Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x964"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x960"), +Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x968"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_130, "%0000046a"), - Attrs([Attr("address","0x964"), Attr("insn","ldr x0, [x0]")]), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_234, "%000004d2"), + Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x248")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_137, "%00000471"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x248")]), Int(1,1), -(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_139, "%00000473"))))])), -Blk(Tid(1_139, "%00000473"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x96C"), +Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x250")]), Var("R30",Imm(64)), Int(2420,64))]), +Jmps([Call(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x250")]), Int(1,1), +(Direct(Tid(2_288, "@strlen")),Direct(Tid(1_243, "%000004db"))))])), +Blk(Tid(1_243, "%000004db"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x974"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x970"), +Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x978"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_154, "%00000482"), Attrs([Attr("address","0x974"), +Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x97C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(1_162, "%0000048a"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_098, "@memset")),Direct(Tid(1_164, "%0000048c"))))])), -Blk(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x97C"), +Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x220")]), Var("R30",Imm(64)), Int(2436,64))]), +Jmps([Call(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x220")]), Int(1,1), +(Direct(Tid(2_283, "@memset")),Direct(Tid(1_274, "%000004fa"))))])), +Blk(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x984")]), Phis([]), +Defs([Def(Tid(1_278, "%000004fe"), Attrs([Attr("address","0x984"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x980"), +Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x988"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_180, "%0000049c"), - Attrs([Attr("address","0x984"), Attr("insn","ldr x0, [x0]")]), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_293, "%0000050d"), + Attrs([Attr("address","0x98C"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_185, "%000004a1"), Attrs([Attr("address","0x988"), -Attr("insn","bl #-0x1e8")]), Var("R30",Imm(64)), Int(2444,64))]), -Jmps([Call(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x988"), -Attr("insn","bl #-0x1e8")]), Int(1,1), -(Direct(Tid(2_094, "@free")),Direct(Tid(1_190, "%000004a6"))))])), -Blk(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x98C")]), Phis([]), -Defs([Def(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x98C"), +Def(Tid(1_298, "%00000512"), Attrs([Attr("address","0x990"), +Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2452,64))]), +Jmps([Call(Tid(1_301, "%00000515"), Attrs([Attr("address","0x990"), +Attr("insn","bl #-0x1f0")]), Int(1,1), +(Direct(Tid(2_279, "@free")),Direct(Tid(1_303, "%00000517"))))])), +Blk(Tid(1_303, "%00000517"), Attrs([Attr("address","0x994")]), Phis([]), +Defs([Def(Tid(1_308, "%0000051c"), Attrs([Attr("address","0x994"), Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x990"), +Def(Tid(1_316, "%00000524"), Attrs([Attr("address","0x998"), 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_207, "%000004b7"), Attrs([Attr("address","0x994"), +Def(Tid(1_326, "%0000052e"), 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_212, "%000004bc"), Attrs([Attr("address","0x994"), +Def(Tid(1_330, "%00000532"), 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_216, "%000004c0"), Attrs([Attr("address","0x994"), +Def(Tid(1_333, "%00000535"), 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_221, "%000004c5"), - Attrs([Attr("address","0x998"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_096, "@malloc"), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_338, "%0000053a"), + Attrs([Attr("address","0x9A0"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_281, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_122, "%0000084a"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_307, "%00000903"), 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_123, "%0000084b"), +Var("R0",Imm(64)), In()), Arg(Tid(2_308, "%00000904"), 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(941, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(1_001, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x750"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), Attrs([Attr("address","0x754"), +Def(Tid(1_859, "%00000743"), 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_701, "%000006a5"), Attrs([Attr("address","0x758"), +Def(Tid(1_866, "%0000074a"), 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_706, "%000006aa"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_871, "%0000074f"), Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_097, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_282, "@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_124, "%0000084c"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_309, "%00000905"), 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_125, "%0000084d"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_310, "%00000906"), 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_126, "%0000084e"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_311, "%00000907"), 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_127, "%0000084f"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_312, "%00000908"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_034, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_109, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x710"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_607, "%00000647"), Attrs([Attr("address","0x714"), +Def(Tid(1_759, "%000006df"), 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_613, "%0000064d"), Attrs([Attr("address","0x718"), +Def(Tid(1_766, "%000006e6"), Attrs([Attr("address","0x718"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_618, "%00000652"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_771, "%000006eb"), Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_098, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_283, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_128, "%00000850"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_313, "%00000909"), 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_129, "%00000851"), +Both()), Arg(Tid(2_314, "%0000090a"), 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_130, "%00000852"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_315, "%0000090b"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("memset_n",Imm(64)), Var("R2",Imm(64)), -In()), Arg(Tid(2_131, "%00000853"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_316, "%0000090c"), 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_160, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_270, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), Attrs([Attr("address","0x764"), +Def(Tid(1_884, "%0000075c"), 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_723, "%000006bb"), Attrs([Attr("address","0x768"), +Def(Tid(1_891, "%00000763"), 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_728, "%000006c0"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_896, "%00000768"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_099, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_284, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_132, "%00000854"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_317, "%0000090d"), 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_133, "%00000855"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_318, "%0000090e"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_060, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_138, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_951, "%0000079f"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_783, "%000006f7"), Attrs([Attr("address","0x794"), +Def(Tid(1_959, "%000007a7"), 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_789, "%000006fd"), Attrs([Attr("address","0x798"), +Def(Tid(1_966, "%000007ae"), 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_794, "%00000702"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_971, "%000007b3"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_100, "@register_tm_clones"), +Sub(Tid(2_285, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_134, "%00000856"), + "register_tm_clones", Args([Arg(Tid(2_319, "%0000090f"), 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(729, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(759, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(763, "%000002fb"), Attrs([Attr("address","0x840"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x844"), +Def(Tid(770, "%00000302"), Attrs([Attr("address","0x844"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(743, "%000002e7"), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(776, "%00000308"), Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(749, "%000002ed"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(756, "%000002f4"), Attrs([Attr("address","0x850"), +Def(Tid(791, "%00000317"), Attrs([Attr("address","0x850"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x854"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(769, "%00000301"), Attrs([Attr("address","0x858"), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(798, "%0000031e"), + Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(806, "%00000326"), Attrs([Attr("address","0x858"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(775, "%00000307"), Attrs([Attr("address","0x85C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x85C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(781, "%0000030d"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(779, "%0000030b"))), Goto(Tid(2_101, "%00000835"), Attrs([]), - Int(1,1), Direct(Tid(1_282, "%00000502")))])), Blk(Tid(1_282, "%00000502"), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(825, "%00000339"), + Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(819, "%00000333"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(817, "%00000331"))), Goto(Tid(2_286, "%000008ee"), Attrs([]), + Int(1,1), Direct(Tid(1_410, "%00000582")))])), Blk(Tid(1_410, "%00000582"), Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x864"), +Defs([Def(Tid(1_414, "%00000586"), Attrs([Attr("address","0x864"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x868"), +Def(Tid(1_422, "%0000058e"), Attrs([Attr("address","0x868"), Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_297, "%00000511"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(779, "%0000030b"))), Goto(Tid(2_102, "%00000836"), Attrs([]), - Int(1,1), Direct(Tid(1_301, "%00000515")))])), Blk(Tid(779, "%0000030b"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), +Def(Tid(1_433, "%00000599"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), Var("#72",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_427, "%00000593"), + Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Var("#72",Imm(1)), Direct(Tid(817, "%00000331"))), +Goto(Tid(2_287, "%000008ef"), Attrs([]), Int(1,1), +Direct(Tid(1_436, "%0000059c")))])), Blk(Tid(817, "%00000331"), Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(787, "%00000313"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(830, "%0000033e"), Attrs([Attr("address","0x878"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_301, "%00000515"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_305, "%00000519"), Attrs([Attr("address","0x870"), +Blk(Tid(1_436, "%0000059c"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_442, "%000005a2"), Attrs([Attr("address","0x870"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_447, "%000005a7"), Attrs([Attr("address","0x874"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_103, "@strlen"), +Sub(Tid(2_288, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_135, "%00000857"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_320, "%00000910"), 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_136, "%00000858"), +In()), Arg(Tid(2_321, "%00000911"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_003, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_072, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x720"), +Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x720"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), Attrs([Attr("address","0x724"), +Def(Tid(1_784, "%000006f8"), 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_635, "%00000663"), Attrs([Attr("address","0x728"), +Def(Tid(1_791, "%000006ff"), 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_640, "%00000668"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_796, "%00000704"), 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/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir index 8afe8544a..0b1a79af7 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir @@ -1,361 +1,371 @@ -00000838: program -0000081c: sub __cxa_finalize(__cxa_finalize_result) -00000839: __cxa_finalize_result :: out u32 = low:32[R0] - -000004fe: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x18, el]:u64 -0000068f: R16 := R16 + 0x18 -00000694: call R17 with noreturn - -0000081d: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000083a: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000317: -0000031b: #3 := R31 - 0x20 -00000321: mem := mem with [#3, el]:u64 <- R29 -00000327: mem := mem with [#3 + 8, el]:u64 <- R30 -0000032b: R31 := #3 -00000331: R29 := R31 -00000339: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000033e: R19 := 0x20000 -00000345: R0 := pad:64[mem[R19 + 0x78]] -0000034b: when 0:0[R0] goto %00000349 -0000081e: goto %000004c7 - -000004c7: -000004ca: R0 := 0x1F000 -000004d1: R0 := mem[R0 + 0xFC8, el]:u64 -000004d7: when R0 = 0 goto %000004d5 -0000081f: goto %000004ee - -000004ee: -000004f1: R0 := 0x20000 -000004f8: R0 := mem[R0 + 0x58, el]:u64 -000004fd: R30 := 0x8B0 -00000500: call @__cxa_finalize with return %000004d5 - -000004d5: -000004dd: R30 := 0x8B4 -000004df: call @deregister_tm_clones with return %000004e1 - -000004e1: -000004e4: R0 := 1 -000004ec: mem := mem with [R19 + 0x78] <- 7:0[R0] -00000820: goto %00000349 - -00000349: -00000353: R19 := mem[R31 + 0x10, el]:u64 -0000035a: R29 := mem[R31, el]:u64 -0000035f: R30 := mem[R31 + 8, el]:u64 -00000363: R31 := R31 + 0x20 -00000368: call R30 with noreturn - -00000821: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -0000083b: __libc_start_main_main :: in u64 = R0 -0000083c: __libc_start_main_arg2 :: in u32 = low:32[R1] -0000083d: __libc_start_main_arg3 :: in out u64 = R2 -0000083e: __libc_start_main_auxv :: in out u64 = R3 -0000083f: __libc_start_main_result :: out u32 = low:32[R0] - -00000270: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 0x10, el]:u64 -00000679: R16 := R16 + 0x10 -0000067e: call R17 with noreturn - -00000822: sub _fini(_fini_result) -00000840: _fini_result :: out u32 = low:32[R0] +000008f1: program +000008d5: sub __cxa_finalize(__cxa_finalize_result) +000008f2: __cxa_finalize_result :: out u32 = low:32[R0] + +0000057e: +00000722: R16 := 0x20000 +0000072a: R17 := mem[R16 + 0x18, el]:u64 +00000731: R16 := R16 + 0x18 +00000736: call R17 with noreturn + +000008d6: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008f3: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000342: +00000349: #34 := R31 - 0x20 +0000034e: mem := mem with [#34, el]:u64 <- R29 +00000353: mem := mem with [#34 + 8, el]:u64 <- R30 +00000357: R31 := #34 +0000035e: R29 := R31 +00000366: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000036c: R19 := 0x20000 +00000375: R0 := pad:32[mem[R19 + 0x78]] +00000381: #36 := ~~0:0[R0] +0000037b: when #36 goto %00000379 +000008d7: goto %0000053c + +0000053c: +00000540: R0 := 0x1F000 +00000548: R0 := mem[R0 + 0xFC8, el]:u64 +00000554: #69 := R0 = 0 +0000054e: when #69 goto %0000054c +000008d8: goto %0000056c + +0000056c: +00000570: R0 := 0x20000 +00000578: R0 := mem[R0 + 0x58, el]:u64 +0000057d: R30 := 0x8B0 +00000580: call @__cxa_finalize with return %0000054c + +0000054c: +00000559: R30 := 0x8B4 +0000055b: call @deregister_tm_clones with return %0000055d + +0000055d: +00000562: R0 := 1 +0000056a: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] +000008d9: goto %00000379 + +00000379: +00000389: R19 := mem[R31 + 0x10, el]:u64 +00000393: R29 := mem[R31, el]:u64 +00000397: R30 := mem[R31 + 8, el]:u64 +0000039a: R31 := R31 + 0x20 +0000039f: call R30 with noreturn + +000008da: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008f4: __libc_start_main_main :: in u64 = R0 +000008f5: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008f6: __libc_start_main_arg3 :: in out u64 = R2 +000008f7: __libc_start_main_auxv :: in out u64 = R3 +000008f8: __libc_start_main_result :: out u32 = low:32[R0] + +00000286: +00000709: R16 := 0x20000 +00000711: R17 := mem[R16 + 0x10, el]:u64 +00000718: R16 := R16 + 0x10 +0000071d: call R17 with noreturn + +000008db: sub _fini(_fini_result) +000008f9: _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 - -00000823: sub _init(_init_result) -00000841: _init_result :: out u32 = low:32[R0] - -00000734: -0000073a: #6 := R31 - 0x10 -00000740: mem := mem with [#6, el]:u64 <- R29 -00000746: mem := mem with [#6 + 8, el]:u64 <- R30 -0000074a: R31 := #6 -00000750: R29 := R31 -00000755: R30 := 0x6E8 -00000757: call @call_weak_fn with return %00000759 - -00000759: -0000075e: R29 := mem[R31, el]:u64 -00000763: R30 := mem[R31 + 8, el]:u64 -00000767: R31 := R31 + 0x10 -0000076c: call R30 with noreturn - -00000824: sub _start(_start_result) -00000842: _start_result :: out u32 = low:32[R0] - -00000231: -00000236: R29 := 0 -0000023b: R30 := 0 -00000241: R5 := R0 -00000248: R1 := mem[R31, el]:u64 -0000024e: R2 := R31 + 8 -00000254: R6 := R31 -00000259: R0 := 0x1F000 -00000260: R0 := mem[R0 + 0xFD8, el]:u64 -00000265: R3 := 0 -0000026a: R4 := 0 -0000026f: R30 := 0x7F0 -00000272: call @__libc_start_main with return %00000274 - -00000274: -00000277: R30 := 0x7F4 -0000027a: call @abort with return %00000825 - -00000825: -00000826: call @call_weak_fn with noreturn - -00000827: sub abort() - - -00000278: -000006da: R16 := 0x20000 -000006e1: R17 := mem[R16 + 0x38, el]:u64 -000006e7: R16 := R16 + 0x38 -000006ec: call R17 with noreturn - -00000828: sub call_weak_fn(call_weak_fn_result) -00000843: call_weak_fn_result :: out u32 = low:32[R0] - -0000027c: -0000027f: R0 := 0x1F000 -00000286: R0 := mem[R0 + 0xFD0, el]:u64 -0000028c: when R0 = 0 goto %0000028a -00000829: goto %0000053e +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +000008dc: sub _init(_init_result) +000008fa: _init_result :: out u32 = low:32[R0] + +000007e8: +000007f1: #100 := R31 - 0x10 +000007f6: mem := mem with [#100, el]:u64 <- R29 +000007fb: mem := mem with [#100 + 8, el]:u64 <- R30 +000007ff: R31 := #100 +00000806: R29 := R31 +0000080b: R30 := 0x6E8 +0000080d: call @call_weak_fn with return %0000080f + +0000080f: +00000817: R29 := mem[R31, el]:u64 +0000081b: R30 := mem[R31 + 8, el]:u64 +0000081e: R31 := R31 + 0x10 +00000823: call R30 with noreturn + +000008dd: sub _start(_start_result) +000008fb: _start_result :: out u32 = low:32[R0] + +0000023c: +00000242: R29 := 0 +00000248: R30 := 0 +00000250: R5 := R0 +00000258: R1 := mem[R31, el]:u64 +0000025f: R2 := R31 + 8 +00000266: R6 := R31 +0000026c: R0 := 0x1F000 +00000274: R0 := mem[R0 + 0xFD8, el]:u64 +0000027a: R3 := 0 +00000280: R4 := 0 +00000285: R30 := 0x7F0 +00000288: call @__libc_start_main with return %0000028a 0000028a: -00000292: call R30 with noreturn - -0000053e: -00000541: goto @__gmon_start__ - -0000053f: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x30, el]:u64 -000006d1: R16 := R16 + 0x30 -000006d6: call R17 with noreturn - -0000082a: sub deregister_tm_clones(deregister_tm_clones_result) -00000844: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000298: -0000029b: R0 := 0x20000 -000002a1: R0 := R0 + 0x78 -000002a6: R1 := 0x20000 -000002ac: R1 := R1 + 0x78 -000002b2: #1 := ~R0 -000002b7: #2 := R1 + ~R0 -000002bd: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002c3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002c7: ZF := #2 + 1 = 0 -000002cb: NF := 63:63[#2 + 1] -000002d1: when ZF goto %000002cf -0000082b: goto %00000520 - -00000520: -00000523: R1 := 0x1F000 -0000052a: R1 := mem[R1 + 0xFC0, el]:u64 -0000052f: when R1 = 0 goto %000002cf -0000082c: goto %00000533 - -000002cf: -000002d7: call R30 with noreturn - -00000533: -00000537: R16 := R1 -0000053c: call R16 with noreturn - -0000082d: sub frame_dummy(frame_dummy_result) -00000845: frame_dummy_result :: out u32 = low:32[R0] - -0000036e: -00000370: call @register_tm_clones with noreturn - -0000082e: sub free(free_ptr) -00000846: free_ptr :: in out u64 = R0 - -000004a2: -00000706: R16 := 0x20000 -0000070d: R17 := mem[R16 + 0x48, el]:u64 -00000713: R16 := R16 + 0x48 -00000718: call R17 with noreturn - -0000082f: sub main(main_argc, main_argv, main_result) -00000847: main_argc :: in u32 = low:32[R0] -00000848: main_argv :: in out u64 = R1 -00000849: main_result :: out u32 = low:32[R0] - -00000372: -00000376: #4 := R31 - 0x30 -0000037c: mem := mem with [#4, el]:u64 <- R29 -00000382: mem := mem with [#4 + 8, el]:u64 <- R30 -00000386: R31 := #4 -0000038c: R29 := R31 -00000394: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000039b: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003a2: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003a7: R0 := 0xB -000003ac: R30 := 0x8F0 -000003af: call @malloc with return %000003b1 - -000003b1: -000003b5: R1 := R0 -000003ba: R0 := 0x20000 -000003c0: R0 := R0 + 0x80 -000003c8: mem := mem with [R0, el]:u64 <- R1 -000003cd: R0 := 0x20000 -000003d3: R0 := R0 + 0x80 -000003da: R19 := mem[R0, el]:u64 -000003df: R0 := 0x20000 -000003e5: R0 := R0 + 0x68 -000003ea: R30 := 0x918 -000003ed: call @strlen with return %000003ef - -000003ef: -000003f3: R2 := R0 -000003f8: R0 := 0x20000 -000003fe: R1 := R0 + 0x68 -00000404: R0 := R19 -00000409: R30 := 0x92C -0000040c: call @memcpy with return %0000040e - -0000040e: -00000411: R0 := 0x20000 -00000417: R0 := R0 + 0x80 -0000041e: R0 := mem[R0, el]:u64 -00000423: R30 := 0x93C -00000426: call @puts with return %00000428 - -00000428: -0000042b: R0 := 0x20000 -00000431: R0 := R0 + 0x80 -00000438: R0 := mem[R0, el]:u64 -0000043e: R0 := R0 + 4 -00000446: mem := mem with [R31 + 0x28, el]:u64 <- R0 -0000044b: R0 := 0x20000 -00000451: R0 := R0 + 0x80 -00000458: R19 := mem[R0, el]:u64 +0000028d: R30 := 0x7F4 +00000290: call @abort with return %000008de + +000008de: +000008df: call @call_weak_fn with noreturn + +000008e0: sub abort() + + +0000028e: +00000786: R16 := 0x20000 +0000078e: R17 := mem[R16 + 0x38, el]:u64 +00000795: R16 := R16 + 0x38 +0000079a: call R17 with noreturn + +000008e1: sub call_weak_fn(call_weak_fn_result) +000008fc: call_weak_fn_result :: out u32 = low:32[R0] + +00000292: +00000296: R0 := 0x1F000 +0000029e: R0 := mem[R0 + 0xFD0, el]:u64 +000002aa: #12 := R0 = 0 +000002a4: when #12 goto %000002a2 +000008e2: goto %000005d0 + +000002a2: +000002af: call R30 with noreturn + +000005d0: +000005d3: goto @__gmon_start__ + +000005d1: +0000076d: R16 := 0x20000 +00000775: R17 := mem[R16 + 0x30, el]:u64 +0000077c: R16 := R16 + 0x30 +00000781: call R17 with noreturn + +000008e3: sub deregister_tm_clones(deregister_tm_clones_result) +000008fd: deregister_tm_clones_result :: out u32 = low:32[R0] + +000002b5: +000002b9: R0 := 0x20000 +000002c0: R0 := R0 + 0x78 +000002c6: R1 := 0x20000 +000002cd: R1 := R1 + 0x78 +000002d5: #16 := 1 + ~R0 + R1 +000002d9: NF := 63:63[#16] +000002dc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002df: ZF := #16 = 0 +000002e2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002f0: #21 := ZF +000002ea: when #21 goto %000002e8 +000008e4: goto %000005a9 + +000005a9: +000005ad: R1 := 0x1F000 +000005b5: R1 := mem[R1 + 0xFC0, el]:u64 +000005c0: #77 := R1 = 0 +000005ba: when #77 goto %000002e8 +000008e5: goto %000005c3 + +000002e8: +000002f5: call R30 with noreturn + +000005c3: +000005c9: R16 := R1 +000005ce: call R16 with noreturn + +000008e6: sub frame_dummy(frame_dummy_result) +000008fe: frame_dummy_result :: out u32 = low:32[R0] + +000003a5: +000003a7: call @register_tm_clones with noreturn + +000008e7: sub free(free_ptr) +000008ff: free_ptr :: in out u64 = R0 + +00000513: +000007b8: R16 := 0x20000 +000007c0: R17 := mem[R16 + 0x48, el]:u64 +000007c7: R16 := R16 + 0x48 +000007cc: call R17 with noreturn + +000008e8: sub main(main_argc, main_argv, main_result) +00000900: main_argc :: in u32 = low:32[R0] +00000901: main_argv :: in out u64 = R1 +00000902: main_result :: out u32 = low:32[R0] + +000003a9: +000003b0: #42 := R31 - 0x30 +000003b5: mem := mem with [#42, el]:u64 <- R29 +000003ba: mem := mem with [#42 + 8, el]:u64 <- R30 +000003be: R31 := #42 +000003c5: R29 := R31 +000003cd: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003d5: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003dd: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003e3: R0 := 0xB +000003e8: R30 := 0x8F0 +000003eb: call @malloc with return %000003ed + +000003ed: +000003f3: R1 := R0 +000003f9: R0 := 0x20000 +00000400: R0 := R0 + 0x80 +00000408: mem := mem with [R0, el]:u64 <- R1 +0000040e: R0 := 0x20000 +00000415: R0 := R0 + 0x80 +0000041d: R19 := mem[R0, el]:u64 +00000423: R0 := 0x20000 +0000042a: R0 := R0 + 0x68 +0000042f: R30 := 0x918 +00000432: call @strlen with return %00000434 + +00000434: +0000043a: R2 := R0 +00000440: R0 := 0x20000 +00000447: R1 := R0 + 0x68 +0000044f: R0 := R19 +00000454: R30 := 0x92C +00000457: call @memcpy with return %00000459 + +00000459: 0000045d: R0 := 0x20000 -00000463: R0 := R0 + 0x80 -0000046a: R0 := mem[R0, el]:u64 -0000046f: R30 := 0x96C -00000471: call @strlen with return %00000473 - -00000473: -00000477: R2 := R0 -0000047c: R1 := 1 -00000482: R0 := R19 -00000487: R30 := 0x97C -0000048a: call @memset with return %0000048c - -0000048c: -0000048f: R0 := 0x20000 -00000495: R0 := R0 + 0x80 -0000049c: R0 := mem[R0, el]:u64 -000004a1: R30 := 0x98C -000004a4: call @free with return %000004a6 - -000004a6: -000004a9: R0 := 0 -000004b0: R19 := mem[R31 + 0x10, el]:u64 -000004b7: R29 := mem[R31, el]:u64 -000004bc: R30 := mem[R31 + 8, el]:u64 -000004c0: R31 := R31 + 0x30 -000004c5: call R30 with noreturn - -00000830: sub malloc(malloc_size, malloc_result) -0000084a: malloc_size :: in u64 = R0 -0000084b: malloc_result :: out u64 = R0 - -000003ad: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x20, el]:u64 -000006a5: R16 := R16 + 0x20 -000006aa: call R17 with noreturn - -00000831: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -0000084c: memcpy_dst :: in out u64 = R0 -0000084d: memcpy_src :: in out u64 = R1 -0000084e: memcpy_n :: in u64 = R2 -0000084f: memcpy_result :: out u64 = R0 - -0000040a: -00000640: R16 := 0x20000 -00000647: R17 := mem[R16, el]:u64 -0000064d: R16 := R16 -00000652: call R17 with noreturn - -00000832: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000850: memset_buf :: in out u64 = R0 -00000851: memset_c :: in u32 = low:32[R1] -00000852: memset_n :: in u64 = R2 -00000853: memset_result :: out u64 = R0 - -00000488: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x28, el]:u64 -000006bb: R16 := R16 + 0x28 -000006c0: call R17 with noreturn - -00000833: sub puts(puts_s, puts_result) -00000854: puts_s :: in u64 = R0 -00000855: puts_result :: out u32 = low:32[R0] - -00000424: +00000464: R0 := R0 + 0x80 +0000046c: R0 := mem[R0, el]:u64 +00000471: R30 := 0x93C +00000474: call @puts with return %00000476 + +00000476: +0000047a: R0 := 0x20000 +00000481: R0 := R0 + 0x80 +00000489: R0 := mem[R0, el]:u64 +00000490: R0 := R0 + 4 +00000498: mem := mem with [R31 + 0x28, el]:u64 <- R0 +000004a0: R0 := mem[R31 + 0x28, el]:u64 +000004a8: mem := mem with [R0] <- 0 +000004ae: R0 := 0x20000 +000004b5: R0 := R0 + 0x80 +000004bd: R19 := mem[R0, el]:u64 +000004c3: R0 := 0x20000 +000004ca: R0 := R0 + 0x80 +000004d2: R0 := mem[R0, el]:u64 +000004d7: R30 := 0x974 +000004d9: call @strlen with return %000004db + +000004db: +000004e1: R2 := R0 +000004e8: R1 := 1 +000004f0: R0 := R19 +000004f5: R30 := 0x984 +000004f8: call @memset with return %000004fa + +000004fa: +000004fe: R0 := 0x20000 +00000505: R0 := R0 + 0x80 +0000050d: R0 := mem[R0, el]:u64 +00000512: R30 := 0x994 +00000515: call @free with return %00000517 + +00000517: +0000051c: R0 := 0 +00000524: R19 := mem[R31 + 0x10, el]:u64 +0000052e: R29 := mem[R31, el]:u64 +00000532: R30 := mem[R31 + 8, el]:u64 +00000535: R31 := R31 + 0x30 +0000053a: call R30 with noreturn + +000008e9: sub malloc(malloc_size, malloc_result) +00000903: malloc_size :: in u64 = R0 +00000904: malloc_result :: out u64 = R0 + +000003e9: +0000073b: R16 := 0x20000 +00000743: R17 := mem[R16 + 0x20, el]:u64 +0000074a: R16 := R16 + 0x20 +0000074f: call R17 with noreturn + +000008ea: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000905: memcpy_dst :: in out u64 = R0 +00000906: memcpy_src :: in out u64 = R1 +00000907: memcpy_n :: in u64 = R2 +00000908: memcpy_result :: out u64 = R0 + +00000455: +000006d7: R16 := 0x20000 +000006df: R17 := mem[R16, el]:u64 +000006e6: R16 := R16 +000006eb: call R17 with noreturn + +000008eb: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000909: memset_buf :: in out u64 = R0 +0000090a: memset_c :: in u32 = low:32[R1] +0000090b: memset_n :: in u64 = R2 +0000090c: memset_result :: out u64 = R0 + +000004f6: +00000754: R16 := 0x20000 +0000075c: R17 := mem[R16 + 0x28, el]:u64 +00000763: R16 := R16 + 0x28 +00000768: call R17 with noreturn + +000008ec: sub puts(puts_s, puts_result) +0000090d: puts_s :: in u64 = R0 +0000090e: puts_result :: out u32 = low:32[R0] + +00000472: +0000079f: R16 := 0x20000 +000007a7: R17 := mem[R16 + 0x40, el]:u64 +000007ae: R16 := R16 + 0x40 +000007b3: call R17 with noreturn + +000008ed: sub register_tm_clones(register_tm_clones_result) +0000090f: register_tm_clones_result :: out u32 = low:32[R0] + +000002f7: +000002fb: R0 := 0x20000 +00000302: R0 := R0 + 0x78 +00000308: R1 := 0x20000 +0000030f: R1 := R1 + 0x78 +00000317: R1 := R1 - R0 +0000031e: R2 := R1 >> 0x3F +00000326: R1 := R2 + (R1 ~>> 3) +0000032d: R1 := R1 >> 1 +00000339: #30 := R1 = 0 +00000333: when #30 goto %00000331 +000008ee: goto %00000582 + +00000582: +00000586: R2 := 0x1F000 +0000058e: R2 := mem[R2 + 0xFE0, el]:u64 +00000599: #72 := R2 = 0 +00000593: when #72 goto %00000331 +000008ef: goto %0000059c + +00000331: +0000033e: call R30 with noreturn + +0000059c: +000005a2: R16 := R2 +000005a7: call R16 with noreturn + +000008f0: sub strlen(strlen_s, strlen_result) +00000910: strlen_s :: in u64 = R0 +00000911: strlen_result :: out u64 = R0 + +00000430: 000006f0: R16 := 0x20000 -000006f7: R17 := mem[R16 + 0x40, el]:u64 -000006fd: R16 := R16 + 0x40 -00000702: call R17 with noreturn - -00000834: sub register_tm_clones(register_tm_clones_result) -00000856: register_tm_clones_result :: out u32 = low:32[R0] - -000002d9: -000002dc: R0 := 0x20000 -000002e2: R0 := R0 + 0x78 -000002e7: R1 := 0x20000 -000002ed: R1 := R1 + 0x78 -000002f4: R1 := R1 + ~R0 + 1 -000002fa: R2 := 0.63:63[R1] -00000301: R1 := R2 + (R1 ~>> 3) -00000307: R1 := extend:64[63:1[R1]] -0000030d: when R1 = 0 goto %0000030b -00000835: goto %00000502 - -00000502: -00000505: R2 := 0x1F000 -0000050c: R2 := mem[R2 + 0xFE0, el]:u64 -00000511: when R2 = 0 goto %0000030b -00000836: goto %00000515 - -0000030b: -00000313: call R30 with noreturn - -00000515: -00000519: R16 := R2 -0000051e: call R16 with noreturn - -00000837: sub strlen(strlen_s, strlen_result) -00000857: strlen_s :: in u64 = R0 -00000858: strlen_result :: out u64 = R0 - -000003eb: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16 + 8, el]:u64 -00000663: R16 := R16 + 8 -00000668: call R17 with noreturn +000006f8: R17 := mem[R16 + 8, el]:u64 +000006ff: R16 := R16 + 8 +00000704: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf index 3ddb9e515..ceafc2ab2 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf @@ -57,10 +57,10 @@ Symbol table '.symtab' contains 98 entries: 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: 000000000000099c 0 SECTION LOCAL DEFAULT 14 .fini - 15: 00000000000009b0 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 00000000000009b4 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009f0 0 SECTION LOCAL DEFAULT 17 .eh_frame + 14: 00000000000009a4 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009b8 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009bc 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009f8 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 @@ -73,16 +73,16 @@ Symbol table '.symtab' contains 98 entries: 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 0000000000000a04 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 15 $d + 30: 0000000000000a0c 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009b8 0 NOTYPE LOCAL DEFAULT 15 $d 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 000000000000099c 0 NOTYPE LOCAL DEFAULT 14 $x + 36: 00000000000009a4 0 NOTYPE LOCAL DEFAULT 14 $x 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 00000000000009a8 0 NOTYPE LOCAL DEFAULT 14 $x + 39: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 14 $x 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones @@ -95,19 +95,19 @@ Symbol table '.symtab' contains 98 entries: 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 17 $d + 52: 0000000000000a20 0 NOTYPE LOCAL DEFAULT 17 $d 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x - 58: 0000000000000a78 0 NOTYPE LOCAL DEFAULT 17 $d + 58: 0000000000000a80 0 NOTYPE LOCAL DEFAULT 17 $d 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 60: 0000000000000a9c 0 NOTYPE LOCAL DEFAULT 17 $d - 61: 0000000000000a9c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 60: 0000000000000aa4 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000aa4 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 64: 00000000000009b4 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 64: 00000000000009bc 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 @@ -119,7 +119,7 @@ Symbol table '.symtab' contains 98 entries: 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata - 76: 000000000000099c 0 FUNC GLOBAL HIDDEN 14 _fini + 76: 00000000000009a4 0 FUNC GLOBAL HIDDEN 14 _fini 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 @@ -128,7 +128,7 @@ Symbol table '.symtab' contains 98 entries: 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: 00000000000009b0 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 85: 00000000000009b8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 @@ -137,7 +137,7 @@ Symbol table '.symtab' contains 98 entries: 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 94: 00000000000008d4 200 FUNC GLOBAL DEFAULT 13 main + 94: 00000000000008d4 208 FUNC GLOBAL DEFAULT 13 main 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile deleted file mode 100644 index 6dedd5452..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -CFLAGS=-O2 - -include ../../../make/lift.mk 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 index 02784a818..23c651808 100644 --- 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 @@ -1,12 +1,12 @@ 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("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\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(".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\x0c\x82\xbb\xc0\xf6\x83\xc0\x7c\xfe\x2d\xa5\x06\xf5\xc5\x85\xc1\x9b\xf8\x1a\x1b"), +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"), @@ -20,16 +20,16 @@ Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2 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(".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\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")]), +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,0x843), Attr("symbol","\"main\"")), +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\"")), @@ -48,7 +48,7 @@ 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(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\"")), @@ -67,675 +67,694 @@ 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_043, "%000007fb"), Attrs([]), - Subs([Sub(Tid(2_015, "@__cxa_finalize"), +Program(Tid(2_197, "%00000895"), Attrs([]), + Subs([Sub(Tid(2_169, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_044, "%000007fc"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_198, "%00000896"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_318, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_607, "%00000647"), Attrs([Attr("address","0x740"), +Defs([Def(Tid(1_738, "%000006ca"), 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"), +Def(Tid(1_746, "%000006d2"), 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"), +Def(Tid(1_753, "%000006d9"), 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"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_758, "%000006de"), Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_016, "@__do_global_dtors_aux"), +Sub(Tid(2_170, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x940")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_045, "%000007fd"), + "__do_global_dtors_aux", Args([Arg(Tid(2_199, "%00000897"), 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"), +Blks([Blk(Tid(1_149, "@__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)), +Defs([Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x940"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#77",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x940"), +Def(Tid(1_161, "%00000489"), 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"), +Store(Var("mem",Mem(64,8)),Var("#77",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_166, "%0000048e"), 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"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#77",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x940"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#6",Imm(64))), Def(Tid(1_099, "%0000044b"), +Var("#77",Imm(64))), Def(Tid(1_177, "%00000499"), Attrs([Attr("address","0x944"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_107, "%00000453"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_185, "%000004a1"), 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"), +Def(Tid(1_191, "%000004a7"), 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"), +Def(Tid(1_200, "%000004b0"), 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_017, "%000007e1"), Attrs([]), - Int(1,1), Direct(Tid(1_164, "%0000048c")))])), Blk(Tid(1_164, "%0000048c"), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), +Def(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x954"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#79",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x954"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#79",Imm(1)), +Direct(Tid(1_204, "%000004b4"))), Goto(Tid(2_171, "%0000087b"), Attrs([]), + Int(1,1), Direct(Tid(1_252, "%000004e4")))])), Blk(Tid(1_252, "%000004e4"), Attrs([Attr("address","0x958")]), Phis([]), -Defs([Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x958"), +Defs([Def(Tid(1_256, "%000004e8"), 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"), +Def(Tid(1_264, "%000004f0"), 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_018, "%000007e2"), Attrs([]), - Int(1,1), Direct(Tid(1_203, "%000004b3")))])), Blk(Tid(1_203, "%000004b3"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x960"), +Attr("insn","cbz x0, #0x10")]), Var("#83",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_270, "%000004f6"), + Attrs([Attr("address","0x960"), Attr("insn","cbz x0, #0x10")]), + Var("#83",Imm(1)), Direct(Tid(1_268, "%000004f4"))), +Goto(Tid(2_172, "%0000087c"), Attrs([]), Int(1,1), +Direct(Tid(1_300, "%00000514")))])), Blk(Tid(1_300, "%00000514"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x964"), +Defs([Def(Tid(1_304, "%00000518"), 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"), +Def(Tid(1_312, "%00000520"), 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"), +Def(Tid(1_317, "%00000525"), 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"), +Jmps([Call(Tid(1_320, "%00000528"), 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"), +(Direct(Tid(2_169, "@__cxa_finalize")),Direct(Tid(1_268, "%000004f4"))))])), +Blk(Tid(1_268, "%000004f4"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_281, "%00000501"), 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"), +Jmps([Call(Tid(1_283, "%00000503"), 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"), +(Direct(Tid(2_183, "@deregister_tm_clones")),Direct(Tid(1_285, "%00000505"))))])), +Blk(Tid(1_285, "%00000505"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_290, "%0000050a"), 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"), +Def(Tid(1_298, "%00000512"), 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_019, "%000007e3"), Attrs([]), Int(1,1), -Direct(Tid(1_123, "%00000463")))])), Blk(Tid(1_123, "%00000463"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_173, "%0000087d"), Attrs([]), Int(1,1), +Direct(Tid(1_204, "%000004b4")))])), Blk(Tid(1_204, "%000004b4"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_133, "%0000046d"), Attrs([Attr("address","0x97C"), +Defs([Def(Tid(1_220, "%000004c4"), 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"), +Def(Tid(1_230, "%000004ce"), 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"), +Def(Tid(1_234, "%000004d2"), 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"), +Def(Tid(1_237, "%000004d5"), 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"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_242, "%000004da"), Attrs([Attr("address","0x984"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_020, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_174, "@__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_046, "%000007fe"), + Args([Arg(Tid(2_200, "%00000898"), 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_047, "%000007ff"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_201, "%00000899"), 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_048, "%00000800"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_202, "%0000089a"), 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_049, "%00000801"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_203, "%0000089b"), 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_050, "%00000802"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_204, "%0000089c"), 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"), +Out())]), Blks([Blk(Tid(961, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_585, "%00000631"), Attrs([Attr("address","0x730"), +Defs([Def(Tid(1_713, "%000006b1"), 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"), +Def(Tid(1_721, "%000006b9"), 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"), +Def(Tid(1_728, "%000006c0"), 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"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_733, "%000006c5"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_021, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_175, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x994")]), - "_fini", Args([Arg(Tid(2_051, "%00000803"), + "_fini", Args([Arg(Tid(2_205, "%0000089d"), 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","0x994")]), Phis([]), Defs([Def(Tid(41, "%00000029"), Attrs([Attr("address","0x998"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x998"), +Def(Tid(46, "%0000002e"), 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"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), 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"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(55, "%00000037"), 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"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), 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"), +Def(Tid(72, "%00000048"), 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"), +Def(Tid(76, "%0000004c"), 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"), +Def(Tid(79, "%0000004f"), 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"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), Attrs([Attr("address","0x9A4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_022, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_176, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_052, "%00000804"), + "_init", Args([Arg(Tid(2_206, "%0000089e"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_936, "@_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)), +Defs([Def(Tid(1_945, "%00000799"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#114",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_797, "%00000705"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_950, "%0000079e"), 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"), +Store(Var("mem",Mem(64,8)),Var("#114",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_955, "%000007a3"), 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"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#114",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_959, "%000007a7"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#8",Imm(64))), Def(Tid(1_813, "%00000715"), +Var("#114",Imm(64))), Def(Tid(1_966, "%000007ae"), Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_818, "%0000071a"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_971, "%000007b3"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x1d0")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_820, "%0000071c"), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_973, "%000007b5"), 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"), +(Direct(Tid(2_181, "@call_weak_fn")),Direct(Tid(1_975, "%000007b7"))))])), +Blk(Tid(1_975, "%000007b7"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_983, "%000007bf"), 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"), +Def(Tid(1_987, "%000007c3"), 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"), +Def(Tid(1_990, "%000007c6"), 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"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_995, "%000007cb"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_023, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_177, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_053, "%00000805"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_207, "%0000089f"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(887, "@_start"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(893, "%0000037d"), Attrs([Attr("address","0x884"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(853, "%00000355"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(899, "%00000383"), Attrs([Attr("address","0x888"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(859, "%0000035b"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(907, "%0000038b"), Attrs([Attr("address","0x88C"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(866, "%00000362"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(915, "%00000393"), 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"), +Def(Tid(922, "%0000039a"), 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"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(929, "%000003a1"), Attrs([Attr("address","0x898"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(883, "%00000373"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x89C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(890, "%0000037a"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(943, "%000003af"), 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"), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8A4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(900, "%00000384"), Attrs([Attr("address","0x8A8"), +Def(Tid(955, "%000003bb"), Attrs([Attr("address","0x8A8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(905, "%00000389"), Attrs([Attr("address","0x8AC"), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(908, "%0000038c"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(963, "%000003c3"), 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"), +(Direct(Tid(2_174, "@__libc_start_main")),Direct(Tid(965, "%000003c5"))))])), +Blk(Tid(965, "%000003c5"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0x130")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(916, "%00000394"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(971, "%000003cb"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0x130")]), Int(1,1), -(Direct(Tid(2_026, "@abort")),Direct(Tid(2_024, "%000007e8"))))])), -Blk(Tid(2_024, "%000007e8"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_025, "%000007e9"), Attrs([]), Int(1,1), -(Direct(Tid(2_027, "@call_weak_fn")),))]))])), Sub(Tid(2_026, "@abort"), +(Direct(Tid(2_180, "@abort")),Direct(Tid(2_178, "%00000882"))))])), +Blk(Tid(2_178, "%00000882"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_179, "%00000883"), Attrs([]), Int(1,1), +(Direct(Tid(2_181, "@call_weak_fn")),))]))])), Sub(Tid(2_180, "@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"), +Blks([Blk(Tid(969, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_838, "%0000072e"), 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"), +Def(Tid(1_846, "%00000736"), 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"), +Def(Tid(1_853, "%0000073d"), 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"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_858, "%00000742"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_027, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_181, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8B4")]), - "call_weak_fn", Args([Arg(Tid(2_054, "%00000806"), + "call_weak_fn", Args([Arg(Tid(2_208, "%000008a0"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(973, "@call_weak_fn"), + Attrs([Attr("address","0x8B4")]), Phis([]), Defs([Def(Tid(977, "%000003d1"), Attrs([Attr("address","0x8B4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(928, "%000003a0"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(985, "%000003d9"), 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_028, "%000007ec"), Attrs([]), - Int(1,1), Direct(Tid(1_283, "%00000503")))])), Blk(Tid(932, "%000003a4"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x8BC"), +Attr("insn","cbz x0, #0x8")]), Var("#55",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(991, "%000003df"), + Attrs([Attr("address","0x8BC"), Attr("insn","cbz x0, #0x8")]), + Var("#55",Imm(1)), Direct(Tid(989, "%000003dd"))), +Goto(Tid(2_182, "%00000886"), Attrs([]), Int(1,1), +Direct(Tid(1_400, "%00000578")))])), Blk(Tid(989, "%000003dd"), Attrs([Attr("address","0x8C4")]), Phis([]), Defs([]), -Jmps([Call(Tid(940, "%000003ac"), Attrs([Attr("address","0x8C4"), +Jmps([Call(Tid(1_002, "%000003ea"), 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"), +Blk(Tid(1_400, "%00000578"), Attrs([Attr("address","0x8C0")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x8C0"), Attr("insn","b #-0x150")]), Int(1,1), -Direct(Tid(1_284, "@__gmon_start__")))])), Blk(Tid(1_284, "@__gmon_start__"), +Direct(Tid(1_401, "@__gmon_start__")))])), Blk(Tid(1_401, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_673, "%00000689"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_813, "%00000715"), 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"), +Def(Tid(1_821, "%0000071d"), 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"), +Def(Tid(1_828, "%00000724"), 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"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_833, "%00000729"), Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_029, "@deregister_tm_clones"), +Sub(Tid(2_183, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8D0")]), - "deregister_tm_clones", Args([Arg(Tid(2_055, "%00000807"), + "deregister_tm_clones", Args([Arg(Tid(2_209, "%000008a1"), 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"), +Blks([Blk(Tid(1_008, "@deregister_tm_clones"), + Attrs([Attr("address","0x8D0")]), Phis([]), +Defs([Def(Tid(1_012, "%000003f4"), Attrs([Attr("address","0x8D0"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x8D4"), +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","0x8D8"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(1_032, "%00000408"), + Attrs([Attr("address","0x8DC"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("#59",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(1_044, "%00000414"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#59",Imm(64)))), Def(Tid(1_047, "%00000417"), 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"), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#59",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#59",Imm(64)))))), +Def(Tid(1_050, "%0000041a"), 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"), +EQ(Var("#59",Imm(64)),Int(0,64))), Def(Tid(1_053, "%0000041d"), 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_030, "%000007ee"), Attrs([]), - Int(1,1), Direct(Tid(1_253, "%000004e5")))])), Blk(Tid(1_253, "%000004e5"), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#59",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#59",Imm(64))))))), +Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x8E4"), +Attr("insn","b.eq #0x18")]), Var("#64",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(1_061, "%00000425"), Attrs([Attr("address","0x8E4"), +Attr("insn","b.eq #0x18")]), Var("#64",Imm(1)), +Direct(Tid(1_059, "%00000423"))), Goto(Tid(2_184, "%00000888"), Attrs([]), + Int(1,1), Direct(Tid(1_361, "%00000551")))])), Blk(Tid(1_361, "%00000551"), Attrs([Attr("address","0x8E8")]), Phis([]), -Defs([Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x8E8"), +Defs([Def(Tid(1_365, "%00000555"), 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"), +Def(Tid(1_373, "%0000055d"), 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_031, "%000007ef"), Attrs([]), - Int(1,1), Direct(Tid(1_272, "%000004f8")))])), Blk(Tid(1_001, "%000003e9"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8F0"), +Attr("insn","cbz x1, #0xc")]), Var("#91",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_378, "%00000562"), + Attrs([Attr("address","0x8F0"), Attr("insn","cbz x1, #0xc")]), + Var("#91",Imm(1)), Direct(Tid(1_059, "%00000423"))), +Goto(Tid(2_185, "%00000889"), Attrs([]), Int(1,1), +Direct(Tid(1_387, "%0000056b")))])), Blk(Tid(1_059, "%00000423"), Attrs([Attr("address","0x8FC")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x8FC"), +Jmps([Call(Tid(1_072, "%00000430"), 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"), +Blk(Tid(1_387, "%0000056b"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_393, "%00000571"), 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"), +Jmps([Call(Tid(1_398, "%00000576"), 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_056, "%00000808"), +Sub(Tid(2_186, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x990")]), "frame_dummy", Args([Arg(Tid(2_210, "%000008a2"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_248, "@frame_dummy"), Attrs([Attr("address","0x990")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_162, "%0000048a"), Attrs([Attr("address","0x990"), +Jmps([Call(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x990"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_039, "@register_tm_clones")),))]))])), Sub(Tid(2_033, "@free"), +(Direct(Tid(2_193, "@register_tm_clones")),))]))])), Sub(Tid(2_187, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_057, "%00000809"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_211, "%000008a3"), 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"), +Both())]), Blks([Blk(Tid(807, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_888, "%00000760"), 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"), +Def(Tid(1_896, "%00000768"), 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"), +Def(Tid(1_903, "%0000076f"), 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"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_908, "%00000774"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_034, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_188, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x7C0")]), "main", Args([Arg(Tid(2_058, "%0000080a"), +Attr("address","0x7C0")]), "main", Args([Arg(Tid(2_212, "%000008a4"), 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_059, "%0000080b"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_213, "%000008a5"), 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_060, "%0000080c"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_214, "%000008a6"), 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"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(556, "@main"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(563, "%00000233"), Attrs([Attr("address","0x7C0"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#1",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#9",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(563, "%00000233"), Attrs([Attr("address","0x7C0"), +Def(Tid(568, "%00000238"), 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)), +Store(Var("mem",Mem(64,8)),Var("#9",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), Def(Tid(573, "%0000023d"), Attrs([Attr("address","0x7C0"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#9",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(577, "%00000241"), Attrs([Attr("address","0x7C0"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#1",Imm(64))), Def(Tid(578, "%00000242"), +Var("#9",Imm(64))), Def(Tid(583, "%00000247"), Attrs([Attr("address","0x7C4"), Attr("insn","mov x0, #0xb")]), - Var("R0",Imm(64)), Int(11,64)), Def(Tid(584, "%00000248"), + Var("R0",Imm(64)), Int(11,64)), Def(Tid(590, "%0000024e"), 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"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(598, "%00000256"), + Attrs([Attr("address","0x7CC"), Attr("insn","stp x19, x20, [sp, #0x10]")]), + Var("#14",Imm(64)), PLUS(Var("R31",Imm(64)),Int(16,64))), +Def(Tid(603, "%0000025b"), Attrs([Attr("address","0x7CC"), +Attr("insn","stp x19, x20, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#14",Imm(64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(608, "%00000260"), 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(620, "%0000026c"), Attrs([Attr("address","0x7D8"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#14",Imm(64)),Int(8,64)),Var("R20",Imm(64)),LittleEndian(),64)), +Def(Tid(614, "%00000266"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), +Def(Tid(622, "%0000026e"), 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(627, "%00000273"), Attrs([Attr("address","0x7D8"), Attr("insn","bl #-0x88")]), Var("R30",Imm(64)), Int(2012,64))]), -Jmps([Call(Tid(623, "%0000026f"), Attrs([Attr("address","0x7D8"), +Jmps([Call(Tid(630, "%00000276"), 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"), +(Direct(Tid(2_189, "@malloc")),Direct(Tid(632, "%00000278"))))])), +Blk(Tid(632, "%00000278"), Attrs([Attr("address","0x7DC")]), Phis([]), +Defs([Def(Tid(636, "%0000027c"), Attrs([Attr("address","0x7DC"), +Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), +Def(Tid(643, "%00000283"), Attrs([Attr("address","0x7E0"), +Attr("insn","add x21, x21, #0x60")]), Var("R21",Imm(64)), +PLUS(Var("R21",Imm(64)),Int(96,64))), Def(Tid(651, "%0000028b"), 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("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(659, "%00000293"), + Attrs([Attr("address","0x7E8"), Attr("insn","mov x0, x21")]), + Var("R0",Imm(64)), Var("R21",Imm(64))), Def(Tid(667, "%0000029b"), + Attrs([Attr("address","0x7EC"), Attr("insn","str x19, [x20, #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"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R20",Imm(64)),Int(120,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(672, "%000002a0"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0xd0")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(662, "%00000296"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(675, "%000002a3"), 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"), +(Direct(Tid(2_196, "@strlen")),Direct(Tid(677, "%000002a5"))))])), +Blk(Tid(677, "%000002a5"), Attrs([Attr("address","0x7F4")]), Phis([]), +Defs([Def(Tid(683, "%000002ab"), Attrs([Attr("address","0x7F4"), +Attr("insn","mov x1, x21")]), Var("R1",Imm(64)), Var("R21",Imm(64))), +Def(Tid(691, "%000002b3"), Attrs([Attr("address","0x7F8"), 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"), +Def(Tid(699, "%000002bb"), 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"), +Def(Tid(704, "%000002c0"), Attrs([Attr("address","0x800"), Attr("insn","bl #-0xf0")]), Var("R30",Imm(64)), Int(2052,64))]), -Jmps([Call(Tid(688, "%000002b0"), Attrs([Attr("address","0x800"), +Jmps([Call(Tid(707, "%000002c3"), 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"), +(Direct(Tid(2_190, "@memcpy")),Direct(Tid(709, "%000002c5"))))])), +Blk(Tid(709, "%000002c5"), Attrs([Attr("address","0x804")]), Phis([]), +Defs([Def(Tid(715, "%000002cb"), 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"), +Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x808"), Attr("insn","bl #-0x78")]), Var("R30",Imm(64)), Int(2060,64))]), -Jmps([Call(Tid(702, "%000002be"), Attrs([Attr("address","0x808"), +Jmps([Call(Tid(723, "%000002d3"), 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"), +(Direct(Tid(2_192, "@puts")),Direct(Tid(725, "%000002d5"))))])), +Blk(Tid(725, "%000002d5"), Attrs([Attr("address","0x80C")]), Phis([]), +Defs([Def(Tid(731, "%000002db"), 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(739, "%000002e3"), 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),BigEndian(),8)), +Def(Tid(747, "%000002eb"), 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(755, "%000002f3"), Attrs([Attr("address","0x818"), 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"), +Def(Tid(760, "%000002f8"), Attrs([Attr("address","0x81C"), +Attr("insn","bl #-0xfc")]), Var("R30",Imm(64)), Int(2080,64))]), +Jmps([Call(Tid(762, "%000002fa"), Attrs([Attr("address","0x81C"), +Attr("insn","bl #-0xfc")]), Int(1,1), +(Direct(Tid(2_196, "@strlen")),Direct(Tid(764, "%000002fc"))))])), +Blk(Tid(764, "%000002fc"), Attrs([Attr("address","0x820")]), Phis([]), +Defs([Def(Tid(769, "%00000301"), Attrs([Attr("address","0x820"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(733, "%000002dd"), Attrs([Attr("address","0x81C"), +Def(Tid(777, "%00000309"), Attrs([Attr("address","0x824"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(739, "%000002e3"), Attrs([Attr("address","0x820"), +Def(Tid(785, "%00000311"), Attrs([Attr("address","0x828"), 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"), +Def(Tid(790, "%00000316"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xcc")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(793, "%00000319"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xcc")]), Int(1,1), +(Direct(Tid(2_191, "@memset")),Direct(Tid(795, "%0000031b"))))])), +Blk(Tid(795, "%0000031b"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(801, "%00000321"), 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(806, "%00000326"), Attrs([Attr("address","0x834"), +Attr("insn","bl #-0x94")]), Var("R30",Imm(64)), Int(2104,64))]), +Jmps([Call(Tid(809, "%00000329"), Attrs([Attr("address","0x834"), +Attr("insn","bl #-0x94")]), Int(1,1), +(Direct(Tid(2_187, "@free")),Direct(Tid(811, "%0000032b"))))])), +Blk(Tid(811, "%0000032b"), Attrs([Attr("address","0x838")]), Phis([]), +Defs([Def(Tid(818, "%00000332"), Attrs([Attr("address","0x838"), +Attr("insn","ldp x19, x20, [sp, #0x10]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(822, "%00000336"), 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(783, "%0000030f"), Attrs([Attr("address","0x834"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(829, "%0000033d"), Attrs([Attr("address","0x83C"), Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(790, "%00000316"), Attrs([Attr("address","0x838"), +Def(Tid(837, "%00000345"), 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(797, "%0000031d"), Attrs([Attr("address","0x83C"), +Def(Tid(847, "%0000034f"), 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(802, "%00000322"), Attrs([Attr("address","0x83C"), +Def(Tid(851, "%00000353"), 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(806, "%00000326"), Attrs([Attr("address","0x83C"), +Def(Tid(854, "%00000356"), 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(811, "%0000032b"), - Attrs([Attr("address","0x840"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_035, "@malloc"), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(859, "%0000035b"), + Attrs([Attr("address","0x848"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_189, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_061, "%0000080d"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_215, "%000008a7"), 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_062, "%0000080e"), +Var("R0",Imm(64)), In()), Arg(Tid(2_216, "%000008a8"), 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"), +Blks([Blk(Tid(628, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_763, "%000006e3"), 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"), +Def(Tid(1_771, "%000006eb"), 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"), +Def(Tid(1_778, "%000006f2"), 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"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_783, "%000006f7"), Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_036, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_190, "@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_063, "%0000080f"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_217, "%000008a9"), 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_064, "%00000810"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_218, "%000008aa"), 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_065, "%00000811"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_219, "%000008ab"), 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_066, "%00000812"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_220, "%000008ac"), 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"), +Blks([Blk(Tid(705, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_663, "%0000067f"), 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"), +Def(Tid(1_671, "%00000687"), 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"), +Def(Tid(1_678, "%0000068e"), Attrs([Attr("address","0x718"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_559, "%00000617"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_683, "%00000693"), Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_037, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_191, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_067, "%00000813"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_221, "%000008ad"), 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_068, "%00000814"), +Both()), Arg(Tid(2_222, "%000008ae"), 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_069, "%00000815"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_223, "%000008af"), 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_070, "%00000816"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_224, "%000008b0"), 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"), +Blks([Blk(Tid(791, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_788, "%000006fc"), 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"), +Def(Tid(1_796, "%00000704"), 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"), +Def(Tid(1_803, "%0000070b"), 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"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_808, "%00000710"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_038, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_192, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_071, "%00000817"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_225, "%000008b1"), 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_072, "%00000818"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_226, "%000008b2"), 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"), +Blks([Blk(Tid(721, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_863, "%00000747"), 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"), +Def(Tid(1_871, "%0000074f"), 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"), +Def(Tid(1_878, "%00000756"), 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"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_883, "%0000075b"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_039, "@register_tm_clones"), +Sub(Tid(2_193, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), - "register_tm_clones", Args([Arg(Tid(2_073, "%00000819"), + "register_tm_clones", Args([Arg(Tid(2_227, "%000008b3"), 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"), +Blks([Blk(Tid(1_074, "@register_tm_clones"), Attrs([Attr("address","0x900")]), Phis([]), -Defs([Def(Tid(1_014, "%000003f6"), Attrs([Attr("address","0x900"), +Defs([Def(Tid(1_078, "%00000436"), 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"), +Def(Tid(1_085, "%0000043d"), 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"), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x908"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(1_031, "%00000407"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(1_098, "%0000044a"), 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"), +Def(Tid(1_106, "%00000452"), 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"), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(1_113, "%00000459"), + Attrs([Attr("address","0x914"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(1_121, "%00000461"), 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"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(1_128, "%00000468"), 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_040, "%000007f8"), Attrs([]), - Int(1,1), Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(1_140, "%00000474"), + Attrs([Attr("address","0x920"), Attr("insn","cbz x1, #0x18")]), + Var("#73",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x920"), +Attr("insn","cbz x1, #0x18")]), Var("#73",Imm(1)), +Direct(Tid(1_132, "%0000046c"))), Goto(Tid(2_194, "%00000892"), Attrs([]), + Int(1,1), Direct(Tid(1_322, "%0000052a")))])), Blk(Tid(1_322, "%0000052a"), Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x924"), +Defs([Def(Tid(1_326, "%0000052e"), 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"), +Def(Tid(1_334, "%00000536"), 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_041, "%000007f9"), Attrs([]), - Int(1,1), Direct(Tid(1_242, "%000004da")))])), Blk(Tid(1_061, "%00000425"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), +Def(Tid(1_345, "%00000541"), Attrs([Attr("address","0x92C"), +Attr("insn","cbz x2, #0xc")]), Var("#86",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_339, "%0000053b"), + Attrs([Attr("address","0x92C"), Attr("insn","cbz x2, #0xc")]), + Var("#86",Imm(1)), Direct(Tid(1_132, "%0000046c"))), +Goto(Tid(2_195, "%00000893"), Attrs([]), Int(1,1), +Direct(Tid(1_348, "%00000544")))])), Blk(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x938")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x938"), +Jmps([Call(Tid(1_145, "%00000479"), 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"), +Blk(Tid(1_348, "%00000544"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_354, "%0000054a"), 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"), +Jmps([Call(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x934"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_042, "@strlen"), +Sub(Tid(2_196, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_074, "%0000081a"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_228, "%000008b4"), 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_075, "%0000081b"), +In()), Arg(Tid(2_229, "%000008b5"), 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"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(673, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_563, "%0000061b"), Attrs([Attr("address","0x720"), +Defs([Def(Tid(1_688, "%00000698"), 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"), +Def(Tid(1_696, "%000006a0"), 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"), +Def(Tid(1_703, "%000006a7"), 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"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_708, "%000006ac"), 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 index 7838f7004..b0832a61f 100644 --- 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 @@ -1,348 +1,357 @@ -000007fb: program -000007df: sub __cxa_finalize(__cxa_finalize_result) -000007fc: __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) -000007fd: __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 -000007e1: goto %0000048c - -0000048c: -0000048f: R0 := 0x1F000 -00000496: R0 := mem[R0 + 0xFC8, el]:u64 -0000049c: when R0 = 0 goto %0000049a -000007e2: 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] -000007e3: 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) -000007fe: __libc_start_main_main :: in u64 = R0 -000007ff: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000800: __libc_start_main_arg3 :: in out u64 = R2 -00000801: __libc_start_main_auxv :: in out u64 = R3 -00000802: __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) -00000803: _fini_result :: out u32 = low:32[R0] +00000895: program +00000879: sub __cxa_finalize(__cxa_finalize_result) +00000896: __cxa_finalize_result :: out u32 = low:32[R0] + +00000526: +000006ca: R16 := 0x20000 +000006d2: R17 := mem[R16 + 0x18, el]:u64 +000006d9: R16 := R16 + 0x18 +000006de: call R17 with noreturn + +0000087a: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000897: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000047d: +00000484: #77 := R31 - 0x20 +00000489: mem := mem with [#77, el]:u64 <- R29 +0000048e: mem := mem with [#77 + 8, el]:u64 <- R30 +00000492: R31 := #77 +00000499: R29 := R31 +000004a1: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000004a7: R19 := 0x20000 +000004b0: R0 := pad:32[mem[R19 + 0x70]] +000004bc: #79 := ~~0:0[R0] +000004b6: when #79 goto %000004b4 +0000087b: goto %000004e4 + +000004e4: +000004e8: R0 := 0x1F000 +000004f0: R0 := mem[R0 + 0xFC8, el]:u64 +000004fc: #83 := R0 = 0 +000004f6: when #83 goto %000004f4 +0000087c: goto %00000514 + +00000514: +00000518: R0 := 0x20000 +00000520: R0 := mem[R0 + 0x58, el]:u64 +00000525: R30 := 0x970 +00000528: call @__cxa_finalize with return %000004f4 + +000004f4: +00000501: R30 := 0x974 +00000503: call @deregister_tm_clones with return %00000505 + +00000505: +0000050a: R0 := 1 +00000512: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] +0000087d: goto %000004b4 + +000004b4: +000004c4: R19 := mem[R31 + 0x10, el]:u64 +000004ce: R29 := mem[R31, el]:u64 +000004d2: R30 := mem[R31 + 8, el]:u64 +000004d5: R31 := R31 + 0x20 +000004da: call R30 with noreturn + +0000087e: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000898: __libc_start_main_main :: in u64 = R0 +00000899: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000089a: __libc_start_main_arg3 :: in out u64 = R2 +0000089b: __libc_start_main_auxv :: in out u64 = R3 +0000089c: __libc_start_main_result :: out u32 = low:32[R0] + +000003c1: +000006b1: R16 := 0x20000 +000006b9: R17 := mem[R16 + 0x10, el]:u64 +000006c0: R16 := R16 + 0x10 +000006c5: call R17 with noreturn + +0000087f: sub _fini(_fini_result) +0000089d: _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) -00000804: _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) -00000805: _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 %000007e8 - -000007e8: -000007e9: 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) -00000806: 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 -000007ec: 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) -00000807: 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 -000007ee: goto %000004e5 - -000004e5: -000004e8: R1 := 0x1F000 -000004ef: R1 := mem[R1 + 0xFC0, el]:u64 -000004f4: when R1 = 0 goto %000003e9 -000007ef: goto %000004f8 - -000003e9: -000003f1: call R30 with noreturn - -000004f8: -000004fc: R16 := R1 -00000501: call R16 with noreturn - -000007f0: sub frame_dummy(frame_dummy_result) -00000808: frame_dummy_result :: out u32 = low:32[R0] - -00000488: -0000048a: call @register_tm_clones with noreturn - -000007f1: sub free(free_ptr) -00000809: 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) -0000080a: main_argc :: in u32 = low:32[R0] -0000080b: main_argv :: in out u64 = R1 -0000080c: 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 +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +00000880: sub _init(_init_result) +0000089e: _init_result :: out u32 = low:32[R0] + +00000790: +00000799: #114 := R31 - 0x10 +0000079e: mem := mem with [#114, el]:u64 <- R29 +000007a3: mem := mem with [#114 + 8, el]:u64 <- R30 +000007a7: R31 := #114 +000007ae: R29 := R31 +000007b3: R30 := 0x6E8 +000007b5: call @call_weak_fn with return %000007b7 + +000007b7: +000007bf: R29 := mem[R31, el]:u64 +000007c3: R30 := mem[R31 + 8, el]:u64 +000007c6: R31 := R31 + 0x10 +000007cb: call R30 with noreturn + +00000881: sub _start(_start_result) +0000089f: _start_result :: out u32 = low:32[R0] + +00000377: +0000037d: R29 := 0 +00000383: R30 := 0 +0000038b: R5 := R0 +00000393: R1 := mem[R31, el]:u64 +0000039a: R2 := R31 + 8 +000003a1: R6 := R31 +000003a7: R0 := 0x1F000 +000003af: R0 := mem[R0 + 0xFD8, el]:u64 +000003b5: R3 := 0 +000003bb: R4 := 0 +000003c0: R30 := 0x8B0 +000003c3: call @__libc_start_main with return %000003c5 + +000003c5: +000003c8: R30 := 0x8B4 +000003cb: call @abort with return %00000882 + +00000882: +00000883: call @call_weak_fn with noreturn + +00000884: sub abort() + + +000003c9: +0000072e: R16 := 0x20000 +00000736: R17 := mem[R16 + 0x38, el]:u64 +0000073d: R16 := R16 + 0x38 +00000742: call R17 with noreturn + +00000885: sub call_weak_fn(call_weak_fn_result) +000008a0: call_weak_fn_result :: out u32 = low:32[R0] + +000003cd: +000003d1: R0 := 0x1F000 +000003d9: R0 := mem[R0 + 0xFD0, el]:u64 +000003e5: #55 := R0 = 0 +000003df: when #55 goto %000003dd +00000886: goto %00000578 + +000003dd: +000003ea: call R30 with noreturn + +00000578: +0000057b: goto @__gmon_start__ + +00000579: +00000715: R16 := 0x20000 +0000071d: R17 := mem[R16 + 0x30, el]:u64 +00000724: R16 := R16 + 0x30 +00000729: call R17 with noreturn + +00000887: sub deregister_tm_clones(deregister_tm_clones_result) +000008a1: deregister_tm_clones_result :: out u32 = low:32[R0] + +000003f0: +000003f4: R0 := 0x20000 +000003fb: R0 := R0 + 0x70 +00000401: R1 := 0x20000 +00000408: R1 := R1 + 0x70 +00000410: #59 := 1 + ~R0 + R1 +00000414: NF := 63:63[#59] +00000417: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#59] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#59] +0000041a: ZF := #59 = 0 +0000041d: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#59] | 63:63[R1] + & ~63:63[#59] +0000042b: #64 := ZF +00000425: when #64 goto %00000423 +00000888: goto %00000551 + +00000551: +00000555: R1 := 0x1F000 +0000055d: R1 := mem[R1 + 0xFC0, el]:u64 +00000568: #91 := R1 = 0 +00000562: when #91 goto %00000423 +00000889: goto %0000056b + +00000423: +00000430: call R30 with noreturn + +0000056b: +00000571: R16 := R1 +00000576: call R16 with noreturn + +0000088a: sub frame_dummy(frame_dummy_result) +000008a2: frame_dummy_result :: out u32 = low:32[R0] + +000004e0: +000004e2: call @register_tm_clones with noreturn + +0000088b: sub free(free_ptr) +000008a3: free_ptr :: in out u64 = R0 + +00000327: +00000760: R16 := 0x20000 +00000768: R17 := mem[R16 + 0x48, el]:u64 +0000076f: R16 := R16 + 0x48 +00000774: call R17 with noreturn + +0000088c: sub main(main_argc, main_argv, main_result) +000008a4: main_argc :: in u32 = low:32[R0] +000008a5: main_argv :: in out u64 = R1 +000008a6: main_result :: out u32 = low:32[R0] + +0000022c: +00000233: #9 := R31 - 0x30 +00000238: mem := mem with [#9, el]:u64 <- R29 +0000023d: mem := mem with [#9 + 8, el]:u64 <- R30 +00000241: R31 := #9 +00000247: R0 := 0xB +0000024e: R29 := R31 +00000256: #14 := R31 + 0x10 +0000025b: mem := mem with [#14, el]:u64 <- R19 +00000260: mem := mem with [#14 + 8, el]:u64 <- R20 +00000266: R20 := 0x20000 +0000026e: mem := mem with [R31 + 0x20, el]:u64 <- R21 +00000273: R30 := 0x7DC +00000276: call @malloc with return %00000278 + +00000278: +0000027c: R21 := 0x20000 +00000283: R21 := R21 + 0x60 +0000028b: R19 := R0 +00000293: R0 := R21 +0000029b: mem := mem with [R20 + 0x78, el]:u64 <- R19 +000002a0: R30 := 0x7F4 +000002a3: call @strlen with return %000002a5 + +000002a5: +000002ab: R1 := R21 +000002b3: R2 := R0 +000002bb: R0 := R19 +000002c0: R30 := 0x804 +000002c3: call @memcpy with return %000002c5 + +000002c5: 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 +000002d0: R30 := 0x80C +000002d3: call @puts with return %000002d5 -000002ed: -000002f2: R0 := mem[R21 + 0x78, el]:u64 -000002f7: R30 := 0x830 -000002fa: call @free with return %000002fc +000002d5: +000002db: R0 := mem[R20 + 0x78, el]:u64 +000002e3: mem := mem with [R0 + 4] <- 0 +000002eb: R19 := mem[R20 + 0x78, el]:u64 +000002f3: R0 := R19 +000002f8: R30 := 0x820 +000002fa: call @strlen 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) -0000080d: malloc_size :: in u64 = R0 -0000080e: 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) -0000080f: memcpy_dst :: in out u64 = R0 -00000810: memcpy_src :: in out u64 = R1 -00000811: memcpy_n :: in u64 = R2 -00000812: 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) -00000813: memset_buf :: in out u64 = R0 -00000814: memset_c :: in u32 = low:32[R1] -00000815: memset_n :: in u64 = R2 -00000816: 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) -00000817: puts_s :: in u64 = R0 -00000818: 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) -00000819: 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 -000007f8: goto %000004c7 - -000004c7: -000004ca: R2 := 0x1F000 -000004d1: R2 := mem[R2 + 0xFE0, el]:u64 -000004d6: when R2 = 0 goto %00000425 -000007f9: goto %000004da - -00000425: -0000042d: call R30 with noreturn - -000004da: -000004de: R16 := R2 -000004e3: call R16 with noreturn - -000007fa: sub strlen(strlen_s, strlen_result) -0000081a: strlen_s :: in u64 = R0 -0000081b: 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 +00000301: R1 := 1 +00000309: R2 := R0 +00000311: R0 := R19 +00000316: R30 := 0x830 +00000319: call @memset with return %0000031b + +0000031b: +00000321: R0 := mem[R20 + 0x78, el]:u64 +00000326: R30 := 0x838 +00000329: call @free with return %0000032b + +0000032b: +00000332: R19 := mem[R31 + 0x10, el]:u64 +00000336: R20 := mem[R31 + 0x18, el]:u64 +0000033d: R0 := 0 +00000345: R21 := mem[R31 + 0x20, el]:u64 +0000034f: R29 := mem[R31, el]:u64 +00000353: R30 := mem[R31 + 8, el]:u64 +00000356: R31 := R31 + 0x30 +0000035b: call R30 with noreturn + +0000088d: sub malloc(malloc_size, malloc_result) +000008a7: malloc_size :: in u64 = R0 +000008a8: malloc_result :: out u64 = R0 + +00000274: +000006e3: R16 := 0x20000 +000006eb: R17 := mem[R16 + 0x20, el]:u64 +000006f2: R16 := R16 + 0x20 +000006f7: call R17 with noreturn + +0000088e: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008a9: memcpy_dst :: in out u64 = R0 +000008aa: memcpy_src :: in out u64 = R1 +000008ab: memcpy_n :: in u64 = R2 +000008ac: memcpy_result :: out u64 = R0 + +000002c1: +0000067f: R16 := 0x20000 +00000687: R17 := mem[R16, el]:u64 +0000068e: R16 := R16 +00000693: call R17 with noreturn + +0000088f: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008ad: memset_buf :: in out u64 = R0 +000008ae: memset_c :: in u32 = low:32[R1] +000008af: memset_n :: in u64 = R2 +000008b0: memset_result :: out u64 = R0 + +00000317: +000006fc: R16 := 0x20000 +00000704: R17 := mem[R16 + 0x28, el]:u64 +0000070b: R16 := R16 + 0x28 +00000710: call R17 with noreturn + +00000890: sub puts(puts_s, puts_result) +000008b1: puts_s :: in u64 = R0 +000008b2: puts_result :: out u32 = low:32[R0] + +000002d1: +00000747: R16 := 0x20000 +0000074f: R17 := mem[R16 + 0x40, el]:u64 +00000756: R16 := R16 + 0x40 +0000075b: call R17 with noreturn + +00000891: sub register_tm_clones(register_tm_clones_result) +000008b3: register_tm_clones_result :: out u32 = low:32[R0] + +00000432: +00000436: R0 := 0x20000 +0000043d: R0 := R0 + 0x70 +00000443: R1 := 0x20000 +0000044a: R1 := R1 + 0x70 +00000452: R1 := R1 - R0 +00000459: R2 := R1 >> 0x3F +00000461: R1 := R2 + (R1 ~>> 3) +00000468: R1 := R1 >> 1 +00000474: #73 := R1 = 0 +0000046e: when #73 goto %0000046c +00000892: goto %0000052a + +0000052a: +0000052e: R2 := 0x1F000 +00000536: R2 := mem[R2 + 0xFE0, el]:u64 +00000541: #86 := R2 = 0 +0000053b: when #86 goto %0000046c +00000893: goto %00000544 + +0000046c: +00000479: call R30 with noreturn + +00000544: +0000054a: R16 := R2 +0000054f: call R16 with noreturn + +00000894: sub strlen(strlen_s, strlen_result) +000008b4: strlen_s :: in u64 = R0 +000008b5: strlen_result :: out u64 = R0 + +000002a1: +00000698: R16 := 0x20000 +000006a0: R17 := mem[R16 + 8, el]:u64 +000006a7: R16 := R16 + 8 +000006ac: call R17 with noreturn 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 index 30bb59fe2..52360c68e 100644 --- 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 @@ -137,7 +137,7 @@ Symbol table '.symtab' contains 98 entries: 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 + 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.spec b/src/test/incorrect/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec index c5d06fc4a..afda57a99 100644 --- 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 @@ -5,7 +5,6 @@ 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])" @@ -32,7 +31,6 @@ 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) diff --git a/src/test/make/clang.mk b/src/test/make/clang.mk new file mode 100644 index 000000000..6bbd0c4a6 --- /dev/null +++ b/src/test/make/clang.mk @@ -0,0 +1,2 @@ +CC=$(CLANG) +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..5a99618a9 --- /dev/null +++ b/src/test/make/clang_O2.mk @@ -0,0 +1,3 @@ +CC=$(CLANG) +CFLAGS += -target $(TARGET) -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..701740b58 --- /dev/null +++ b/src/test/make/clang_no_plt_no_pic.mk @@ -0,0 +1,3 @@ +CC=$(CLANG) +CFLAGS += -target $(TARGET) -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..49b498694 --- /dev/null +++ b/src/test/make/clang_pic.mk @@ -0,0 +1,3 @@ +CC=$(CLANG) +CFLAGS += -target $(TARGET) -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 index 7609e9bb3..fba32de4a 100644 --- a/src/test/make/lift-directories.mk +++ b/src/test/make/lift-directories.mk @@ -1,30 +1,34 @@ - .EXPORT_ALL_VARIABLES: NAME=$(shell basename $(PWD)) +GIT_ROOT?=$(shell git rev-parse --show-toplevel) -CC=aarch64-linux-gnu-gcc +GCC ?= aarch64-linux-gnu-gcc +CLANG ?= clang +CC ?= $(GCC) #CFLAGS=-fno-pic -fno-plt TARGET=aarch64-linux-gnu -BAP=bap-aslp -READELF=aarch64-linux-gnu-readelf -BASIL=$(realpath ../../../../target/scala-3.3.1/wptool-boogie-assembly-0.0.1.jar) +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)) +C_SOURCE ?=$(realpath $(wildcard *.c)) +SPEC ?=$(realpath $(wildcard *.spec)) +EXTRA_SPEC ?=$(realpath $(wildcard *.bpl)) BASIL_FLAGS=--boogie-use-lambda-stores -BOOGIE_FLAGS=/proverOpt:O:smt.array.extensional=false +#BOOGIE_FLAGS=/proverOpt:O:smt.array.extensional=false +BOOGIE_FLAGS ?= /useArrayAxioms LIFT_ARTEFACTS=$(NAME).adt $(NAME).bir $(NAME).relf -SUBDIRS := $(wildcard */.) +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 -.PHONY : $(TARGETS) $(SUBDIRS) +TARGETS := all verify clean cleanall cleanlift +.PHONY : $(TARGETS) $(ENABLED_COMPILERS) -$(TARGETS): $(SUBDIRS) +$(TARGETS): $(ENABLED_COMPILERS) -$(SUBDIRS): - -$(MAKE) -C $@ $(MAKECMDGOALS) +$(ENABLED_COMPILERS): + mkdir -p $@/ + -$(MAKE) -C $@/ -f $(GIT_ROOT)/src/test/make/$@.mk $(MAKECMDGOALS) diff --git a/src/test/make/lift.mk b/src/test/make/lift.mk index 76f69a94d..2b27bfb6d 100644 --- a/src/test/make/lift.mk +++ b/src/test/make/lift.mk @@ -1,18 +1,35 @@ +$(LIFT_ARTEFACTS): a.out + $(BAP) a.out -d adt:$(NAME).adt -d bir:$(NAME).bir + $(READELF) -s -r -W a.out > $(NAME).relf -$(NAME).bpl: $(LIFT_ARTEFACTS) + +# optional; create basil +$(NAME).bpl: $(LIFT_ARTEFACTS) $(SPEC) $(BASIL) echo $(BASIL) java -jar $(BASIL) $(BASIL_FLAGS) --adt $(NAME).adt --relf $(NAME).relf -o $(NAME).bpl --spec $(SPEC) -$(LIFT_ARTEFACTS): a.out - $(BAP) a.out -d adt:$(NAME).adt -d bir:$(NAME).bir - $(READELF) -s -r -W a.out > $(NAME).relf +.PHONY=$(BASIL) +$(BASIL): + cd $(GIT_ROOT) && sbt assembly a.out: $(C_SOURCE) $(CC) $(CFLAGS) $(C_SOURCE) -.PHONY=verify -verify: $(NAME)_result.txt +.PHONY=verify clean cleanlift cleanall +verify: $(NAME)_result.txt $(NAME)_result.txt: $(NAME).bpl $(EXTRA_SPEC) - boogie $(NAME).bpl $(EXTRA_SPEC) $(BOOGIE_FLAGS) | tee $(NAME)_result.txt + bash -c "time boogie $(NAME).bpl $(EXTRA_SPEC) $(BOOGIE_FLAGS) | tee $(NAME)_result.txt" + +cleanall: clean cleanlift + +clean: + rm -rf $(NAME).bpl + rm -rf $(NAME)_result.txt + +cleanlift: + rm -rf $(NAME).adt + rm -rf $(NAME).bir + rm -rf $(NAME).relf + rm -rf a.out From a9421e59c61cc0d419d0a706467200b848e91821 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Thu, 4 Jan 2024 17:17:15 +1000 Subject: [PATCH 13/36] allow lifting everything --- src/test/Makefile | 12 ++++++++++++ src/test/make/lift-directories.mk | 12 ++++++++---- src/test/make/lift.mk | 15 ++++++++++----- src/test/readme.md | 29 +++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 src/test/Makefile create mode 100644 src/test/readme.md 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/make/lift-directories.mk b/src/test/make/lift-directories.mk index fba32de4a..1c3ddcf55 100644 --- a/src/test/make/lift-directories.mk +++ b/src/test/make/lift-directories.mk @@ -1,5 +1,9 @@ .EXPORT_ALL_VARIABLES: -NAME=$(shell basename $(PWD)) + +# - lets us continue if it doesnt exist +-include ./config.mk + +NAME=$(notdir $(shell pwd)) GIT_ROOT?=$(shell git rev-parse --show-toplevel) GCC ?= aarch64-linux-gnu-gcc @@ -15,7 +19,7 @@ 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-use-lambda-stores +BASIL_FLAGS ?= --boogie-use-lambda-stores #BOOGIE_FLAGS=/proverOpt:O:smt.array.extensional=false BOOGIE_FLAGS ?= /useArrayAxioms @@ -23,12 +27,12 @@ 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 +TARGETS := all verify clean cleanall cleanlift recompile .PHONY : $(TARGETS) $(ENABLED_COMPILERS) $(TARGETS): $(ENABLED_COMPILERS) $(ENABLED_COMPILERS): mkdir -p $@/ - -$(MAKE) -C $@/ -f $(GIT_ROOT)/src/test/make/$@.mk $(MAKECMDGOALS) + -$(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 index 2b27bfb6d..158a21403 100644 --- a/src/test/make/lift.mk +++ b/src/test/make/lift.mk @@ -2,7 +2,6 @@ $(LIFT_ARTEFACTS): a.out $(BAP) a.out -d adt:$(NAME).adt -d bir:$(NAME).bir $(READELF) -s -r -W a.out > $(NAME).relf - # optional; create basil $(NAME).bpl: $(LIFT_ARTEFACTS) $(SPEC) $(BASIL) echo $(BASIL) @@ -12,18 +11,25 @@ $(NAME).bpl: $(LIFT_ARTEFACTS) $(SPEC) $(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=verify clean cleanlift cleanall +.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 +cleanall: clean cleanlift cleanbin -clean: +cleanbin: + rm -rf a.out + +clean: cleanbin rm -rf $(NAME).bpl rm -rf $(NAME)_result.txt @@ -31,5 +37,4 @@ cleanlift: rm -rf $(NAME).adt rm -rf $(NAME).bir rm -rf $(NAME).relf - rm -rf a.out diff --git a/src/test/readme.md b/src/test/readme.md new file mode 100644 index 000000000..7803c8f00 --- /dev/null +++ b/src/test/readme.md @@ -0,0 +1,29 @@ + +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 +``` + + +Lift all: + +``` +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 +``` + From 4bdc4e5b6cf2e4f97460a61deff93942a32baf4f Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Thu, 4 Jan 2024 17:54:30 +1000 Subject: [PATCH 14/36] cleanup --- .../incorrect/malloc_memcpy_strlen_memset_free/Makefile | 2 -- src/test/make/lift-directories.mk | 7 +++++-- src/test/make/lift.mk | 3 +++ 3 files changed, 8 insertions(+), 4 deletions(-) delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile b/src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile deleted file mode 100644 index 0d238eccc..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -ENABLED_COMPILERS=clang clang_O2 gcc gcc_O2 clang_no_plt_no_pic -include ../../make/lift-directories.mk diff --git a/src/test/make/lift-directories.mk b/src/test/make/lift-directories.mk index 1c3ddcf55..53fd2971a 100644 --- a/src/test/make/lift-directories.mk +++ b/src/test/make/lift-directories.mk @@ -1,10 +1,12 @@ .EXPORT_ALL_VARIABLES: -# - lets us continue if it doesnt exist +# Run from the directory basil/src/test/*/test_case/ + +# - means continue if it doesnt exist -include ./config.mk NAME=$(notdir $(shell pwd)) -GIT_ROOT?=$(shell git rev-parse --show-toplevel) +GIT_ROOT?=$(realpath ../../../../) GCC ?= aarch64-linux-gnu-gcc CLANG ?= clang @@ -34,5 +36,6 @@ $(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 index 158a21403..ef0392496 100644 --- a/src/test/make/lift.mk +++ b/src/test/make/lift.mk @@ -1,3 +1,6 @@ + +# 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 From 28f1aab4506b7249d675c9604747f763befad1e4 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Thu, 4 Jan 2024 18:00:34 +1000 Subject: [PATCH 15/36] add exclusions --- src/test/correct/arrays_simple/config.mk | 1 + src/test/correct/jumptable/config.mk | 1 + src/test/incorrect/iflocal/config.mk | 1 + src/test/incorrect/nestedifglobal/config.mk | 1 + 4 files changed, 4 insertions(+) create mode 100644 src/test/correct/arrays_simple/config.mk create mode 100644 src/test/correct/jumptable/config.mk create mode 100644 src/test/incorrect/iflocal/config.mk create mode 100644 src/test/incorrect/nestedifglobal/config.mk 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/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/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 From 0073c9a0e4dc87d5cd5dc25dbca196635107b7e9 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Thu, 4 Jan 2024 18:01:55 +1000 Subject: [PATCH 16/36] readme --- src/test/readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/readme.md b/src/test/readme.md index 7803c8f00..ba037609a 100644 --- a/src/test/readme.md +++ b/src/test/readme.md @@ -7,9 +7,10 @@ ENABLED_COMPILERS = clang clang_pic gcc gcc_pic ``` -Lift all: +To force recompile and lift all: ``` +make cleanall make ``` From 77aed296e06687c1dac29aca5ef472bbe7b2f082 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Fri, 5 Jan 2024 17:27:16 +1000 Subject: [PATCH 17/36] separate spec and implementation in boogie and coalesce constant memory section into bv64s --- src/main/scala/boogie/BProgram.scala | 8 +-- src/main/scala/ir/Expr.scala | 2 + src/main/scala/ir/IRType.scala | 18 +++++++ src/main/scala/ir/Program.scala | 21 ++++++-- src/main/scala/translating/BAPToIR.scala | 12 +++-- src/main/scala/translating/IRToBoogie.scala | 56 +++++++++++++++++---- src/main/scala/util/BASILConfig.scala | 2 +- 7 files changed, 96 insertions(+), 23 deletions(-) diff --git a/src/main/scala/boogie/BProgram.scala b/src/main/scala/boogie/BProgram.scala index c974f452f..07827e864 100644 --- a/src/main/scala/boogie/BProgram.scala +++ b/src/main/scala/boogie/BProgram.scala @@ -43,12 +43,12 @@ case class BProcedure( override def compare(that: BProcedure): Int = name.compare(that.name) override def toBoogie: List[String] = { val header = s"procedure $attrString$name(${in.map(_.withType).mkString(", ")})" + val implHeader = s"implementation $attrString$name(${in.map(_.withType).mkString(", ")})" val returns = if (out.nonEmpty) { s" returns (${out.map(_.withType).mkString(", ")})" } else { "" } - val semicolon = if body.nonEmpty then "" else ";" val modifiesStr = if (modifies.nonEmpty) { List(s" modifies ${modifies.toSeq.sorted.mkString(", ")};") } else { @@ -65,9 +65,11 @@ case class BProcedure( } else { List() } + List( - header + returns + semicolon - ) ++ modifiesStr ++ requiresStrs ++ freeRequiresStrs ++ ensuresStrs ++ freeEnsuresStrs ++ bodyStr ++ List("") + header + returns + ";" + ) ++ modifiesStr ++ requiresStrs ++ freeRequiresStrs ++ ensuresStrs ++ freeEnsuresStrs++ List("") + ++ (if body.nonEmpty then List(implHeader + returns) ++ bodyStr ++ List("") else List("")) } override def toString: String = toBoogie.mkString("\n") def functionOps: Set[FunctionOp] = diff --git a/src/main/scala/ir/Expr.scala b/src/main/scala/ir/Expr.scala index c86741d2d..58764e30f 100644 --- a/src/main/scala/ir/Expr.scala +++ b/src/main/scala/ir/Expr.scala @@ -147,6 +147,8 @@ sealed trait IntUnOp(op: String) extends UnOp { case object IntNEG extends IntUnOp("-") +case object BVTOINT extends IntUnOp("toint") + sealed trait BVUnOp(op: String) extends UnOp { override def toString: String = op } diff --git a/src/main/scala/ir/IRType.scala b/src/main/scala/ir/IRType.scala index f72a3bf5a..0d8c0a57a 100644 --- a/src/main/scala/ir/IRType.scala +++ b/src/main/scala/ir/IRType.scala @@ -22,3 +22,21 @@ case class BitVecType(size: Int) extends IRType("bv" + size) { case class MapType(param: IRType, result: IRType) extends IRType(s"[$param]$result") { override def toBoogie: BType = MapBType(param.toBoogie, result.toBoogie) } + +def coerceToBool(e: Expr): Expr = { + e.getType match { + case BitVecType(s) => BinaryExpr(BVNEQ, e, BitVecLiteral(0, s)) + case IntType => BinaryExpr(IntNEQ, e, IntLiteral(0)) + case BoolType => e + case MapType(_, _) => ??? + } +} + +def coerceToInt(e: Expr): Expr = { + e.getType match { + case BitVecType(_) => UnaryExpr(BVTOINT, e) + case IntType => e + case BoolType => IntLiteral(1) + case MapType(_, _) => ??? + } +} diff --git a/src/main/scala/ir/Program.scala b/src/main/scala/ir/Program.scala index 3e06a3087..42582933d 100644 --- a/src/main/scala/ir/Program.scala +++ b/src/main/scala/ir/Program.scala @@ -15,21 +15,32 @@ class Program(var procedures: ArrayBuffer[Procedure], var mainProcedure: Procedu var toVisit: mutable.LinkedHashSet[(Int, String)] = mutable.LinkedHashSet((0, mainProcedure.name)) var reachableFound = true - val reachableNames = mutable.HashSet[String]() + val reachableNames = mutable.HashMap[String, Int]() while (toVisit.nonEmpty) { val next = toVisit.head toVisit.remove(next) if (next._1 <= depth) { - reachableNames.addOne(next._2) + + def addName(depth: Int, name: String): Unit = { + val oldDepth = reachableNames.getOrElse(name, Integer.MAX_VALUE) + reachableNames.put(next._2, if depth < oldDepth then depth else oldDepth) + } + addName(next._1, next._2) val callees = procedureCalleeNames(next._2) - toVisit.addAll(callees.diff(reachableNames).map(c => (next._1 + 1, c))) - reachableNames.addAll(callees) + toVisit.addAll(callees.diff(reachableNames.keySet).map(c => (next._1 + 1, c))) + callees.foreach(c => addName(next._1 + 1, c)) } } - procedures = procedures.filter(f => reachableNames.contains(f.name)) + procedures = procedures.filter(f => reachableNames.keySet.contains(f.name)) + + for (elem <- procedures.filter(c => c.calls.exists(s => !procedures.contains(s)))) { + // last layer is analysed only as specifications so we remove the body for anything that calls + // a function we have removed + elem.blocks.clear() + } } def setModifies(specModifies: Map[String, List[String]]): Unit = { diff --git a/src/main/scala/translating/BAPToIR.scala b/src/main/scala/translating/BAPToIR.scala index a601dd43e..67c643fdd 100644 --- a/src/main/scala/translating/BAPToIR.scala +++ b/src/main/scala/translating/BAPToIR.scala @@ -2,7 +2,7 @@ package translating import bap.* import boogie.UnaryBExpr -import ir.{UnaryExpr, *} +import ir.{UnaryExpr, BinaryExpr, *} import specification.* import scala.collection.mutable @@ -143,14 +143,20 @@ class BAPToIR(var program: BAPProgram, mainAddress: Int) { } } + BoolType + /** * Converts a BAPExpr condition that returns a bitvector of size 1 to an Expr condition that returns a Boolean * * If negative is true then the negation of the condition is returned * */ private def convertConditionBool(expr: BAPExpr, negative: Boolean): Expr = { - val op = if negative then BVEQ else BVNEQ - BinaryExpr(op, expr.toIR, BitVecLiteral(0, expr.size)) + val boolExpr = coerceToBool(expr.toIR) + if (negative) { + UnaryExpr(BoolNOT, boolExpr) + } else { + boolExpr + } } private def newBlockCondition(block: Block, target: Block, condition: Expr): Block = { diff --git a/src/main/scala/translating/IRToBoogie.scala b/src/main/scala/translating/IRToBoogie.scala index 6990fc850..4a943e11e 100644 --- a/src/main/scala/translating/IRToBoogie.scala +++ b/src/main/scala/translating/IRToBoogie.scala @@ -39,8 +39,9 @@ class IRToBoogie(var program: Program, var spec: Specification) { def translate(boogieGeneratorConfig: BoogieGeneratorConfig): BProgram = { config = boogieGeneratorConfig - val readOnlyMemoryFunction = readOnlyMemoryPredicate(memoryToCondition(program.readOnlyMemory), mem) - val readOnlyMemory = List(BFunctionCall(readOnlyMemoryFunction.name, List(mem), BoolBType)) + //val readOnlyMemoryFunction = readOnlyMemoryPredicate(memoryToCondition(program.readOnlyMemory), mem) + //val readOnlyMemory = List(BFunctionCall(readOnlyMemoryFunction.name, List(mem), BoolBType)) + val readOnlyMemory = memoryToCondition(program.readOnlyMemory) val procedures = program.procedures.map(f => translateProcedure(f, readOnlyMemory)) val defaultGlobals = List(BVarDecl(mem, List(externAttr)), BVarDecl(Gamma_mem, List(externAttr))) @@ -77,7 +78,7 @@ class IRToBoogie(var program: Program, var spec: Specification) { val functionsUsed4 = functionsUsed3.flatMap(p => p.functionOps).map(p => functionOpToDefinition(p)) val functionsUsed = (functionsUsed2 ++ functionsUsed3 ++ functionsUsed4).toList.sorted - val declarations = globalDecls ++ globalConsts ++ functionsUsed ++ pushUpModifiesFixedPoint(rgProcs ++ procedures) ++ Seq(readOnlyMemoryFunction) + val declarations = globalDecls ++ globalConsts ++ functionsUsed ++ pushUpModifiesFixedPoint(rgProcs ++ procedures) BProgram(declarations) } @@ -375,16 +376,49 @@ class IRToBoogie(var program: Program, var spec: Specification) { } private def memoryToCondition(memory: ArrayBuffer[MemorySection]): List[BExpr] = { - val sections = memory.flatMap { s => - for (b <- s.bytes.indices) yield { - BinaryBExpr( - BVEQ, - BMemoryLoad(mem, BitVecBLiteral(s.address + b, 64), Endian.LittleEndian, 8), - s.bytes(b).toBoogie - ) + + def coalesced(): List[BExpr] = { + val sections = memory.flatMap { s => + // Phrase the memory condition in terms of 64-bit operations, as long as the memory + // region is a multiple of such operations and appropriately aligned + if (s.address % 8 == 0 && s.bytes.size % 8 == 0) { + for (b <- s.bytes.indices by 8) yield { + // Combine the byte constants into a 64-bit value + val sum: BigInt = + (0 until 8).foldLeft(BigInt(0))((x, y) => x + (s.bytes(b + y).value * (BigInt(2).pow(y * 8)))) + BinaryBExpr( + BVEQ, + BMemoryLoad(mem, BitVecBLiteral(s.address + b, 64), Endian.LittleEndian, 64), + BitVecBLiteral(sum, 64) + ) + } + } else { + for (b <- s.bytes.indices) yield { + BinaryBExpr( + BVEQ, + BMemoryLoad(mem, BitVecBLiteral(s.address + b, 64), Endian.LittleEndian, 8), + s.bytes(b).toBoogie + ) + } + } } + sections.toList } - sections.toList + + def bytes(): List[BExpr] = { + val sections = memory.flatMap { s => + for (b <- s.bytes.indices) yield { + BinaryBExpr( + BVEQ, + BMemoryLoad(mem, BitVecBLiteral(s.address + b, 64), Endian.LittleEndian, 8), + s.bytes(b).toBoogie + ) + } + } + sections.toList + } + + if config.coalesceConstantMemory then coalesced() else bytes() } diff --git a/src/main/scala/util/BASILConfig.scala b/src/main/scala/util/BASILConfig.scala index 7889dc56c..09b65e303 100644 --- a/src/main/scala/util/BASILConfig.scala +++ b/src/main/scala/util/BASILConfig.scala @@ -1,7 +1,7 @@ package util case class ILLoadingConfig(adtFile: String, relfFile: String, specFile: Option[String] = None, dumpIL: Option[String] = None, mainProcedureName: String = "main", procedureTrimDepth: Int = Int.MaxValue) -case class BoogieGeneratorConfig(memoryFunctionType: BoogieMemoryAccessMode = BoogieMemoryAccessMode.SuccessiveStoreSelect) +case class BoogieGeneratorConfig(memoryFunctionType: BoogieMemoryAccessMode = BoogieMemoryAccessMode.SuccessiveStoreSelect, coalesceConstantMemory: Boolean = true) case class StaticAnalysisConfig(dumpILToPath: Option[String] = None, analysisResultsPath: Option[String] = None, analysisDotPath: Option[String] = None) enum BoogieMemoryAccessMode: case SuccessiveStoreSelect, LambdaStoreSelect From 388b476e9cb2087138d9b57a766dbd24676ec15f Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Fri, 5 Jan 2024 18:14:51 +1000 Subject: [PATCH 18/36] cleanup --- src/main/scala/boogie/BExpr.scala | 5 ----- src/main/scala/ir/Expr.scala | 1 - src/main/scala/ir/IRType.scala | 9 --------- src/main/scala/translating/BAPToIR.scala | 2 -- 4 files changed, 17 deletions(-) diff --git a/src/main/scala/boogie/BExpr.scala b/src/main/scala/boogie/BExpr.scala index 4e3220763..f0116be7c 100644 --- a/src/main/scala/boogie/BExpr.scala +++ b/src/main/scala/boogie/BExpr.scala @@ -694,8 +694,3 @@ case class L(memory: BMapVar, index: BExpr) extends BExpr { override def globals: Set[BVar] = index.globals override def loads: Set[BExpr] = index.loads } - - - -object BinaryBExpr { -} diff --git a/src/main/scala/ir/Expr.scala b/src/main/scala/ir/Expr.scala index 58764e30f..426f90f3e 100644 --- a/src/main/scala/ir/Expr.scala +++ b/src/main/scala/ir/Expr.scala @@ -147,7 +147,6 @@ sealed trait IntUnOp(op: String) extends UnOp { case object IntNEG extends IntUnOp("-") -case object BVTOINT extends IntUnOp("toint") sealed trait BVUnOp(op: String) extends UnOp { override def toString: String = op diff --git a/src/main/scala/ir/IRType.scala b/src/main/scala/ir/IRType.scala index 0d8c0a57a..2818cdd47 100644 --- a/src/main/scala/ir/IRType.scala +++ b/src/main/scala/ir/IRType.scala @@ -31,12 +31,3 @@ def coerceToBool(e: Expr): Expr = { case MapType(_, _) => ??? } } - -def coerceToInt(e: Expr): Expr = { - e.getType match { - case BitVecType(_) => UnaryExpr(BVTOINT, e) - case IntType => e - case BoolType => IntLiteral(1) - case MapType(_, _) => ??? - } -} diff --git a/src/main/scala/translating/BAPToIR.scala b/src/main/scala/translating/BAPToIR.scala index 67c643fdd..185958850 100644 --- a/src/main/scala/translating/BAPToIR.scala +++ b/src/main/scala/translating/BAPToIR.scala @@ -143,8 +143,6 @@ class BAPToIR(var program: BAPProgram, mainAddress: Int) { } } - BoolType - /** * Converts a BAPExpr condition that returns a bitvector of size 1 to an Expr condition that returns a Boolean * From 7a459a1c3b84966a47f96c7febc4950f544fc5a1 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Fri, 5 Jan 2024 18:19:41 +1000 Subject: [PATCH 19/36] comment --- src/main/scala/translating/IRToBoogie.scala | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/scala/translating/IRToBoogie.scala b/src/main/scala/translating/IRToBoogie.scala index 4a943e11e..2b4cb2fd2 100644 --- a/src/main/scala/translating/IRToBoogie.scala +++ b/src/main/scala/translating/IRToBoogie.scala @@ -39,8 +39,6 @@ class IRToBoogie(var program: Program, var spec: Specification) { def translate(boogieGeneratorConfig: BoogieGeneratorConfig): BProgram = { config = boogieGeneratorConfig - //val readOnlyMemoryFunction = readOnlyMemoryPredicate(memoryToCondition(program.readOnlyMemory), mem) - //val readOnlyMemory = List(BFunctionCall(readOnlyMemoryFunction.name, List(mem), BoolBType)) val readOnlyMemory = memoryToCondition(program.readOnlyMemory) val procedures = program.procedures.map(f => translateProcedure(f, readOnlyMemory)) @@ -106,6 +104,14 @@ class IRToBoogie(var program: Program, var spec: Specification) { List(relyProc, relyTransitive, relyReflexive) } + /** + * A predicate used to assert the value of all readonly memory. + * (Boogie does not like this it if it is too large due to it being a single expression) + * + * E.g. + * val readOnlyMemoryFunction = readOnlyMemoryPredicate(memoryToCondition(program.readOnlyMemory), mem) + * val readOnlyMemory = List(BFunctionCall(readOnlyMemoryFunction.name, List(mem), BoolBType)) + */ private def readOnlyMemoryPredicate(readonly: List[BExpr], mem: BVar) : BFunction = { BFunction("readonly_memory", List(BParam("mem", mem.bType)), BParam(BoolBType), Some(readonly.reduce((a, b) => BinaryBExpr(BoolAND, a, b))), List(externAttr)) } From f23af0e0872ff14d8b18b0aeb25b8fcbfc5b93a6 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Fri, 5 Jan 2024 18:23:59 +1000 Subject: [PATCH 20/36] update expected --- .../clang/arrays_simple.expected | 172 +-- .../clang_O2/arrays_simple.expected | 158 +-- .../arrays_simple.expected | 172 +-- .../clang_pic/arrays_simple.expected | 172 +-- .../gcc_O2/arrays_simple.expected | 158 +-- .../clang/basic_arrays_read.expected | 179 +-- .../clang_O2/basic_arrays_read.expected | 171 +-- .../basic_arrays_read.expected | 179 +-- .../clang_pic/basic_arrays_read.expected | 207 +--- .../gcc/basic_arrays_read.expected | 173 +-- .../gcc_O2/basic_arrays_read.expected | 171 +-- .../basic_arrays_read.expected | 173 +-- .../gcc_pic/basic_arrays_read.expected | 201 +--- .../clang/basic_arrays_write.expected | 181 +-- .../clang_O2/basic_arrays_write.expected | 174 +-- .../basic_arrays_write.expected | 181 +-- .../clang_pic/basic_arrays_write.expected | 209 +--- .../gcc/basic_arrays_write.expected | 179 +-- .../gcc_O2/basic_arrays_write.expected | 174 +-- .../basic_arrays_write.expected | 179 +-- .../gcc_pic/basic_arrays_write.expected | 207 +--- .../clang/basic_assign_assign.expected | 173 +-- .../clang_O2/basic_assign_assign.expected | 173 +-- .../basic_assign_assign.expected | 173 +-- .../clang_pic/basic_assign_assign.expected | 201 +--- .../gcc/basic_assign_assign.expected | 171 +-- .../gcc_O2/basic_assign_assign.expected | 173 +-- .../basic_assign_assign.expected | 171 +-- .../gcc_pic/basic_assign_assign.expected | 199 +-- .../clang/basic_assign_increment.expected | 178 +-- .../clang_O2/basic_assign_increment.expected | 178 +-- .../basic_assign_increment.expected | 178 +-- .../clang_pic/basic_assign_increment.expected | 206 +--- .../gcc/basic_assign_increment.expected | 176 +-- .../gcc_O2/basic_assign_increment.expected | 178 +-- .../basic_assign_increment.expected | 176 +-- .../gcc_pic/basic_assign_increment.expected | 204 +--- .../clang/basic_function_call_caller.expected | 266 ++--- .../basic_function_call_caller.expected | 180 +-- .../basic_function_call_caller.expected | 266 ++--- .../basic_function_call_caller.expected | 356 ++---- .../gcc/basic_function_call_caller.expected | 264 ++-- .../basic_function_call_caller.expected | 180 +-- .../basic_function_call_caller.expected | 264 ++-- .../basic_function_call_caller.expected | 354 ++---- .../clang/basic_function_call_reader.expected | 192 ++- .../basic_function_call_reader.expected | 186 +-- .../basic_function_call_reader.expected | 192 ++- .../basic_function_call_reader.expected | 247 ++-- .../gcc/basic_function_call_reader.expected | 188 ++- .../basic_function_call_reader.expected | 177 +-- .../basic_function_call_reader.expected | 188 ++- .../basic_function_call_reader.expected | 243 ++-- .../clang/basic_lock_read.expected | 192 ++- .../clang_O2/basic_lock_read.expected | 179 +-- .../basic_lock_read.expected | 192 ++- .../clang_pic/basic_lock_read.expected | 247 ++-- .../gcc/basic_lock_read.expected | 188 ++- .../gcc_O2/basic_lock_read.expected | 180 +-- .../basic_lock_read.expected | 188 ++- .../gcc_pic/basic_lock_read.expected | 243 ++-- .../clang/basic_lock_security_read.expected | 192 ++- .../basic_lock_security_read.expected | 186 +-- .../basic_lock_security_read.expected | 192 ++- .../basic_lock_security_read.expected | 247 ++-- .../gcc/basic_lock_security_read.expected | 188 ++- .../gcc_O2/basic_lock_security_read.expected | 180 +-- .../basic_lock_security_read.expected | 188 ++- .../gcc_pic/basic_lock_security_read.expected | 243 ++-- .../clang/basic_lock_security_write.expected | 184 +-- .../basic_lock_security_write.expected | 177 +-- .../basic_lock_security_write.expected | 184 +-- .../basic_lock_security_write.expected | 239 ++-- .../gcc/basic_lock_security_write.expected | 180 +-- .../gcc_O2/basic_lock_security_write.expected | 177 +-- .../basic_lock_security_write.expected | 180 +-- .../basic_lock_security_write.expected | 235 +--- .../clang/basic_lock_unlock.expected | 174 +-- .../clang_O2/basic_lock_unlock.expected | 176 +-- .../basic_lock_unlock.expected | 174 +-- .../clang_pic/basic_lock_unlock.expected | 229 +--- .../gcc/basic_lock_unlock.expected | 172 +-- .../gcc_O2/basic_lock_unlock.expected | 176 +-- .../basic_lock_unlock.expected | 172 +-- .../gcc_pic/basic_lock_unlock.expected | 227 +--- .../clang/basic_loop_assign.expected | 175 +-- .../clang_O2/basic_loop_assign.expected | 175 +-- .../basic_loop_assign.expected | 175 +-- .../clang_pic/basic_loop_assign.expected | 203 +--- .../gcc/basic_loop_assign.expected | 173 +-- .../gcc_O2/basic_loop_assign.expected | 175 +-- .../basic_loop_assign.expected | 173 +-- .../gcc_pic/basic_loop_assign.expected | 201 +--- .../clang/basic_operation_evaluation.expected | 194 ++- .../basic_operation_evaluation.expected | 158 +-- .../basic_operation_evaluation.expected | 194 ++- .../basic_operation_evaluation.expected | 194 ++- .../gcc/basic_operation_evaluation.expected | 186 ++- .../basic_operation_evaluation.expected | 158 +-- .../basic_operation_evaluation.expected | 186 ++- .../basic_operation_evaluation.expected | 186 ++- .../clang/basic_sec_policy_read.expected | 192 ++- .../clang_O2/basic_sec_policy_read.expected | 186 +-- .../basic_sec_policy_read.expected | 192 ++- .../clang_pic/basic_sec_policy_read.expected | 247 ++-- .../gcc/basic_sec_policy_read.expected | 188 ++- .../gcc_O2/basic_sec_policy_read.expected | 180 +-- .../basic_sec_policy_read.expected | 188 ++- .../gcc_pic/basic_sec_policy_read.expected | 243 ++-- .../clang/basic_sec_policy_write.expected | 184 +-- .../clang_O2/basic_sec_policy_write.expected | 179 +-- .../basic_sec_policy_write.expected | 184 +-- .../clang_pic/basic_sec_policy_write.expected | 239 ++-- .../gcc/basic_sec_policy_write.expected | 180 +-- .../gcc_O2/basic_sec_policy_write.expected | 179 +-- .../basic_sec_policy_write.expected | 180 +-- .../gcc_pic/basic_sec_policy_write.expected | 235 +--- .../clang/basicassign_gamma0.expected | 175 +-- .../clang_O2/basicassign_gamma0.expected | 175 +-- .../basicassign_gamma0.expected | 175 +-- .../clang_pic/basicassign_gamma0.expected | 230 +--- .../gcc/basicassign_gamma0.expected | 173 +-- .../gcc_O2/basicassign_gamma0.expected | 175 +-- .../basicassign_gamma0.expected | 173 +-- .../gcc_pic/basicassign_gamma0.expected | 228 +--- .../basicfree/clang/basicfree.expected | 329 ++--- .../basicfree/clang_O2/basicfree.expected | 156 +-- .../clang_no_plt_no_pic/basicfree.expected | 329 ++--- .../basicfree/clang_pic/basicfree.expected | 329 ++--- .../correct/basicfree/gcc/basicfree.expected | 327 ++--- .../basicfree/gcc_O2/basicfree.expected | 156 +-- .../gcc_no_plt_no_pic/basicfree.expected | 327 ++--- .../basicfree/gcc_pic/basicfree.expected | 327 ++--- src/test/correct/cjump/clang/cjump.expected | 188 ++- .../correct/cjump/clang_O2/cjump.expected | 172 +-- .../cjump/clang_no_plt_no_pic/cjump.expected | 188 ++- .../correct/cjump/clang_pic/cjump.expected | 243 ++-- src/test/correct/cjump/gcc/cjump.expected | 180 +-- src/test/correct/cjump/gcc_O2/cjump.expected | 170 +-- .../cjump/gcc_no_plt_no_pic/cjump.expected | 180 +-- src/test/correct/cjump/gcc_pic/cjump.expected | 235 ++-- .../correct/function/clang/function.expected | 256 ++-- .../function/clang_O2/function.expected | 172 +-- .../clang_no_plt_no_pic/function.expected | 256 ++-- .../function/clang_pic/function.expected | 346 ++---- .../correct/function/gcc/function.expected | 255 ++-- .../correct/function/gcc_O2/function.expected | 170 +-- .../gcc_no_plt_no_pic/function.expected | 255 ++-- .../function/gcc_pic/function.expected | 345 ++---- .../function1/clang/function1.expected | 412 ++----- .../function1/clang_O2/function1.expected | 308 ++--- .../clang_no_plt_no_pic/function1.expected | 412 ++----- .../function1/clang_pic/function1.expected | 538 ++------- .../correct/function1/gcc/function1.expected | 344 ++---- .../function1/gcc_O2/function1.expected | 260 ++-- .../gcc_no_plt_no_pic/function1.expected | 344 ++---- .../function1/gcc_pic/function1.expected | 470 ++------ .../clang/functions_with_params.expected | 257 ++-- .../clang_O2/functions_with_params.expected | 158 +-- .../functions_with_params.expected | 257 ++-- .../clang_pic/functions_with_params.expected | 257 ++-- .../gcc/functions_with_params.expected | 255 ++-- .../gcc_O2/functions_with_params.expected | 158 +-- .../functions_with_params.expected | 255 ++-- .../gcc_pic/functions_with_params.expected | 255 ++-- .../ifbranches/clang/ifbranches.expected | 187 ++- .../ifbranches/clang_O2/ifbranches.expected | 170 +-- .../clang_no_plt_no_pic/ifbranches.expected | 187 ++- .../ifbranches/clang_pic/ifbranches.expected | 187 ++- .../ifbranches/gcc/ifbranches.expected | 183 +-- .../ifbranches/gcc_O2/ifbranches.expected | 168 +-- .../gcc_no_plt_no_pic/ifbranches.expected | 183 +-- .../ifbranches/gcc_pic/ifbranches.expected | 183 +-- .../correct/ifglobal/clang/ifglobal.expected | 187 ++- .../ifglobal/clang_O2/ifglobal.expected | 174 +-- .../clang_no_plt_no_pic/ifglobal.expected | 187 ++- .../ifglobal/clang_pic/ifglobal.expected | 215 ++-- .../correct/ifglobal/gcc/ifglobal.expected | 179 +-- .../correct/ifglobal/gcc_O2/ifglobal.expected | 173 +-- .../gcc_no_plt_no_pic/ifglobal.expected | 179 +-- .../ifglobal/gcc_pic/ifglobal.expected | 207 +--- .../clang_O2/indirect_call.expected | 246 +--- .../gcc_O2/indirect_call.expected | 323 ++--- .../clang/initialisation.expected | 219 ++-- .../clang_O2/initialisation.expected | 221 ++-- .../initialisation.expected | 219 ++-- .../clang_pic/initialisation.expected | 325 ++--- .../gcc/initialisation.expected | 207 +--- .../gcc_O2/initialisation.expected | 172 ++- .../gcc_no_plt_no_pic/initialisation.expected | 207 +--- .../gcc_pic/initialisation.expected | 315 ++--- .../jumptable/clang_O2/jumptable.expected | 155 +-- .../jumptable/gcc_O2/jumptable.expected | 395 ++---- .../jumptable3/gcc/jumptable3.expected | 445 ++----- .../jumptable3/gcc_O2/jumptable3.expected | 187 ++- .../gcc_no_plt_no_pic/jumptable3.expected | 445 ++----- .../jumptable3/gcc_pic/jumptable3.expected | 526 +++----- .../clang/malloc_with_local.expected | 1064 +++-------------- .../clang_O2/malloc_with_local.expected | 248 ++-- .../malloc_with_local.expected | 1064 +++-------------- .../clang_pic/malloc_with_local.expected | 1064 +++-------------- .../gcc/malloc_with_local.expected | 412 ++----- .../gcc_O2/malloc_with_local.expected | 252 ++-- .../malloc_with_local.expected | 412 ++----- .../gcc_pic/malloc_with_local.expected | 412 ++----- .../clang/malloc_with_local2.expected | 416 ++----- .../clang_O2/malloc_with_local2.expected | 248 ++-- .../malloc_with_local2.expected | 416 ++----- .../clang_pic/malloc_with_local2.expected | 416 ++----- .../gcc/malloc_with_local2.expected | 412 ++----- .../gcc_O2/malloc_with_local2.expected | 252 ++-- .../malloc_with_local2.expected | 412 ++----- .../gcc_pic/malloc_with_local2.expected | 412 ++----- .../clang/malloc_with_local3.expected | 496 ++------ .../clang_O2/malloc_with_local3.expected | 248 ++-- .../malloc_with_local3.expected | 496 ++------ .../clang_pic/malloc_with_local3.expected | 496 ++------ .../gcc/malloc_with_local3.expected | 492 ++------ .../gcc_O2/malloc_with_local3.expected | 490 ++------ .../malloc_with_local3.expected | 492 ++------ .../gcc_pic/malloc_with_local3.expected | 492 ++------ .../multi_malloc/clang/multi_malloc.expected | 416 ++----- .../clang_O2/multi_malloc.expected | 248 ++-- .../clang_no_plt_no_pic/multi_malloc.expected | 416 ++----- .../clang_pic/multi_malloc.expected | 416 ++----- .../multi_malloc/gcc/multi_malloc.expected | 898 +++----------- .../multi_malloc/gcc_O2/multi_malloc.expected | 523 ++------ .../gcc_no_plt_no_pic/multi_malloc.expected | 898 +++----------- .../gcc_pic/multi_malloc.expected | 898 +++----------- .../correct/nestedif/clang/nestedif.expected | 192 ++- .../nestedif/clang_O2/nestedif.expected | 158 +-- .../clang_no_plt_no_pic/nestedif.expected | 192 ++- .../nestedif/clang_pic/nestedif.expected | 192 ++- .../correct/nestedif/gcc/nestedif.expected | 184 +-- .../correct/nestedif/gcc_O2/nestedif.expected | 158 +-- .../gcc_no_plt_no_pic/nestedif.expected | 184 +-- .../nestedif/gcc_pic/nestedif.expected | 184 +-- .../clang/no_interference_update_x.expected | 174 +-- .../no_interference_update_x.expected | 174 +-- .../no_interference_update_x.expected | 174 +-- .../no_interference_update_x.expected | 202 +--- .../gcc/no_interference_update_x.expected | 172 +-- .../gcc_O2/no_interference_update_x.expected | 174 +-- .../no_interference_update_x.expected | 172 +-- .../gcc_pic/no_interference_update_x.expected | 200 +--- .../clang/no_interference_update_y.expected | 174 +-- .../no_interference_update_y.expected | 174 +-- .../no_interference_update_y.expected | 174 +-- .../no_interference_update_y.expected | 202 +--- .../gcc/no_interference_update_y.expected | 172 +-- .../gcc_O2/no_interference_update_y.expected | 174 +-- .../no_interference_update_y.expected | 172 +-- .../gcc_pic/no_interference_update_y.expected | 200 +--- .../secret_write/clang/secret_write.expected | 184 +-- .../clang_O2/secret_write.expected | 182 +-- .../clang_no_plt_no_pic/secret_write.expected | 184 +-- .../clang_pic/secret_write.expected | 266 ++--- .../secret_write/gcc/secret_write.expected | 180 +-- .../secret_write/gcc_O2/secret_write.expected | 182 +-- .../gcc_no_plt_no_pic/secret_write.expected | 180 +-- .../gcc_pic/secret_write.expected | 262 ++-- .../simple_jump/clang/simple_jump.expected | 184 +-- .../simple_jump/clang_O2/simple_jump.expected | 158 +-- .../clang_no_plt_no_pic/simple_jump.expected | 184 +-- .../clang_pic/simple_jump.expected | 184 +-- .../simple_jump/gcc/simple_jump.expected | 180 +-- .../simple_jump/gcc_O2/simple_jump.expected | 158 +-- .../gcc_no_plt_no_pic/simple_jump.expected | 180 +-- .../simple_jump/gcc_pic/simple_jump.expected | 180 +-- src/test/correct/switch/clang/switch.expected | 186 +-- .../correct/switch/clang_O2/switch.expected | 156 +-- .../clang_no_plt_no_pic/switch.expected | 186 +-- .../correct/switch/clang_pic/switch.expected | 186 +-- src/test/correct/switch/gcc/switch.expected | 182 +-- .../correct/switch/gcc_O2/switch.expected | 156 +-- .../switch/gcc_no_plt_no_pic/switch.expected | 182 +-- .../correct/switch/gcc_pic/switch.expected | 182 +-- .../correct/switch2/clang_O2/switch2.expected | 156 +-- src/test/correct/switch2/gcc/switch2.expected | 280 ++--- .../correct/switch2/gcc_O2/switch2.expected | 156 +-- .../gcc_no_plt_no_pic/switch2.expected | 280 ++--- .../correct/switch2/gcc_pic/switch2.expected | 280 ++--- .../correct/syscall/clang/syscall.expected | 259 ++-- .../clang_no_plt_no_pic/syscall.expected | 259 ++-- .../syscall/clang_pic/syscall.expected | 259 ++-- src/test/correct/syscall/gcc/syscall.expected | 259 ++-- .../correct/syscall/gcc_O2/syscall.expected | 157 +-- .../gcc_no_plt_no_pic/syscall.expected | 259 ++-- .../correct/syscall/gcc_pic/syscall.expected | 259 ++-- .../clang/using_gamma_conditional.expected | 192 ++- .../clang_O2/using_gamma_conditional.expected | 184 +-- .../using_gamma_conditional.expected | 192 ++- .../using_gamma_conditional.expected | 220 ++-- .../gcc/using_gamma_conditional.expected | 182 +-- .../gcc_O2/using_gamma_conditional.expected | 182 +-- .../using_gamma_conditional.expected | 182 +-- .../gcc_pic/using_gamma_conditional.expected | 210 +--- .../clang/using_gamma_write_z.expected | 177 +-- .../clang_O2/using_gamma_write_z.expected | 177 +-- .../using_gamma_write_z.expected | 177 +-- .../clang_pic/using_gamma_write_z.expected | 205 +--- .../gcc/using_gamma_write_z.expected | 175 +-- .../gcc_O2/using_gamma_write_z.expected | 177 +-- .../using_gamma_write_z.expected | 175 +-- .../gcc_pic/using_gamma_write_z.expected | 203 +--- .../basicassign/clang/basicassign.expected | 180 +-- .../basicassign/clang_O2/basicassign.expected | 178 +-- .../clang_no_plt_no_pic/basicassign.expected | 180 +-- .../clang_pic/basicassign.expected | 262 ++-- .../basicassign/gcc/basicassign.expected | 174 +-- .../basicassign/gcc_O2/basicassign.expected | 176 +-- .../gcc_no_plt_no_pic/basicassign.expected | 174 +-- .../basicassign/gcc_pic/basicassign.expected | 256 +--- .../basicassign1/clang/basicassign1.expected | 177 +-- .../clang_O2/basicassign1.expected | 171 +-- .../clang_no_plt_no_pic/basicassign1.expected | 177 +-- .../clang_pic/basicassign1.expected | 232 +--- .../basicassign1/gcc/basicassign1.expected | 173 +-- .../basicassign1/gcc_O2/basicassign1.expected | 171 +-- .../gcc_no_plt_no_pic/basicassign1.expected | 173 +-- .../gcc_pic/basicassign1.expected | 228 +--- .../basicassign2/clang/basicassign2.expected | 172 +-- .../clang_O2/basicassign2.expected | 166 +-- .../clang_no_plt_no_pic/basicassign2.expected | 172 +-- .../clang_pic/basicassign2.expected | 226 +--- .../basicassign2/gcc/basicassign2.expected | 168 +-- .../basicassign2/gcc_O2/basicassign2.expected | 166 +-- .../gcc_no_plt_no_pic/basicassign2.expected | 168 +-- .../gcc_pic/basicassign2.expected | 222 +--- .../basicassign3/clang/basicassign3.expected | 173 +-- .../clang_O2/basicassign3.expected | 167 +-- .../clang_no_plt_no_pic/basicassign3.expected | 173 +-- .../clang_pic/basicassign3.expected | 228 +--- .../basicassign3/gcc/basicassign3.expected | 169 +-- .../basicassign3/gcc_O2/basicassign3.expected | 167 +-- .../gcc_no_plt_no_pic/basicassign3.expected | 169 +-- .../gcc_pic/basicassign3.expected | 224 +--- .../incorrect/iflocal/clang/iflocal.expected | 183 +-- .../clang_no_plt_no_pic/iflocal.expected | 183 +-- .../iflocal/clang_pic/iflocal.expected | 183 +-- .../incorrect/iflocal/gcc/iflocal.expected | 179 +-- .../gcc_no_plt_no_pic/iflocal.expected | 179 +-- .../iflocal/gcc_pic/iflocal.expected | 179 +-- .../clang/nestedifglobal.expected | 194 ++- .../nestedifglobal.expected | 194 ++- .../clang_pic/nestedifglobal.expected | 251 ++-- .../gcc/nestedifglobal.expected | 186 +-- .../gcc_no_plt_no_pic/nestedifglobal.expected | 186 +-- .../gcc_pic/nestedifglobal.expected | 241 ++-- 349 files changed, 23948 insertions(+), 58049 deletions(-) diff --git a/src/test/correct/arrays_simple/clang/arrays_simple.expected b/src/test/correct/arrays_simple/clang/arrays_simple.expected index ca54b2d0a..12465e95f 100644 --- a/src/test/correct/arrays_simple/clang/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang/arrays_simple.expected @@ -1,37 +1,60 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1872bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,145 +63,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1873bv64) == 0bv8); free ensures (memory_load8_le(mem, 1874bv64) == 2bv8); free ensures (memory_load8_le(mem, 1875bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1872bv64) == 1bv8); free requires (memory_load8_le(mem, 1873bv64) == 0bv8); free requires (memory_load8_le(mem, 1874bv64) == 2bv8); free requires (memory_load8_le(mem, 1875bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1872bv64) == 1bv8); free ensures (memory_load8_le(mem, 1873bv64) == 0bv8); free ensures (memory_load8_le(mem, 1874bv64) == 2bv8); free ensures (memory_load8_le(mem, 1875bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -196,3 +132,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 32bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected b/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected index b904c03a5..37b720b0f 100644 --- a/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected @@ -1,13 +1,26 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1840bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -16,146 +29,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1841bv64) == 0bv8); free ensures (memory_load8_le(mem, 1842bv64) == 2bv8); free ensures (memory_load8_le(mem, 1843bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1840bv64) == 1bv8); free requires (memory_load8_le(mem, 1841bv64) == 0bv8); free requires (memory_load8_le(mem, 1842bv64) == 2bv8); free requires (memory_load8_le(mem, 1843bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1840bv64) == 1bv8); free ensures (memory_load8_le(mem, 1841bv64) == 0bv8); free ensures (memory_load8_le(mem, 1842bv64) == 2bv8); free ensures (memory_load8_le(mem, 1843bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected b/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected index ca54b2d0a..12465e95f 100644 --- a/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected @@ -1,37 +1,60 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1872bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,145 +63,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1873bv64) == 0bv8); free ensures (memory_load8_le(mem, 1874bv64) == 2bv8); free ensures (memory_load8_le(mem, 1875bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1872bv64) == 1bv8); free requires (memory_load8_le(mem, 1873bv64) == 0bv8); free requires (memory_load8_le(mem, 1874bv64) == 2bv8); free requires (memory_load8_le(mem, 1875bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1872bv64) == 1bv8); free ensures (memory_load8_le(mem, 1873bv64) == 0bv8); free ensures (memory_load8_le(mem, 1874bv64) == 2bv8); free ensures (memory_load8_le(mem, 1875bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -196,3 +132,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 32bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected b/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected index ca54b2d0a..12465e95f 100644 --- a/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected @@ -1,37 +1,60 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1872bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,145 +63,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1873bv64) == 0bv8); free ensures (memory_load8_le(mem, 1874bv64) == 2bv8); free ensures (memory_load8_le(mem, 1875bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1872bv64) == 1bv8); free requires (memory_load8_le(mem, 1873bv64) == 0bv8); free requires (memory_load8_le(mem, 1874bv64) == 2bv8); free requires (memory_load8_le(mem, 1875bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1872bv64) == 1bv8); free ensures (memory_load8_le(mem, 1873bv64) == 0bv8); free ensures (memory_load8_le(mem, 1874bv64) == 2bv8); free ensures (memory_load8_le(mem, 1875bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -196,3 +132,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 32bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected b/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected index 306991d20..69a6690ea 100644 --- a/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected +++ b/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected @@ -1,13 +1,26 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -16,146 +29,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected index 4bdf41446..8c35ba349 100644 --- a/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected @@ -1,41 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,150 +68,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert true; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -205,3 +144,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected index 053a779de..96f76e4c9 100644 --- a/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected @@ -1,32 +1,50 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -35,148 +53,63 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1849bv64) == 0bv8); free ensures (memory_load8_le(mem, 1850bv64) == 2bv8); free ensures (memory_load8_le(mem, 1851bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert true; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_mem, R0, R8, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1848bv64) == 1bv8); free requires (memory_load8_le(mem, 1849bv64) == 0bv8); free requires (memory_load8_le(mem, 1850bv64) == 2bv8); free requires (memory_load8_le(mem, 1851bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1848bv64) == 1bv8); free ensures (memory_load8_le(mem, 1849bv64) == 0bv8); free ensures (memory_load8_le(mem, 1850bv64) == 2bv8); free ensures (memory_load8_le(mem, 1851bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -189,3 +122,5 @@ procedure main() assume {:captureState "%000002c9"} true; return; } + + diff --git a/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected index 8fa9643f0..230cb1c94 100644 --- a/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected @@ -1,41 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,150 +68,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert true; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -205,3 +144,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected index fe469ac3d..85faf4501 100644 --- a/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected @@ -1,49 +1,70 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,174 +73,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69684bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert true; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1928bv64) == 1bv8); free requires (memory_load8_le(mem, 1929bv64) == 0bv8); free requires (memory_load8_le(mem, 1930bv64) == 2bv8); free requires (memory_load8_le(mem, 1931bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 84bv8); - free requires (memory_load8_le(mem, 69585bv64) == 7bv8); - free requires (memory_load8_le(mem, 69586bv64) == 0bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 80bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 0bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 52bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69684bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1928bv64) == 1bv8); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69684bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -239,3 +154,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected index 39f86e8f0..b868d96ff 100644 --- a/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected @@ -1,35 +1,53 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -38,148 +56,63 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert true; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -196,3 +129,5 @@ procedure main() R0, Gamma_R0 := zero_extend32_32(memory_load32_le(mem, R0)), (gamma_load32(Gamma_mem, R0) || L(mem, R0)); return; } + + diff --git a/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected index 897f29d0a..d1980b408 100644 --- a/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected @@ -1,32 +1,50 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -35,148 +53,63 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert true; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -189,3 +122,5 @@ procedure main() assume {:captureState "%000001b7"} true; return; } + + diff --git a/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected index fe51c2369..dda1ca7b7 100644 --- a/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected @@ -1,35 +1,53 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -38,148 +56,63 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert true; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -196,3 +129,5 @@ procedure main() R0, Gamma_R0 := zero_extend32_32(memory_load32_le(mem, R0)), (gamma_load32(Gamma_mem, R0) || L(mem, R0)); return; } + + diff --git a/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected index b8d3ae1b0..f0ce44631 100644 --- a/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected @@ -1,43 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -46,172 +61,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1925bv64) == 0bv8); free ensures (memory_load8_le(mem, 1926bv64) == 2bv8); free ensures (memory_load8_le(mem, 1927bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert true; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1924bv64) == 1bv8); free requires (memory_load8_le(mem, 1925bv64) == 0bv8); free requires (memory_load8_le(mem, 1926bv64) == 2bv8); free requires (memory_load8_le(mem, 1927bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 84bv8); - free requires (memory_load8_le(mem, 69609bv64) == 7bv8); - free requires (memory_load8_le(mem, 69610bv64) == 0bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 24bv8); - free requires (memory_load8_le(mem, 69617bv64) == 16bv8); - free requires (memory_load8_le(mem, 69618bv64) == 1bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); free ensures (memory_load8_le(mem, 1924bv64) == 1bv8); free ensures (memory_load8_le(mem, 1925bv64) == 0bv8); free ensures (memory_load8_le(mem, 1926bv64) == 2bv8); free ensures (memory_load8_le(mem, 1927bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -230,3 +139,5 @@ procedure main() R0, Gamma_R0 := zero_extend32_32(memory_load32_le(mem, R0)), (gamma_load32(Gamma_mem, R0) || L(mem, R0)); return; } + + diff --git a/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected index 802dd2fd8..5f60576fa 100644 --- a/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected @@ -1,43 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -46,151 +72,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert true; } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var arr$0_old: bv32; lmain: @@ -211,3 +152,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected index 0b0f67500..858d5cfbc 100644 --- a/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected @@ -1,35 +1,56 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -38,149 +59,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert true; } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var arr$0_old: bv32; lmain: @@ -196,3 +132,5 @@ procedure main() assume {:captureState "%000002d4"} true; return; } + + diff --git a/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected index 451345fbe..03de2c6de 100644 --- a/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected @@ -1,43 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -46,151 +72,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert true; } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var arr$0_old: bv32; lmain: @@ -211,3 +152,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected index d97347e01..ae5b0fbdf 100644 --- a/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected @@ -1,51 +1,74 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,175 +77,69 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69684bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert true; } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 84bv8); - free requires (memory_load8_le(mem, 69585bv64) == 7bv8); - free requires (memory_load8_le(mem, 69586bv64) == 0bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 80bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 0bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 52bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69684bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1932bv64) == 1bv8); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69684bv64); + +implementation main() { var arr$0_old: bv32; lmain: @@ -244,3 +161,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected index 633928146..07a72632f 100644 --- a/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected @@ -1,41 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,151 +68,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert true; } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var arr$0_old: bv32; lmain: @@ -209,3 +148,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected index 72ddd2b51..4cf800bec 100644 --- a/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected @@ -1,35 +1,56 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -38,149 +59,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert true; } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var arr$0_old: bv32; lmain: @@ -196,3 +132,5 @@ procedure main() assume {:captureState "%000001be"} true; return; } + + diff --git a/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected index acde06d29..f3cb20481 100644 --- a/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected @@ -1,41 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,151 +68,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert true; } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var arr$0_old: bv32; lmain: @@ -209,3 +148,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected index f49966fbc..69fe351f8 100644 --- a/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected @@ -1,49 +1,70 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,175 +73,69 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert true; } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 84bv8); - free requires (memory_load8_le(mem, 69609bv64) == 7bv8); - free requires (memory_load8_le(mem, 69610bv64) == 0bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 24bv8); - free requires (memory_load8_le(mem, 69617bv64) == 16bv8); - free requires (memory_load8_le(mem, 69618bv64) == 1bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1932bv64) == 1bv8); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { var arr$0_old: bv32; lmain: @@ -242,3 +157,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected index 45d3ed040..f7c86e0c4 100644 --- a/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected @@ -1,34 +1,54 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,150 +57,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures ((memory_load32_le(mem, $x_addr) == 5bv32) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -196,3 +131,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected index 00e811d26..215644ba6 100644 --- a/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected @@ -1,34 +1,54 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,150 +57,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures ((memory_load32_le(mem, $x_addr) == 5bv32) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -196,3 +131,5 @@ procedure main() assume {:captureState "%000002d3"} true; return; } + + diff --git a/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected index 1d38b377b..0edd9791e 100644 --- a/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected @@ -1,34 +1,54 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,150 +57,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures ((memory_load32_le(mem, $x_addr) == 5bv32) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -196,3 +131,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected index 17aef59a5..009cb92b2 100644 --- a/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected @@ -1,42 +1,59 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -45,174 +62,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 52bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 80bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 0bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); ensures ((memory_load32_le(mem, $x_addr) == 5bv32) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + +implementation main() { var x_old: bv32; lmain: @@ -230,3 +141,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected index 238102d1a..11639cc6b 100644 --- a/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected @@ -1,32 +1,50 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -35,150 +53,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures ((memory_load32_le(mem, $x_addr) == 5bv32) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -195,3 +128,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected index 81d8fdece..50f5f35a8 100644 --- a/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected @@ -1,34 +1,54 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,150 +57,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures ((memory_load32_le(mem, $x_addr) == 5bv32) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -196,3 +131,5 @@ procedure main() assume {:captureState "%000001bd"} true; return; } + + diff --git a/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected index 1b1ef4f87..0aa1cbcf1 100644 --- a/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected @@ -1,32 +1,50 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -35,150 +53,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures ((memory_load32_le(mem, $x_addr) == 5bv32) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -195,3 +128,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected index ffd291153..6a2f6e3ec 100644 --- a/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected @@ -1,40 +1,55 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,174 +58,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); ensures ((memory_load32_le(mem, $x_addr) == 5bv32) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { var x_old: bv32; lmain: @@ -228,3 +137,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected index 528931a0f..fc63066b2 100644 --- a/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected @@ -1,40 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,150 +66,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (((memory_load32_le(mem, $x_addr) == 1bv32) || (memory_load32_le(mem, $x_addr) == 5bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -204,3 +142,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected index 68697865d..c9f71c555 100644 --- a/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected @@ -1,40 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,150 +66,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (((memory_load32_le(mem, $x_addr) == 1bv32) || (memory_load32_le(mem, $x_addr) == 5bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -204,3 +142,5 @@ procedure main() assume {:captureState "%000002df"} true; return; } + + diff --git a/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected index fcde38982..9b61474b2 100644 --- a/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected @@ -1,40 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,150 +66,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (((memory_load32_le(mem, $x_addr) == 1bv32) || (memory_load32_le(mem, $x_addr) == 5bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -204,3 +142,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected index 86e9d68ec..46a60c7d6 100644 --- a/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected @@ -1,48 +1,68 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -51,174 +71,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1925bv64) == 0bv8); free ensures (memory_load8_le(mem, 1926bv64) == 2bv8); free ensures (memory_load8_le(mem, 1927bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1924bv64) == 1bv8); free requires (memory_load8_le(mem, 1925bv64) == 0bv8); free requires (memory_load8_le(mem, 1926bv64) == 2bv8); free requires (memory_load8_le(mem, 1927bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 52bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 80bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 0bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); ensures (((memory_load32_le(mem, $x_addr) == 1bv32) || (memory_load32_le(mem, $x_addr) == 5bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1924bv64) == 1bv8); free ensures (memory_load8_le(mem, 1925bv64) == 0bv8); free ensures (memory_load8_le(mem, 1926bv64) == 2bv8); free ensures (memory_load8_le(mem, 1927bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + +implementation main() { var x_old: bv32; lmain: @@ -238,3 +152,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected index 1c13cd862..2d6d99ea5 100644 --- a/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected @@ -1,38 +1,59 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -41,150 +62,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (((memory_load32_le(mem, $x_addr) == 1bv32) || (memory_load32_le(mem, $x_addr) == 5bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -205,3 +141,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected index 07a2894d0..3e4170ab5 100644 --- a/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected @@ -1,40 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,150 +66,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (((memory_load32_le(mem, $x_addr) == 1bv32) || (memory_load32_le(mem, $x_addr) == 5bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -204,3 +142,5 @@ procedure main() assume {:captureState "%000001c5"} true; return; } + + diff --git a/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected index 01ec2e5fb..47d8849ad 100644 --- a/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected @@ -1,38 +1,59 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -41,150 +62,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (((memory_load32_le(mem, $x_addr) == 1bv32) || (memory_load32_le(mem, $x_addr) == 5bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -205,3 +141,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected index 0f73e2bfe..19dd0890f 100644 --- a/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected @@ -1,46 +1,64 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -49,174 +67,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); ensures (((memory_load32_le(mem, $x_addr) == 1bv32) || (memory_load32_le(mem, $x_addr) == 5bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); free ensures (memory_load8_le(mem, 1932bv64) == 1bv8); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { var x_old: bv32; lmain: @@ -239,3 +151,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected index 6c8610d8c..233c4aebc 100644 --- a/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected @@ -1,65 +1,95 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -69,116 +99,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 28bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -187,38 +158,12 @@ procedure main() free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -271,84 +216,33 @@ procedure main() return; } -procedure zero() + +procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 28bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures ((R0[32:0] == 0bv32) && Gamma_R0); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation zero() { lzero: assume {:captureState "lzero"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected index 74d7abc58..a760a6837 100644 --- a/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected @@ -1,43 +1,68 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -47,152 +72,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 28bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_y_old: bool; var x_old: bv32; @@ -222,3 +162,5 @@ procedure main() assume {:captureState "%000002fa"} true; return; } + + diff --git a/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected index 04a6a5d25..c62e7f782 100644 --- a/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected @@ -1,65 +1,95 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -69,116 +99,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 28bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -187,38 +158,12 @@ procedure main() free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -271,84 +216,33 @@ procedure main() return; } -procedure zero() + +procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 28bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures ((R0[32:0] == 0bv32) && Gamma_R0); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation zero() { lzero: assume {:captureState "lzero"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected index 861158d4a..a0c19c8a6 100644 --- a/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected @@ -1,65 +1,95 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -69,148 +99,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 92bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1884bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1968bv64) == 1bv8); free requires (memory_load8_le(mem, 1969bv64) == 0bv8); free requires (memory_load8_le(mem, 1970bv64) == 2bv8); free requires (memory_load8_le(mem, 1971bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 56bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 52bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 92bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1884bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -219,54 +162,14 @@ procedure main() free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 92bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1884bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -323,116 +226,37 @@ procedure main() return; } -procedure zero() + +procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1968bv64) == 1bv8); free requires (memory_load8_le(mem, 1969bv64) == 0bv8); free requires (memory_load8_le(mem, 1970bv64) == 2bv8); free requires (memory_load8_le(mem, 1971bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 56bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 52bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 92bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1884bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); ensures ((R0[32:0] == 0bv32) && Gamma_R0); free ensures (memory_load8_le(mem, 1968bv64) == 1bv8); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 92bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1884bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation zero() { lzero: assume {:captureState "lzero"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected index d350182f1..488fafd5b 100644 --- a/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected @@ -1,63 +1,91 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,116 +95,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1900bv64) == 1bv8); free requires (memory_load8_le(mem, 1901bv64) == 0bv8); free requires (memory_load8_le(mem, 1902bv64) == 2bv8); free requires (memory_load8_le(mem, 1903bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 28bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -185,38 +154,12 @@ procedure main() free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -269,84 +212,33 @@ procedure main() return; } -procedure zero() + +procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1900bv64) == 1bv8); free requires (memory_load8_le(mem, 1901bv64) == 0bv8); free requires (memory_load8_le(mem, 1902bv64) == 2bv8); free requires (memory_load8_le(mem, 1903bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 28bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures ((R0[32:0] == 0bv32) && Gamma_R0); free ensures (memory_load8_le(mem, 1900bv64) == 1bv8); free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation zero() { lzero: assume {:captureState "lzero"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected index 0d135f9f8..3b197b348 100644 --- a/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected @@ -1,43 +1,68 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R3: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} R3: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -47,152 +72,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_y_old: bool; var x_old: bv32; @@ -222,3 +162,5 @@ procedure main() assume {:captureState "%000001df"} true; return; } + + diff --git a/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected index 39a811b3e..6df1f935e 100644 --- a/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected @@ -1,63 +1,91 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,116 +95,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1900bv64) == 1bv8); free requires (memory_load8_le(mem, 1901bv64) == 0bv8); free requires (memory_load8_le(mem, 1902bv64) == 2bv8); free requires (memory_load8_le(mem, 1903bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 28bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -185,38 +154,12 @@ procedure main() free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -269,84 +212,33 @@ procedure main() return; } -procedure zero() + +procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1900bv64) == 1bv8); free requires (memory_load8_le(mem, 1901bv64) == 0bv8); free requires (memory_load8_le(mem, 1902bv64) == 2bv8); free requires (memory_load8_le(mem, 1903bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 28bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures ((R0[32:0] == 0bv32) && Gamma_R0); free ensures (memory_load8_le(mem, 1900bv64) == 1bv8); free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation zero() { lzero: assume {:captureState "lzero"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected index 75e7e00b2..1c14ce915 100644 --- a/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected @@ -1,63 +1,91 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,148 +95,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 92bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1884bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); free requires (memory_load8_le(mem, 1967bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 92bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1884bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -217,54 +158,14 @@ procedure main() free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 92bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1884bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -319,116 +220,37 @@ procedure main() return; } -procedure zero() + +procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); free requires (memory_load8_le(mem, 1967bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 92bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1884bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); ensures ((R0[32:0] == 0bv32) && Gamma_R0); free ensures (memory_load8_le(mem, 1964bv64) == 1bv8); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 92bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1884bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation zero() { lzero: assume {:captureState "lzero"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected index e7add125d..0d690be23 100644 --- a/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected @@ -1,51 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -55,153 +88,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1909bv64) == 0bv8); free ensures (memory_load8_le(mem, 1910bv64) == 2bv8); free ensures (memory_load8_le(mem, 1911bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); ensures (old(gamma_load32(Gamma_mem, $y_addr)) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1908bv64) == 1bv8); free requires (memory_load8_le(mem, 1909bv64) == 0bv8); free requires (memory_load8_le(mem, 1910bv64) == 2bv8); free requires (memory_load8_le(mem, 1911bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1908bv64) == 1bv8); free ensures (memory_load8_le(mem, 1909bv64) == 0bv8); free ensures (memory_load8_le(mem, 1910bv64) == 2bv8); free ensures (memory_load8_le(mem, 1911bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -271,7 +219,7 @@ procedure main() goto l00000342; lmain_goto_l00000345: assume {:captureState "lmain_goto_l00000345"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000345; l00000348_goto_l00000350: assume {:captureState "l00000348_goto_l00000350"} true; @@ -279,6 +227,8 @@ procedure main() goto l00000350; l00000348_goto_l0000037a: assume {:captureState "l00000348_goto_l0000037a"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000037a; } + + diff --git a/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected index 49025abea..8f91a71a4 100644 --- a/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected @@ -1,41 +1,70 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -45,151 +74,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); ensures (old(gamma_load32(Gamma_mem, $y_addr)) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -233,6 +177,8 @@ procedure main() goto l000002f9; lmain_goto_l000002fd: assume {:captureState "lmain_goto_l000002fd"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000002fd; } + + diff --git a/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected index 80fd49730..a43e397ee 100644 --- a/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected @@ -1,51 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -55,153 +88,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1909bv64) == 0bv8); free ensures (memory_load8_le(mem, 1910bv64) == 2bv8); free ensures (memory_load8_le(mem, 1911bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); ensures (old(gamma_load32(Gamma_mem, $y_addr)) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1908bv64) == 1bv8); free requires (memory_load8_le(mem, 1909bv64) == 0bv8); free requires (memory_load8_le(mem, 1910bv64) == 2bv8); free requires (memory_load8_le(mem, 1911bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1908bv64) == 1bv8); free ensures (memory_load8_le(mem, 1909bv64) == 0bv8); free ensures (memory_load8_le(mem, 1910bv64) == 2bv8); free ensures (memory_load8_le(mem, 1911bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -271,7 +219,7 @@ procedure main() goto l00000985; lmain_goto_l00000988: assume {:captureState "lmain_goto_l00000988"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000988; l0000098b_goto_l00000993: assume {:captureState "l0000098b_goto_l00000993"} true; @@ -279,6 +227,8 @@ procedure main() goto l00000993; l0000098b_goto_l000009bd: assume {:captureState "l0000098b_goto_l000009bd"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l000009bd; } + + diff --git a/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected index 4ade8ab46..d786dee05 100644 --- a/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected @@ -1,59 +1,89 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -63,201 +93,74 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1981bv64) == 0bv8); free ensures (memory_load8_le(mem, 1982bv64) == 2bv8); free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); ensures (old(gamma_load32(Gamma_mem, $y_addr)) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1980bv64) == 1bv8); free requires (memory_load8_le(mem, 1981bv64) == 0bv8); free requires (memory_load8_le(mem, 1982bv64) == 2bv8); free requires (memory_load8_le(mem, 1983bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 52bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 56bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1980bv64) == 1bv8); free ensures (memory_load8_le(mem, 1981bv64) == 0bv8); free ensures (memory_load8_le(mem, 1982bv64) == 2bv8); free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -331,7 +234,7 @@ procedure main() goto l00000358; lmain_goto_l0000035b: assume {:captureState "lmain_goto_l0000035b"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000035b; l0000035e_goto_l00000366: assume {:captureState "l0000035e_goto_l00000366"} true; @@ -339,6 +242,8 @@ procedure main() goto l00000366; l0000035e_goto_l00000390: assume {:captureState "l0000035e_goto_l00000390"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000390; } + + diff --git a/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected index f9c7deafc..b2fd1e97e 100644 --- a/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected @@ -1,49 +1,80 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -53,153 +84,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); ensures (old(gamma_load32(Gamma_mem, $y_addr)) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -249,6 +195,8 @@ procedure main() goto l00000332; lmain_goto_l00000349: assume {:captureState "lmain_goto_l00000349"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000349; } + + diff --git a/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected index ad0366224..cd2568642 100644 --- a/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected @@ -1,32 +1,52 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -36,151 +56,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); ensures (old(gamma_load32(Gamma_mem, $y_addr)) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -204,6 +139,8 @@ procedure main() goto l000001bc; lmain_goto_l00000398: assume {:captureState "lmain_goto_l00000398"} true; - assume (bvcomp32(R0[32:0], 0bv32) == 0bv1); + assume (!(bvcomp32(R0[32:0], 0bv32) != 0bv1)); goto l00000398; } + + diff --git a/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected index d417cea69..c5c2855aa 100644 --- a/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected @@ -1,49 +1,80 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -53,153 +84,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); ensures (old(gamma_load32(Gamma_mem, $y_addr)) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -249,6 +195,8 @@ procedure main() goto l00000937; lmain_goto_l0000094e: assume {:captureState "lmain_goto_l0000094e"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000094e; } + + diff --git a/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected index 60dcad679..6259a4616 100644 --- a/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected @@ -1,57 +1,85 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -61,201 +89,74 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); ensures (old(gamma_load32(Gamma_mem, $y_addr)) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1956bv64) == 1bv8); free requires (memory_load8_le(mem, 1957bv64) == 0bv8); free requires (memory_load8_le(mem, 1958bv64) == 2bv8); free requires (memory_load8_le(mem, 1959bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1956bv64) == 1bv8); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -307,6 +208,8 @@ procedure main() goto l00000334; lmain_goto_l0000034b: assume {:captureState "lmain_goto_l0000034b"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000034b; } + + diff --git a/src/test/correct/basic_lock_read/clang/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang/basic_lock_read.expected index 9a12d05e8..f745e34a2 100644 --- a/src/test/correct/basic_lock_read/clang/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang/basic_lock_read.expected @@ -1,51 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,112 +87,53 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1900bv64) == 1bv8); free requires (memory_load8_le(mem, 1901bv64) == 0bv8); free requires (memory_load8_le(mem, 1902bv64) == 2bv8); free requires (memory_load8_le(mem, 1903bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (R0[32:0] == 0bv32); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); @@ -167,38 +141,12 @@ procedure main() free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -269,7 +217,7 @@ procedure main() goto l0000032d; lmain_goto_l00000330: assume {:captureState "lmain_goto_l00000330"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000330; l00000333_goto_l0000033b: assume {:captureState "l00000333_goto_l0000033b"} true; @@ -277,6 +225,8 @@ procedure main() goto l0000033b; l00000333_goto_l00000352: assume {:captureState "l00000333_goto_l00000352"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000352; } + + diff --git a/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected index cddb678c2..762b92ce7 100644 --- a/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected @@ -1,40 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,149 +65,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_mem, R0, R8, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (R0[32:0] == 0bv32); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var z_old: bv32; lmain: @@ -216,6 +153,8 @@ procedure main() goto l000002dc; lmain_goto_l000002f7: assume {:captureState "lmain_goto_l000002f7"} true; - assume (bvcomp32(R8[32:0], 0bv32) == 0bv1); + assume (!(bvcomp32(R8[32:0], 0bv32) != 0bv1)); goto l000002f7; } + + diff --git a/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected index 31eb2d168..dbda022fa 100644 --- a/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected @@ -1,51 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,112 +87,53 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1900bv64) == 1bv8); free requires (memory_load8_le(mem, 1901bv64) == 0bv8); free requires (memory_load8_le(mem, 1902bv64) == 2bv8); free requires (memory_load8_le(mem, 1903bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (R0[32:0] == 0bv32); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); @@ -167,38 +141,12 @@ procedure main() free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -269,7 +217,7 @@ procedure main() goto l00000958; lmain_goto_l0000095b: assume {:captureState "lmain_goto_l0000095b"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000095b; l0000095e_goto_l00000966: assume {:captureState "l0000095e_goto_l00000966"} true; @@ -277,6 +225,8 @@ procedure main() goto l00000966; l0000095e_goto_l0000097d: assume {:captureState "l0000095e_goto_l0000097d"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000097d; } + + diff --git a/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected index e7ccaa507..f191f5764 100644 --- a/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected @@ -1,59 +1,89 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,144 +92,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1973bv64) == 0bv8); free ensures (memory_load8_le(mem, 1974bv64) == 2bv8); free ensures (memory_load8_le(mem, 1975bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1972bv64) == 1bv8); free requires (memory_load8_le(mem, 1973bv64) == 0bv8); free requires (memory_load8_le(mem, 1974bv64) == 2bv8); free requires (memory_load8_le(mem, 1975bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 56bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 52bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); ensures (R0[32:0] == 0bv32); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); @@ -207,54 +150,14 @@ procedure main() free ensures (memory_load8_le(mem, 1973bv64) == 0bv8); free ensures (memory_load8_le(mem, 1974bv64) == 2bv8); free ensures (memory_load8_le(mem, 1975bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -329,7 +232,7 @@ procedure main() goto l0000033c; lmain_goto_l0000033f: assume {:captureState "lmain_goto_l0000033f"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000033f; l00000342_goto_l0000034a: assume {:captureState "l00000342_goto_l0000034a"} true; @@ -337,6 +240,8 @@ procedure main() goto l0000034a; l00000342_goto_l00000361: assume {:captureState "l00000342_goto_l00000361"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000361; } + + diff --git a/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected index f3d1f915f..8f1678d7d 100644 --- a/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected @@ -1,49 +1,80 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,112 +83,53 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1900bv64) == 1bv8); free requires (memory_load8_le(mem, 1901bv64) == 0bv8); free requires (memory_load8_le(mem, 1902bv64) == 2bv8); free requires (memory_load8_le(mem, 1903bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (R0[32:0] == 0bv32); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); @@ -165,38 +137,12 @@ procedure main() free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -253,6 +199,8 @@ procedure main() goto l00000327; lmain_goto_l0000033e: assume {:captureState "lmain_goto_l0000033e"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000033e; } + + diff --git a/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected index 269cc87f0..0409be947 100644 --- a/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected @@ -1,41 +1,64 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,149 +67,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (R0[32:0] == 0bv32); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var z_old: bv32; lmain: @@ -216,6 +154,8 @@ procedure main() goto l000001bd; lmain_goto_l0000039c: assume {:captureState "lmain_goto_l0000039c"} true; - assume (bvnot1(bvcomp32(R0[32:0], 0bv32)) == 0bv1); + assume (!(bvnot1(bvcomp32(R0[32:0], 0bv32)) != 0bv1)); goto l0000039c; } + + diff --git a/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected index 9156594f7..dfa99cd61 100644 --- a/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected @@ -1,49 +1,80 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,112 +83,53 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1900bv64) == 1bv8); free requires (memory_load8_le(mem, 1901bv64) == 0bv8); free requires (memory_load8_le(mem, 1902bv64) == 2bv8); free requires (memory_load8_le(mem, 1903bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (R0[32:0] == 0bv32); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); @@ -165,38 +137,12 @@ procedure main() free ensures (memory_load8_le(mem, 1901bv64) == 0bv8); free ensures (memory_load8_le(mem, 1902bv64) == 2bv8); free ensures (memory_load8_le(mem, 1903bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -253,6 +199,8 @@ procedure main() goto l00000948; lmain_goto_l0000095f: assume {:captureState "lmain_goto_l0000095f"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000095f; } + + diff --git a/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected index 6146649e8..e38ffc55b 100644 --- a/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected @@ -1,57 +1,85 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -60,144 +88,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); free requires (memory_load8_le(mem, 1967bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 24bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); ensures (R0[32:0] == 0bv32); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); @@ -205,54 +146,14 @@ procedure main() free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -312,6 +213,8 @@ procedure main() goto l00000328; lmain_goto_l0000033f: assume {:captureState "lmain_goto_l0000033f"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000033f; } + + diff --git a/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected index 09f70f03f..a73dd8abc 100644 --- a/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected @@ -1,51 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,150 +87,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -261,7 +209,7 @@ procedure main() goto l00000329; lmain_goto_l0000032c: assume {:captureState "lmain_goto_l0000032c"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000032c; l0000032f_goto_l00000337: assume {:captureState "l0000032f_goto_l00000337"} true; @@ -269,6 +217,8 @@ procedure main() goto l00000337; l0000032f_goto_l0000034e: assume {:captureState "l0000032f_goto_l0000034e"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000034e; } + + diff --git a/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected index a2f10d1ca..33c3d9776 100644 --- a/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected @@ -1,41 +1,70 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,148 +73,63 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -229,6 +173,8 @@ procedure main() goto l000002fa; lmain_goto_l000002fd: assume {:captureState "lmain_goto_l000002fd"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000002fd; } + + diff --git a/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected index d4c28b724..83f3447d7 100644 --- a/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected @@ -1,51 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,150 +87,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -261,7 +209,7 @@ procedure main() goto l00000947; lmain_goto_l0000094a: assume {:captureState "lmain_goto_l0000094a"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000094a; l0000094d_goto_l00000955: assume {:captureState "l0000094d_goto_l00000955"} true; @@ -269,6 +217,8 @@ procedure main() goto l00000955; l0000094d_goto_l0000096c: assume {:captureState "l0000094d_goto_l0000096c"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000096c; } + + diff --git a/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected index 0b25229ee..52dfa944e 100644 --- a/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected @@ -1,59 +1,89 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,198 +92,71 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1968bv64) == 1bv8); free requires (memory_load8_le(mem, 1969bv64) == 0bv8); free requires (memory_load8_le(mem, 1970bv64) == 2bv8); free requires (memory_load8_le(mem, 1971bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 56bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 52bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1968bv64) == 1bv8); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -321,7 +224,7 @@ procedure main() goto l00000338; lmain_goto_l0000033b: assume {:captureState "lmain_goto_l0000033b"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000033b; l0000033e_goto_l00000346: assume {:captureState "l0000033e_goto_l00000346"} true; @@ -329,6 +232,8 @@ procedure main() goto l00000346; l0000033e_goto_l0000035d: assume {:captureState "l0000033e_goto_l0000035d"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000035d; } + + diff --git a/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected index 634a9333e..a0af0f055 100644 --- a/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected @@ -1,49 +1,80 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,150 +83,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1888bv64) == 1bv8); free requires (memory_load8_le(mem, 1889bv64) == 0bv8); free requires (memory_load8_le(mem, 1890bv64) == 2bv8); free requires (memory_load8_le(mem, 1891bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1888bv64) == 1bv8); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -243,6 +189,8 @@ procedure main() goto l0000031b; lmain_goto_l00000332: assume {:captureState "lmain_goto_l00000332"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000332; } + + diff --git a/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected index e439d3e8c..4cd245df7 100644 --- a/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected @@ -1,35 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -38,148 +61,63 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -204,6 +142,8 @@ procedure main() goto l000001c2; lmain_goto_l0000039c: assume {:captureState "lmain_goto_l0000039c"} true; - assume (bvnot1(bvcomp32(R1[32:0], 0bv32)) == 0bv1); + assume (!(bvnot1(bvcomp32(R1[32:0], 0bv32)) != 0bv1)); goto l0000039c; } + + diff --git a/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected index 2a17426c5..83ed62450 100644 --- a/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected @@ -1,49 +1,80 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,150 +83,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1888bv64) == 1bv8); free requires (memory_load8_le(mem, 1889bv64) == 0bv8); free requires (memory_load8_le(mem, 1890bv64) == 2bv8); free requires (memory_load8_le(mem, 1891bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1888bv64) == 1bv8); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -243,6 +189,8 @@ procedure main() goto l00000918; lmain_goto_l0000092f: assume {:captureState "lmain_goto_l0000092f"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000092f; } + + diff --git a/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected index 32ac0823c..80d7f3031 100644 --- a/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected @@ -1,57 +1,85 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -60,198 +88,71 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); free ensures (memory_load8_le(mem, 1955bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1952bv64) == 1bv8); free requires (memory_load8_le(mem, 1953bv64) == 0bv8); free requires (memory_load8_le(mem, 1954bv64) == 2bv8); free requires (memory_load8_le(mem, 1955bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 24bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1952bv64) == 1bv8); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); free ensures (memory_load8_le(mem, 1955bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -301,6 +202,8 @@ procedure main() goto l0000031c; lmain_goto_l00000333: assume {:captureState "lmain_goto_l00000333"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000333; } + + diff --git a/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected index f2f05a0b1..40e856fd5 100644 --- a/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected @@ -1,47 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -50,152 +79,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1885bv64) == 0bv8); free ensures (memory_load8_le(mem, 1886bv64) == 2bv8); free ensures (memory_load8_le(mem, 1887bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1884bv64) == 1bv8); free requires (memory_load8_le(mem, 1885bv64) == 0bv8); free requires (memory_load8_le(mem, 1886bv64) == 2bv8); free requires (memory_load8_le(mem, 1887bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1884bv64) == 1bv8); free ensures (memory_load8_le(mem, 1885bv64) == 0bv8); free ensures (memory_load8_le(mem, 1886bv64) == 2bv8); free ensures (memory_load8_le(mem, 1887bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; var x_old: bv32; @@ -249,3 +193,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected index dd56def9f..9883c8b19 100644 --- a/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected @@ -1,40 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,150 +65,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $z_addr) != 0bv32); requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; var x_old: bv32; @@ -216,3 +153,5 @@ procedure main() assume {:captureState "%000002dd"} true; return; } + + diff --git a/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected index f38c4c74d..50e0c9303 100644 --- a/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected @@ -1,47 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -50,152 +79,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1885bv64) == 0bv8); free ensures (memory_load8_le(mem, 1886bv64) == 2bv8); free ensures (memory_load8_le(mem, 1887bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1884bv64) == 1bv8); free requires (memory_load8_le(mem, 1885bv64) == 0bv8); free requires (memory_load8_le(mem, 1886bv64) == 2bv8); free requires (memory_load8_le(mem, 1887bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1884bv64) == 1bv8); free ensures (memory_load8_le(mem, 1885bv64) == 0bv8); free ensures (memory_load8_le(mem, 1886bv64) == 2bv8); free ensures (memory_load8_le(mem, 1887bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; var x_old: bv32; @@ -249,3 +193,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected index f99743610..6fb692a58 100644 --- a/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected @@ -1,55 +1,81 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -58,200 +84,73 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1956bv64) == 1bv8); free requires (memory_load8_le(mem, 1957bv64) == 0bv8); free requires (memory_load8_le(mem, 1958bv64) == 2bv8); free requires (memory_load8_le(mem, 1959bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 56bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 52bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1956bv64) == 1bv8); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var Gamma_x_old: bool; var x_old: bv32; @@ -309,3 +208,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected index ba5c4d59d..adf21c4a2 100644 --- a/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected @@ -1,43 +1,68 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -46,152 +71,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1909bv64) == 0bv8); free ensures (memory_load8_le(mem, 1910bv64) == 2bv8); free ensures (memory_load8_le(mem, 1911bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1908bv64) == 1bv8); free requires (memory_load8_le(mem, 1909bv64) == 0bv8); free requires (memory_load8_le(mem, 1910bv64) == 2bv8); free requires (memory_load8_le(mem, 1911bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1908bv64) == 1bv8); free ensures (memory_load8_le(mem, 1909bv64) == 0bv8); free ensures (memory_load8_le(mem, 1910bv64) == 2bv8); free ensures (memory_load8_le(mem, 1911bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; var x_old: bv32; @@ -251,3 +191,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected index 4bbaa34c0..8c1b393cb 100644 --- a/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected @@ -1,40 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,150 +65,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (memory_load32_le(mem, $z_addr) != 0bv32); requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; var x_old: bv32; @@ -216,3 +153,5 @@ procedure main() assume {:captureState "%000001c4"} true; return; } + + diff --git a/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected index b374205cf..fa4c6c647 100644 --- a/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected @@ -1,43 +1,68 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -46,152 +71,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1909bv64) == 0bv8); free ensures (memory_load8_le(mem, 1910bv64) == 2bv8); free ensures (memory_load8_le(mem, 1911bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1908bv64) == 1bv8); free requires (memory_load8_le(mem, 1909bv64) == 0bv8); free requires (memory_load8_le(mem, 1910bv64) == 2bv8); free requires (memory_load8_le(mem, 1911bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1908bv64) == 1bv8); free ensures (memory_load8_le(mem, 1909bv64) == 0bv8); free ensures (memory_load8_le(mem, 1910bv64) == 2bv8); free ensures (memory_load8_le(mem, 1911bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; var x_old: bv32; @@ -251,3 +191,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected index cb4b9c8ca..ff437f2ea 100644 --- a/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected @@ -1,51 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,200 +76,73 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1973bv64) == 0bv8); free ensures (memory_load8_le(mem, 1974bv64) == 2bv8); free ensures (memory_load8_le(mem, 1975bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1972bv64) == 1bv8); free requires (memory_load8_le(mem, 1973bv64) == 0bv8); free requires (memory_load8_le(mem, 1974bv64) == 2bv8); free requires (memory_load8_le(mem, 1975bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 24bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1972bv64) == 1bv8); free ensures (memory_load8_le(mem, 1973bv64) == 0bv8); free ensures (memory_load8_le(mem, 1974bv64) == 2bv8); free ensures (memory_load8_le(mem, 1975bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var Gamma_x_old: bool; var x_old: bv32; @@ -311,3 +206,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected index 52936b563..19468d72d 100644 --- a/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected @@ -1,36 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,149 +60,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; var z_old: bv32; @@ -207,3 +143,5 @@ procedure main() assume {:captureState "%000002e7"} true; return; } + + diff --git a/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected index d052faebb..7757c16f7 100644 --- a/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected @@ -1,38 +1,61 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -41,149 +64,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; var z_old: bv32; @@ -209,3 +147,5 @@ procedure main() assume {:captureState "%000002e7"} true; return; } + + diff --git a/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected index 934a892e7..b40fb521c 100644 --- a/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected @@ -1,36 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,149 +60,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; var z_old: bv32; @@ -207,3 +143,5 @@ procedure main() assume {:captureState "%00000876"} true; return; } + + diff --git a/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected index 1b825317d..67c83f919 100644 --- a/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected @@ -1,44 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -47,197 +65,70 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 52bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 56bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (memory_load8_le(mem, 1932bv64) == 1bv8); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var x_old: bv32; var z_old: bv32; @@ -267,3 +158,5 @@ procedure main() assume {:captureState "%000002fd"} true; return; } + + diff --git a/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected index 45c3f0f16..d5900c857 100644 --- a/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected @@ -1,34 +1,53 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,149 +56,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; var z_old: bv32; @@ -207,3 +141,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected index 4bb063905..2939f21a1 100644 --- a/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected @@ -1,38 +1,61 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R3: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} R3: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -41,149 +64,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; var z_old: bv32; @@ -209,3 +147,5 @@ procedure main() assume {:captureState "%000001ca"} true; return; } + + diff --git a/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected index 7de6a308f..fc568717c 100644 --- a/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected @@ -1,34 +1,53 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,149 +56,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; var z_old: bv32; @@ -207,3 +141,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected index e7f59e5d7..520ea186a 100644 --- a/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected @@ -1,42 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -45,197 +61,70 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 24bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (memory_load8_le(mem, 1932bv64) == 1bv8); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var x_old: bv32; var z_old: bv32; @@ -265,3 +154,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected index 1702ab871..02d680b8c 100644 --- a/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected @@ -1,36 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,150 +61,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures ((memory_load32_le(mem, $x_addr) == 20bv32) || (memory_load32_le(mem, $x_addr) == 21bv32)); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -198,3 +135,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected index 8031b1142..c44f02db2 100644 --- a/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected @@ -1,36 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,150 +61,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures ((memory_load32_le(mem, $x_addr) == 20bv32) || (memory_load32_le(mem, $x_addr) == 21bv32)); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -198,3 +135,5 @@ procedure main() assume {:captureState "%000002d3"} true; return; } + + diff --git a/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected index 45a841343..9d0d1ef68 100644 --- a/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected @@ -1,36 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,150 +61,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures ((memory_load32_le(mem, $x_addr) == 20bv32) || (memory_load32_le(mem, $x_addr) == 21bv32)); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -198,3 +135,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected index 9c2937fd7..8c6ec002a 100644 --- a/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected @@ -1,44 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); + 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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -47,174 +66,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 52bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 80bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 0bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); ensures ((memory_load32_le(mem, $x_addr) == 20bv32) || (memory_load32_le(mem, $x_addr) == 21bv32)); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + +implementation main() { var x_old: bv32; lmain: @@ -232,3 +145,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected index 55d86092d..0eff402b1 100644 --- a/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected @@ -1,34 +1,54 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,150 +57,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures ((memory_load32_le(mem, $x_addr) == 20bv32) || (memory_load32_le(mem, $x_addr) == 21bv32)); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -197,3 +132,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected index 8a5abed56..4ed4cb62d 100644 --- a/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected @@ -1,36 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,150 +61,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures ((memory_load32_le(mem, $x_addr) == 20bv32) || (memory_load32_le(mem, $x_addr) == 21bv32)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -198,3 +135,5 @@ procedure main() assume {:captureState "%000001bd"} true; return; } + + diff --git a/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected index 406846cdd..be033658c 100644 --- a/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected @@ -1,34 +1,54 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,150 +57,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures ((memory_load32_le(mem, $x_addr) == 20bv32) || (memory_load32_le(mem, $x_addr) == 21bv32)); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -197,3 +132,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected index 4296b2ef3..65482492b 100644 --- a/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected @@ -1,42 +1,59 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); + 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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -45,174 +62,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); ensures ((memory_load32_le(mem, $x_addr) == 20bv32) || (memory_load32_le(mem, $x_addr) == 21bv32)); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { var x_old: bv32; lmain: @@ -230,3 +141,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected index 1b7086b6a..7d2acf54f 100644 --- a/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected @@ -1,63 +1,106 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1952bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -66,145 +109,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); free ensures (memory_load8_le(mem, 1955bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R10, R31, R8, R9, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1952bv64) == 1bv8); free requires (memory_load8_le(mem, 1953bv64) == 0bv8); free requires (memory_load8_le(mem, 1954bv64) == 2bv8); free requires (memory_load8_le(mem, 1955bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1952bv64) == 1bv8); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); free ensures (memory_load8_le(mem, 1955bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -283,6 +239,8 @@ procedure main() goto l000003c9; lmain_goto_l000003ce: assume {:captureState "lmain_goto_l000003ce"} true; - assume (bvcomp32(R10[32:0], 0bv32) == 0bv1); + assume (!(bvcomp32(R10[32:0], 0bv32) != 0bv1)); goto l000003ce; } + + diff --git a/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected index b904c03a5..37b720b0f 100644 --- a/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected @@ -1,13 +1,26 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1840bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -16,146 +29,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1841bv64) == 0bv8); free ensures (memory_load8_le(mem, 1842bv64) == 2bv8); free ensures (memory_load8_le(mem, 1843bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1840bv64) == 1bv8); free requires (memory_load8_le(mem, 1841bv64) == 0bv8); free requires (memory_load8_le(mem, 1842bv64) == 2bv8); free requires (memory_load8_le(mem, 1843bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1840bv64) == 1bv8); free ensures (memory_load8_le(mem, 1841bv64) == 0bv8); free ensures (memory_load8_le(mem, 1842bv64) == 2bv8); free ensures (memory_load8_le(mem, 1843bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected index 69b3dc72e..6c5d9fbdc 100644 --- a/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected @@ -1,63 +1,106 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1952bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -66,145 +109,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); free ensures (memory_load8_le(mem, 1955bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R10, R31, R8, R9, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1952bv64) == 1bv8); free requires (memory_load8_le(mem, 1953bv64) == 0bv8); free requires (memory_load8_le(mem, 1954bv64) == 2bv8); free requires (memory_load8_le(mem, 1955bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1952bv64) == 1bv8); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); free ensures (memory_load8_le(mem, 1955bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -283,6 +239,8 @@ procedure main() goto l00000aac; lmain_goto_l00000ab1: assume {:captureState "lmain_goto_l00000ab1"} true; - assume (bvcomp32(R10[32:0], 0bv32) == 0bv1); + assume (!(bvcomp32(R10[32:0], 0bv32) != 0bv1)); goto l00000ab1; } + + diff --git a/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected index 69b3dc72e..6c5d9fbdc 100644 --- a/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected @@ -1,63 +1,106 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1952bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -66,145 +109,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); free ensures (memory_load8_le(mem, 1955bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R10, R31, R8, R9, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1952bv64) == 1bv8); free requires (memory_load8_le(mem, 1953bv64) == 0bv8); free requires (memory_load8_le(mem, 1954bv64) == 2bv8); free requires (memory_load8_le(mem, 1955bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1952bv64) == 1bv8); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); free ensures (memory_load8_le(mem, 1955bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -283,6 +239,8 @@ procedure main() goto l00000aac; lmain_goto_l00000ab1: assume {:captureState "lmain_goto_l00000ab1"} true; - assume (bvcomp32(R10[32:0], 0bv32) == 0bv1); + assume (!(bvcomp32(R10[32:0], 0bv32) != 0bv1)); goto l00000ab1; } + + diff --git a/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected index 255fa84d0..e9f3d911a 100644 --- a/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected @@ -1,55 +1,90 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1948bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -58,145 +93,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); free ensures (memory_load8_le(mem, 1951bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R31, Gamma_stack, R0, R1, R2, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1948bv64) == 1bv8); free requires (memory_load8_le(mem, 1949bv64) == 0bv8); free requires (memory_load8_le(mem, 1950bv64) == 2bv8); free requires (memory_load8_le(mem, 1951bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1948bv64) == 1bv8); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); free ensures (memory_load8_le(mem, 1951bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -255,6 +203,8 @@ procedure main() goto l000003b3; lmain_goto_l000003b8: assume {:captureState "lmain_goto_l000003b8"} true; - assume (bvcomp32(R1[32:0], 0bv32) == 0bv1); + assume (!(bvcomp32(R1[32:0], 0bv32) != 0bv1)); goto l000003b8; } + + diff --git a/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected index 306991d20..69a6690ea 100644 --- a/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected @@ -1,13 +1,26 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -16,146 +29,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected index b0c230c36..66da8ad40 100644 --- a/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected @@ -1,55 +1,90 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1948bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -58,145 +93,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); free ensures (memory_load8_le(mem, 1951bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R31, Gamma_stack, R0, R1, R2, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1948bv64) == 1bv8); free requires (memory_load8_le(mem, 1949bv64) == 0bv8); free requires (memory_load8_le(mem, 1950bv64) == 2bv8); free requires (memory_load8_le(mem, 1951bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1948bv64) == 1bv8); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); free ensures (memory_load8_le(mem, 1951bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -255,6 +203,8 @@ procedure main() goto l00000a6e; lmain_goto_l00000a73: assume {:captureState "lmain_goto_l00000a73"} true; - assume (bvcomp32(R1[32:0], 0bv32) == 0bv1); + assume (!(bvcomp32(R1[32:0], 0bv32) != 0bv1)); goto l00000a73; } + + diff --git a/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected index b0c230c36..66da8ad40 100644 --- a/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected @@ -1,55 +1,90 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1948bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -58,145 +93,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); free ensures (memory_load8_le(mem, 1951bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R31, Gamma_stack, R0, R1, R2, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1948bv64) == 1bv8); free requires (memory_load8_le(mem, 1949bv64) == 0bv8); free requires (memory_load8_le(mem, 1950bv64) == 2bv8); free requires (memory_load8_le(mem, 1951bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1948bv64) == 1bv8); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); free ensures (memory_load8_le(mem, 1951bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -255,6 +203,8 @@ procedure main() goto l00000a6e; lmain_goto_l00000a73: assume {:captureState "lmain_goto_l00000a73"} true; - assume (bvcomp32(R1[32:0], 0bv32) == 0bv1); + assume (!(bvcomp32(R1[32:0], 0bv32) != 0bv1)); goto l00000a73; } + + diff --git a/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected index ccd417130..12eb71698 100644 --- a/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected @@ -1,51 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,150 +87,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -261,7 +209,7 @@ procedure main() goto l00000336; lmain_goto_l00000339: assume {:captureState "lmain_goto_l00000339"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000339; l0000033c_goto_l00000344: assume {:captureState "l0000033c_goto_l00000344"} true; @@ -269,6 +217,8 @@ procedure main() goto l00000344; l0000033c_goto_l0000035b: assume {:captureState "l0000033c_goto_l0000035b"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000035b; } + + diff --git a/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected index 92491b85c..4aac66538 100644 --- a/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected @@ -1,41 +1,70 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,148 +73,63 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -229,6 +173,8 @@ procedure main() goto l000002fa; lmain_goto_l000002fd: assume {:captureState "lmain_goto_l000002fd"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000002fd; } + + diff --git a/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected index 230807188..56dd3067e 100644 --- a/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected @@ -1,51 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,150 +87,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -261,7 +209,7 @@ procedure main() goto l00000954; lmain_goto_l00000957: assume {:captureState "lmain_goto_l00000957"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000957; l0000095a_goto_l00000962: assume {:captureState "l0000095a_goto_l00000962"} true; @@ -269,6 +217,8 @@ procedure main() goto l00000962; l0000095a_goto_l00000979: assume {:captureState "l0000095a_goto_l00000979"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000979; } + + diff --git a/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected index 4046bd5c3..09b6ce832 100644 --- a/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected @@ -1,59 +1,89 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,198 +92,71 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1968bv64) == 1bv8); free requires (memory_load8_le(mem, 1969bv64) == 0bv8); free requires (memory_load8_le(mem, 1970bv64) == 2bv8); free requires (memory_load8_le(mem, 1971bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 52bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 56bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1968bv64) == 1bv8); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -321,7 +224,7 @@ procedure main() goto l0000034c; lmain_goto_l0000034f: assume {:captureState "lmain_goto_l0000034f"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000034f; l00000352_goto_l0000035a: assume {:captureState "l00000352_goto_l0000035a"} true; @@ -329,6 +232,8 @@ procedure main() goto l0000035a; l00000352_goto_l00000371: assume {:captureState "l00000352_goto_l00000371"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000371; } + + diff --git a/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected index 7bae9d7fb..5a7002acc 100644 --- a/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected @@ -1,49 +1,80 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,150 +83,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1888bv64) == 1bv8); free requires (memory_load8_le(mem, 1889bv64) == 0bv8); free requires (memory_load8_le(mem, 1890bv64) == 2bv8); free requires (memory_load8_le(mem, 1891bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1888bv64) == 1bv8); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -243,6 +189,8 @@ procedure main() goto l0000032e; lmain_goto_l00000345: assume {:captureState "lmain_goto_l00000345"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000345; } + + diff --git a/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected index 44fc144b9..e8e71e0e2 100644 --- a/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected @@ -1,35 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -38,148 +61,63 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -204,6 +142,8 @@ procedure main() goto l000001c2; lmain_goto_l0000039c: assume {:captureState "lmain_goto_l0000039c"} true; - assume (bvnot1(bvcomp32(R1[32:0], 0bv32)) == 0bv1); + assume (!(bvnot1(bvcomp32(R1[32:0], 0bv32)) != 0bv1)); goto l0000039c; } + + diff --git a/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected index 7882f9a88..a6a2108f1 100644 --- a/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected @@ -1,49 +1,80 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,150 +83,65 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1888bv64) == 1bv8); free requires (memory_load8_le(mem, 1889bv64) == 0bv8); free requires (memory_load8_le(mem, 1890bv64) == 2bv8); free requires (memory_load8_le(mem, 1891bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1888bv64) == 1bv8); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -243,6 +189,8 @@ procedure main() goto l0000092b; lmain_goto_l00000942: assume {:captureState "lmain_goto_l00000942"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000942; } + + diff --git a/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected index 2802fe353..b858d14c1 100644 --- a/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected @@ -1,57 +1,85 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -60,198 +88,71 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); free ensures (memory_load8_le(mem, 1955bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1952bv64) == 1bv8); free requires (memory_load8_le(mem, 1953bv64) == 0bv8); free requires (memory_load8_le(mem, 1954bv64) == 2bv8); free requires (memory_load8_le(mem, 1955bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 24bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1952bv64) == 1bv8); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); free ensures (memory_load8_le(mem, 1955bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -301,6 +202,8 @@ procedure main() goto l00000330; lmain_goto_l00000347: assume {:captureState "lmain_goto_l00000347"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000347; } + + diff --git a/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected index 201b37eeb..fbfee1069 100644 --- a/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected @@ -1,47 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -50,151 +79,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1888bv64) == 1bv8); free requires (memory_load8_le(mem, 1889bv64) == 0bv8); free requires (memory_load8_le(mem, 1890bv64) == 2bv8); free requires (memory_load8_le(mem, 1891bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1888bv64) == 1bv8); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -244,3 +188,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected index 9dac0c99a..224120d96 100644 --- a/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected @@ -1,42 +1,66 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -45,149 +69,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -215,3 +154,5 @@ procedure main() assume {:captureState "%000002e7"} true; return; } + + diff --git a/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected index bf97d9983..2bc00fa6f 100644 --- a/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected @@ -1,47 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -50,151 +79,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1888bv64) == 1bv8); free requires (memory_load8_le(mem, 1889bv64) == 0bv8); free requires (memory_load8_le(mem, 1890bv64) == 2bv8); free requires (memory_load8_le(mem, 1891bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1888bv64) == 1bv8); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -244,3 +188,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected index 36ab6f168..df5988147 100644 --- a/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected @@ -1,55 +1,81 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -58,199 +84,72 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1961bv64) == 0bv8); free ensures (memory_load8_le(mem, 1962bv64) == 2bv8); free ensures (memory_load8_le(mem, 1963bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1960bv64) == 1bv8); free requires (memory_load8_le(mem, 1961bv64) == 0bv8); free requires (memory_load8_le(mem, 1962bv64) == 2bv8); free requires (memory_load8_le(mem, 1963bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 56bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 52bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1960bv64) == 1bv8); free ensures (memory_load8_le(mem, 1961bv64) == 0bv8); free ensures (memory_load8_le(mem, 1962bv64) == 2bv8); free ensures (memory_load8_le(mem, 1963bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -304,3 +203,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected index e1602790f..a5c453f12 100644 --- a/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected @@ -1,43 +1,68 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -46,151 +71,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1912bv64) == 1bv8); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -246,3 +186,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected index 08c116932..d1b0e7589 100644 --- a/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected @@ -1,42 +1,66 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R3: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} R3: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -45,149 +69,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -215,3 +154,5 @@ procedure main() assume {:captureState "%000001ca"} true; return; } + + diff --git a/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected index 959c60219..5fcffcb3f 100644 --- a/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected @@ -1,43 +1,68 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -46,151 +71,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1912bv64) == 1bv8); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -246,3 +186,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected index 1fd3aca8c..58892a5bb 100644 --- a/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected @@ -1,51 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,199 +76,72 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1976bv64) == 1bv8); free requires (memory_load8_le(mem, 1977bv64) == 0bv8); free requires (memory_load8_le(mem, 1978bv64) == 2bv8); free requires (memory_load8_le(mem, 1979bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 24bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1976bv64) == 1bv8); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -306,3 +201,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected index 4fd51f050..01662569f 100644 --- a/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected @@ -1,41 +1,64 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,146 +67,60 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -198,3 +135,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected index 0a66841bf..9e968d230 100644 --- a/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected @@ -1,41 +1,64 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,146 +67,60 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -198,3 +135,5 @@ procedure main() assume {:captureState "%000002de"} true; return; } + + diff --git a/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected index 2a980ae8e..fe8cfa4a0 100644 --- a/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected @@ -1,41 +1,64 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,146 +67,60 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -198,3 +135,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected index 49233a65d..3fcc543b1 100644 --- a/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected @@ -1,49 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,194 +72,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1928bv64) == 1bv8); free requires (memory_load8_le(mem, 1929bv64) == 0bv8); free requires (memory_load8_le(mem, 1930bv64) == 2bv8); free requires (memory_load8_le(mem, 1931bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 52bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 56bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (memory_load8_le(mem, 1928bv64) == 1bv8); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -258,3 +150,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected index 61c06314d..384a447b3 100644 --- a/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected @@ -1,39 +1,60 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69656bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -42,146 +63,60 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1865bv64) == 0bv8); free ensures (memory_load8_le(mem, 1866bv64) == 2bv8); free ensures (memory_load8_le(mem, 1867bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1864bv64) == 1bv8); free requires (memory_load8_le(mem, 1865bv64) == 0bv8); free requires (memory_load8_le(mem, 1866bv64) == 2bv8); free requires (memory_load8_le(mem, 1867bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1864bv64) == 1bv8); free ensures (memory_load8_le(mem, 1865bv64) == 0bv8); free ensures (memory_load8_le(mem, 1866bv64) == 2bv8); free ensures (memory_load8_le(mem, 1867bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -198,3 +133,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected index 80ca6e118..1f41bcccb 100644 --- a/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected @@ -1,41 +1,64 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69656bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,146 +67,60 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -198,3 +135,5 @@ procedure main() assume {:captureState "%000001c5"} true; return; } + + diff --git a/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected index f64a19b05..15896a499 100644 --- a/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected @@ -1,39 +1,60 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69656bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -42,146 +63,60 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1865bv64) == 0bv8); free ensures (memory_load8_le(mem, 1866bv64) == 2bv8); free ensures (memory_load8_le(mem, 1867bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1864bv64) == 1bv8); free requires (memory_load8_le(mem, 1865bv64) == 0bv8); free requires (memory_load8_le(mem, 1866bv64) == 2bv8); free requires (memory_load8_le(mem, 1867bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1864bv64) == 1bv8); free ensures (memory_load8_le(mem, 1865bv64) == 0bv8); free ensures (memory_load8_le(mem, 1866bv64) == 2bv8); free ensures (memory_load8_le(mem, 1867bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -198,3 +133,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected index 640aca070..1e2a755a4 100644 --- a/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected @@ -1,47 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69656bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -50,194 +68,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1928bv64) == 1bv8); free requires (memory_load8_le(mem, 1929bv64) == 0bv8); free requires (memory_load8_le(mem, 1930bv64) == 2bv8); free requires (memory_load8_le(mem, 1931bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (memory_load8_le(mem, 1928bv64) == 1bv8); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -256,3 +146,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/basicfree/clang/basicfree.expected b/src/test/correct/basicfree/clang/basicfree.expected index 726176432..34a22986c 100644 --- a/src/test/correct/basicfree/clang/basicfree.expected +++ b/src/test/correct/basicfree/clang/basicfree.expected @@ -1,58 +1,88 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R16: bv64; + var {:extern} R17: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2080bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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)); @@ -61,182 +91,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); free requires (memory_load8_le(mem, 2081bv64) == 0bv8); free requires (memory_load8_le(mem, 2082bv64) == 2bv8); free requires (memory_load8_le(mem, 2083bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 208bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 128bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 212bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free ensures (memory_load8_le(mem, 2080bv64) == 1bv8); free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69680bv64) == 0bv8); - free requires (memory_load8_le(mem, 69681bv64) == 0bv8); - free requires (memory_load8_le(mem, 69682bv64) == 0bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69680bv64) == 0bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free requires (memory_load8_le(mem, 2080bv64) == 1bv8); free requires (memory_load8_le(mem, 2081bv64) == 0bv8); free requires (memory_load8_le(mem, 2082bv64) == 2bv8); free requires (memory_load8_le(mem, 2083bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 208bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 128bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 212bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -245,38 +160,12 @@ procedure main() free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -318,77 +207,25 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); free requires (memory_load8_le(mem, 2081bv64) == 0bv8); free requires (memory_load8_le(mem, 2082bv64) == 2bv8); free requires (memory_load8_le(mem, 2083bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 208bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 128bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 212bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free ensures (memory_load8_le(mem, 2080bv64) == 1bv8); free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + + + diff --git a/src/test/correct/basicfree/clang_O2/basicfree.expected b/src/test/correct/basicfree/clang_O2/basicfree.expected index ae43ad872..950c0b6b7 100644 --- a/src/test/correct/basicfree/clang_O2/basicfree.expected +++ b/src/test/correct/basicfree/clang_O2/basicfree.expected @@ -1,11 +1,22 @@ var {:extern} Gamma_mem: [bv64]bool; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1836bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -14,144 +25,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1837bv64) == 0bv8); free ensures (memory_load8_le(mem, 1838bv64) == 2bv8); free ensures (memory_load8_le(mem, 1839bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + + +procedure main(); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1836bv64) == 1bv8); free requires (memory_load8_le(mem, 1837bv64) == 0bv8); free requires (memory_load8_le(mem, 1838bv64) == 2bv8); free requires (memory_load8_le(mem, 1839bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1836bv64) == 1bv8); free ensures (memory_load8_le(mem, 1837bv64) == 0bv8); free ensures (memory_load8_le(mem, 1838bv64) == 2bv8); free ensures (memory_load8_le(mem, 1839bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; return; } + + diff --git a/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected b/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected index 76c2aa03f..3317ca7cc 100644 --- a/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected +++ b/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected @@ -1,58 +1,88 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R16: bv64; + var {:extern} R17: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2080bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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)); @@ -61,182 +91,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); free requires (memory_load8_le(mem, 2081bv64) == 0bv8); free requires (memory_load8_le(mem, 2082bv64) == 2bv8); free requires (memory_load8_le(mem, 2083bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 208bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 128bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 212bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free ensures (memory_load8_le(mem, 2080bv64) == 1bv8); free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69680bv64) == 0bv8); - free requires (memory_load8_le(mem, 69681bv64) == 0bv8); - free requires (memory_load8_le(mem, 69682bv64) == 0bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69680bv64) == 0bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free requires (memory_load8_le(mem, 2080bv64) == 1bv8); free requires (memory_load8_le(mem, 2081bv64) == 0bv8); free requires (memory_load8_le(mem, 2082bv64) == 2bv8); free requires (memory_load8_le(mem, 2083bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 208bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 128bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 212bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -245,38 +160,12 @@ procedure main() free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -318,77 +207,25 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); free requires (memory_load8_le(mem, 2081bv64) == 0bv8); free requires (memory_load8_le(mem, 2082bv64) == 2bv8); free requires (memory_load8_le(mem, 2083bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 208bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 128bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 212bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free ensures (memory_load8_le(mem, 2080bv64) == 1bv8); free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + + + diff --git a/src/test/correct/basicfree/clang_pic/basicfree.expected b/src/test/correct/basicfree/clang_pic/basicfree.expected index 76c2aa03f..3317ca7cc 100644 --- a/src/test/correct/basicfree/clang_pic/basicfree.expected +++ b/src/test/correct/basicfree/clang_pic/basicfree.expected @@ -1,58 +1,88 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R16: bv64; + var {:extern} R17: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2080bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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)); @@ -61,182 +91,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); free requires (memory_load8_le(mem, 2081bv64) == 0bv8); free requires (memory_load8_le(mem, 2082bv64) == 2bv8); free requires (memory_load8_le(mem, 2083bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 208bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 128bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 212bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free ensures (memory_load8_le(mem, 2080bv64) == 1bv8); free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69680bv64) == 0bv8); - free requires (memory_load8_le(mem, 69681bv64) == 0bv8); - free requires (memory_load8_le(mem, 69682bv64) == 0bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69680bv64) == 0bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free requires (memory_load8_le(mem, 2080bv64) == 1bv8); free requires (memory_load8_le(mem, 2081bv64) == 0bv8); free requires (memory_load8_le(mem, 2082bv64) == 2bv8); free requires (memory_load8_le(mem, 2083bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 208bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 128bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 212bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -245,38 +160,12 @@ procedure main() free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -318,77 +207,25 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); free requires (memory_load8_le(mem, 2081bv64) == 0bv8); free requires (memory_load8_le(mem, 2082bv64) == 2bv8); free requires (memory_load8_le(mem, 2083bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 208bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 128bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 212bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 56bv8); - free requires (memory_load8_le(mem, 69689bv64) == 16bv8); - free requires (memory_load8_le(mem, 69690bv64) == 1bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69688bv64) == 69688bv64); free ensures (memory_load8_le(mem, 2080bv64) == 1bv8); free ensures (memory_load8_le(mem, 2081bv64) == 0bv8); free ensures (memory_load8_le(mem, 2082bv64) == 2bv8); free ensures (memory_load8_le(mem, 2083bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69688bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69689bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69690bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69691bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69692bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69693bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69694bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69695bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); + + + diff --git a/src/test/correct/basicfree/gcc/basicfree.expected b/src/test/correct/basicfree/gcc/basicfree.expected index 0abdad17b..cefd3a295 100644 --- a/src/test/correct/basicfree/gcc/basicfree.expected +++ b/src/test/correct/basicfree/gcc/basicfree.expected @@ -1,56 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2076bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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)); @@ -59,182 +87,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); free requires (memory_load8_le(mem, 2077bv64) == 0bv8); free requires (memory_load8_le(mem, 2078bv64) == 2bv8); free requires (memory_load8_le(mem, 2079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 208bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 128bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 212bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69000bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2076bv64) == 1bv8); free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2076bv64) == 1bv8); free requires (memory_load8_le(mem, 2077bv64) == 0bv8); free requires (memory_load8_le(mem, 2078bv64) == 2bv8); free requires (memory_load8_le(mem, 2079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 208bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 128bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 212bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69000bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -243,38 +156,12 @@ procedure main() free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -313,77 +200,25 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); free requires (memory_load8_le(mem, 2077bv64) == 0bv8); free requires (memory_load8_le(mem, 2078bv64) == 2bv8); free requires (memory_load8_le(mem, 2079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 208bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 128bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 212bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69000bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2076bv64) == 1bv8); free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/basicfree/gcc_O2/basicfree.expected b/src/test/correct/basicfree/gcc_O2/basicfree.expected index f96261171..4e913a701 100644 --- a/src/test/correct/basicfree/gcc_O2/basicfree.expected +++ b/src/test/correct/basicfree/gcc_O2/basicfree.expected @@ -1,11 +1,22 @@ var {:extern} Gamma_mem: [bv64]bool; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -14,144 +25,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + + +procedure main(); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; return; } + + diff --git a/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected b/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected index 07b9f0233..9215d349a 100644 --- a/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected +++ b/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected @@ -1,56 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2076bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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)); @@ -59,182 +87,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); free requires (memory_load8_le(mem, 2077bv64) == 0bv8); free requires (memory_load8_le(mem, 2078bv64) == 2bv8); free requires (memory_load8_le(mem, 2079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 208bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 128bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 212bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69000bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2076bv64) == 1bv8); free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2076bv64) == 1bv8); free requires (memory_load8_le(mem, 2077bv64) == 0bv8); free requires (memory_load8_le(mem, 2078bv64) == 2bv8); free requires (memory_load8_le(mem, 2079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 208bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 128bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 212bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69000bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -243,38 +156,12 @@ procedure main() free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -313,77 +200,25 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); free requires (memory_load8_le(mem, 2077bv64) == 0bv8); free requires (memory_load8_le(mem, 2078bv64) == 2bv8); free requires (memory_load8_le(mem, 2079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 208bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 128bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 212bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69000bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2076bv64) == 1bv8); free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/basicfree/gcc_pic/basicfree.expected b/src/test/correct/basicfree/gcc_pic/basicfree.expected index 07b9f0233..9215d349a 100644 --- a/src/test/correct/basicfree/gcc_pic/basicfree.expected +++ b/src/test/correct/basicfree/gcc_pic/basicfree.expected @@ -1,56 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2076bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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)); @@ -59,182 +87,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); free requires (memory_load8_le(mem, 2077bv64) == 0bv8); free requires (memory_load8_le(mem, 2078bv64) == 2bv8); free requires (memory_load8_le(mem, 2079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 208bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 128bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 212bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69000bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2076bv64) == 1bv8); free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2076bv64) == 1bv8); free requires (memory_load8_le(mem, 2077bv64) == 0bv8); free requires (memory_load8_le(mem, 2078bv64) == 2bv8); free requires (memory_load8_le(mem, 2079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 208bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 128bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 212bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69000bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -243,38 +156,12 @@ procedure main() free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -313,77 +200,25 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); free requires (memory_load8_le(mem, 2077bv64) == 0bv8); free requires (memory_load8_le(mem, 2078bv64) == 2bv8); free requires (memory_load8_le(mem, 2079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 208bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 128bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 212bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69000bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2004bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2076bv64) == 1bv8); free ensures (memory_load8_le(mem, 2077bv64) == 0bv8); free ensures (memory_load8_le(mem, 2078bv64) == 2bv8); free ensures (memory_load8_le(mem, 2079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 212bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69000bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/cjump/clang/cjump.expected b/src/test/correct/cjump/clang/cjump.expected index 539ef9a99..fa5e06ede 100644 --- a/src/test/correct/cjump/clang/cjump.expected +++ b/src/test/correct/cjump/clang/cjump.expected @@ -1,53 +1,88 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -56,147 +91,60 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -273,7 +221,7 @@ procedure main() goto l00000343; lmain_goto_l00000346: assume {:captureState "lmain_goto_l00000346"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000346; l00000349_goto_l00000351: assume {:captureState "l00000349_goto_l00000351"} true; @@ -281,6 +229,8 @@ procedure main() goto l00000351; l00000349_goto_l0000037e: assume {:captureState "l00000349_goto_l0000037e"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000037e; } + + diff --git a/src/test/correct/cjump/clang_O2/cjump.expected b/src/test/correct/cjump/clang_O2/cjump.expected index d3e291679..e067fe6a6 100644 --- a/src/test/correct/cjump/clang_O2/cjump.expected +++ b/src/test/correct/cjump/clang_O2/cjump.expected @@ -1,40 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R11: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R11: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -43,145 +68,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1865bv64) == 0bv8); free ensures (memory_load8_le(mem, 1866bv64) == 2bv8); free ensures (memory_load8_le(mem, 1867bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1864bv64) == 1bv8); free requires (memory_load8_le(mem, 1865bv64) == 0bv8); free requires (memory_load8_le(mem, 1866bv64) == 2bv8); free requires (memory_load8_le(mem, 1867bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1864bv64) == 1bv8); free ensures (memory_load8_le(mem, 1865bv64) == 0bv8); free ensures (memory_load8_le(mem, 1866bv64) == 2bv8); free ensures (memory_load8_le(mem, 1867bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -200,3 +138,5 @@ procedure main() assume {:captureState "%000002f1"} true; return; } + + diff --git a/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected b/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected index 796eec6f1..3b4398c7c 100644 --- a/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected +++ b/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected @@ -1,53 +1,88 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -56,147 +91,60 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -273,7 +221,7 @@ procedure main() goto l00000999; lmain_goto_l0000099c: assume {:captureState "lmain_goto_l0000099c"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000099c; l0000099f_goto_l000009a7: assume {:captureState "l0000099f_goto_l000009a7"} true; @@ -281,6 +229,8 @@ procedure main() goto l000009a7; l0000099f_goto_l000009d4: assume {:captureState "l0000099f_goto_l000009d4"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l000009d4; } + + diff --git a/src/test/correct/cjump/clang_pic/cjump.expected b/src/test/correct/cjump/clang_pic/cjump.expected index 1ecbdeb7c..b1863f0c0 100644 --- a/src/test/correct/cjump/clang_pic/cjump.expected +++ b/src/test/correct/cjump/clang_pic/cjump.expected @@ -1,61 +1,93 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,195 +96,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1993bv64) == 0bv8); free ensures (memory_load8_le(mem, 1994bv64) == 2bv8); free ensures (memory_load8_le(mem, 1995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == false); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1992bv64) == 1bv8); free requires (memory_load8_le(mem, 1993bv64) == 0bv8); free requires (memory_load8_le(mem, 1994bv64) == 2bv8); free requires (memory_load8_le(mem, 1995bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 56bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 52bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1992bv64) == 1bv8); free ensures (memory_load8_le(mem, 1993bv64) == 0bv8); free ensures (memory_load8_le(mem, 1994bv64) == 2bv8); free ensures (memory_load8_le(mem, 1995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -335,7 +238,7 @@ procedure main() goto l00000356; lmain_goto_l00000359: assume {:captureState "lmain_goto_l00000359"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000359; l0000035c_goto_l00000364: assume {:captureState "l0000035c_goto_l00000364"} true; @@ -343,6 +246,8 @@ procedure main() goto l00000364; l0000035c_goto_l00000398: assume {:captureState "l0000035c_goto_l00000398"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000398; } + + diff --git a/src/test/correct/cjump/gcc/cjump.expected b/src/test/correct/cjump/gcc/cjump.expected index 9a98e6265..feb947330 100644 --- a/src/test/correct/cjump/gcc/cjump.expected +++ b/src/test/correct/cjump/gcc/cjump.expected @@ -1,47 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -50,145 +79,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1912bv64) == 1bv8); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -250,6 +192,8 @@ procedure main() goto l0000033e; lmain_goto_l00000365: assume {:captureState "lmain_goto_l00000365"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000365; } + + diff --git a/src/test/correct/cjump/gcc_O2/cjump.expected b/src/test/correct/cjump/gcc_O2/cjump.expected index a280e9d8a..ab383ef3d 100644 --- a/src/test/correct/cjump/gcc_O2/cjump.expected +++ b/src/test/correct/cjump/gcc_O2/cjump.expected @@ -1,38 +1,61 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R3: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} R3: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -41,145 +64,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -198,3 +134,5 @@ procedure main() assume {:captureState "%000001d0"} true; return; } + + diff --git a/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected b/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected index 1f3af0871..7a36e8cb0 100644 --- a/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected +++ b/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected @@ -1,47 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -50,145 +79,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1912bv64) == 1bv8); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -250,6 +192,8 @@ procedure main() goto l0000097c; lmain_goto_l000009a3: assume {:captureState "lmain_goto_l000009a3"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000009a3; } + + diff --git a/src/test/correct/cjump/gcc_pic/cjump.expected b/src/test/correct/cjump/gcc_pic/cjump.expected index 5ca9cc9fa..86121cbf4 100644 --- a/src/test/correct/cjump/gcc_pic/cjump.expected +++ b/src/test/correct/cjump/gcc_pic/cjump.expected @@ -1,55 +1,81 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -58,193 +84,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == false); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1976bv64) == 1bv8); free requires (memory_load8_le(mem, 1977bv64) == 0bv8); free requires (memory_load8_le(mem, 1978bv64) == 2bv8); free requires (memory_load8_le(mem, 1979bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (memory_load8_le(mem, 1976bv64) == 1bv8); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -310,6 +207,8 @@ procedure main() goto l00000340; lmain_goto_l00000368: assume {:captureState "lmain_goto_l00000368"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000368; } + + diff --git a/src/test/correct/function/clang/function.expected b/src/test/correct/function/clang/function.expected index 5f0453715..19395b846 100644 --- a/src/test/correct/function/clang/function.expected +++ b/src/test/correct/function/clang/function.expected @@ -1,60 +1,88 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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)); @@ -63,128 +91,55 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1885bv64) == 0bv8); free ensures (memory_load8_le(mem, 1886bv64) == 2bv8); free ensures (memory_load8_le(mem, 1887bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1884bv64) == 1bv8); free requires (memory_load8_le(mem, 1885bv64) == 0bv8); free requires (memory_load8_le(mem, 1886bv64) == 2bv8); free requires (memory_load8_le(mem, 1887bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (Gamma_R0 == true); free ensures (memory_load8_le(mem, 1884bv64) == 1bv8); free ensures (memory_load8_le(mem, 1885bv64) == 0bv8); free ensures (memory_load8_le(mem, 1886bv64) == 2bv8); free ensures (memory_load8_le(mem, 1887bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -192,62 +147,21 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1884bv64) == 1bv8); free requires (memory_load8_le(mem, 1885bv64) == 0bv8); free requires (memory_load8_le(mem, 1886bv64) == 2bv8); free requires (memory_load8_le(mem, 1887bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -256,38 +170,12 @@ procedure main() free ensures (memory_load8_le(mem, 1885bv64) == 0bv8); free ensures (memory_load8_le(mem, 1886bv64) == 2bv8); free ensures (memory_load8_le(mem, 1887bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -322,3 +210,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/function/clang_O2/function.expected b/src/test/correct/function/clang_O2/function.expected index fd677be34..0fb854c82 100644 --- a/src/test/correct/function/clang_O2/function.expected +++ b/src/test/correct/function/clang_O2/function.expected @@ -1,40 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R11: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R11: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -43,145 +68,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1873bv64) == 0bv8); free ensures (memory_load8_le(mem, 1874bv64) == 2bv8); free ensures (memory_load8_le(mem, 1875bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1872bv64) == 1bv8); free requires (memory_load8_le(mem, 1873bv64) == 0bv8); free requires (memory_load8_le(mem, 1874bv64) == 2bv8); free requires (memory_load8_le(mem, 1875bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1872bv64) == 1bv8); free ensures (memory_load8_le(mem, 1873bv64) == 0bv8); free ensures (memory_load8_le(mem, 1874bv64) == 2bv8); free ensures (memory_load8_le(mem, 1875bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -200,3 +138,5 @@ procedure main() assume {:captureState "%000002f9"} true; return; } + + diff --git a/src/test/correct/function/clang_no_plt_no_pic/function.expected b/src/test/correct/function/clang_no_plt_no_pic/function.expected index 5f0453715..19395b846 100644 --- a/src/test/correct/function/clang_no_plt_no_pic/function.expected +++ b/src/test/correct/function/clang_no_plt_no_pic/function.expected @@ -1,60 +1,88 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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)); @@ -63,128 +91,55 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1885bv64) == 0bv8); free ensures (memory_load8_le(mem, 1886bv64) == 2bv8); free ensures (memory_load8_le(mem, 1887bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1884bv64) == 1bv8); free requires (memory_load8_le(mem, 1885bv64) == 0bv8); free requires (memory_load8_le(mem, 1886bv64) == 2bv8); free requires (memory_load8_le(mem, 1887bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (Gamma_R0 == true); free ensures (memory_load8_le(mem, 1884bv64) == 1bv8); free ensures (memory_load8_le(mem, 1885bv64) == 0bv8); free ensures (memory_load8_le(mem, 1886bv64) == 2bv8); free ensures (memory_load8_le(mem, 1887bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -192,62 +147,21 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1884bv64) == 1bv8); free requires (memory_load8_le(mem, 1885bv64) == 0bv8); free requires (memory_load8_le(mem, 1886bv64) == 2bv8); free requires (memory_load8_le(mem, 1887bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -256,38 +170,12 @@ procedure main() free ensures (memory_load8_le(mem, 1885bv64) == 0bv8); free ensures (memory_load8_le(mem, 1886bv64) == 2bv8); free ensures (memory_load8_le(mem, 1887bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -322,3 +210,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/function/clang_pic/function.expected b/src/test/correct/function/clang_pic/function.expected index 3937a0029..6b467ad4f 100644 --- a/src/test/correct/function/clang_pic/function.expected +++ b/src/test/correct/function/clang_pic/function.expected @@ -1,60 +1,88 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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)); @@ -63,176 +91,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1956bv64) == 1bv8); free requires (memory_load8_le(mem, 1957bv64) == 0bv8); free requires (memory_load8_le(mem, 1958bv64) == 2bv8); free requires (memory_load8_le(mem, 1959bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 56bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 52bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); ensures (Gamma_R0 == true); free ensures (memory_load8_le(mem, 1956bv64) == 1bv8); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -240,78 +153,23 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1956bv64) == 1bv8); free requires (memory_load8_le(mem, 1957bv64) == 0bv8); free requires (memory_load8_le(mem, 1958bv64) == 2bv8); free requires (memory_load8_le(mem, 1959bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 56bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 52bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -320,54 +178,14 @@ procedure main() free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -406,3 +224,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/function/gcc/function.expected b/src/test/correct/function/gcc/function.expected index 81e902be8..970ea2e3b 100644 --- a/src/test/correct/function/gcc/function.expected +++ b/src/test/correct/function/gcc/function.expected @@ -1,59 +1,86 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -62,128 +89,55 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (Gamma_R0 == true); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -191,62 +145,21 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -255,38 +168,12 @@ procedure main() free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -324,3 +211,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/function/gcc_O2/function.expected b/src/test/correct/function/gcc_O2/function.expected index d1f3a9437..29bc38542 100644 --- a/src/test/correct/function/gcc_O2/function.expected +++ b/src/test/correct/function/gcc_O2/function.expected @@ -1,38 +1,61 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R3: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} R3: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -41,145 +64,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -198,3 +134,5 @@ procedure main() assume {:captureState "%000001e4"} true; return; } + + diff --git a/src/test/correct/function/gcc_no_plt_no_pic/function.expected b/src/test/correct/function/gcc_no_plt_no_pic/function.expected index 81e902be8..970ea2e3b 100644 --- a/src/test/correct/function/gcc_no_plt_no_pic/function.expected +++ b/src/test/correct/function/gcc_no_plt_no_pic/function.expected @@ -1,59 +1,86 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -62,128 +89,55 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (Gamma_R0 == true); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -191,62 +145,21 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -255,38 +168,12 @@ procedure main() free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -324,3 +211,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/function/gcc_pic/function.expected b/src/test/correct/function/gcc_pic/function.expected index ecdb2f43c..03c3eec57 100644 --- a/src/test/correct/function/gcc_pic/function.expected +++ b/src/test/correct/function/gcc_pic/function.expected @@ -1,59 +1,86 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -62,176 +89,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1961bv64) == 0bv8); free ensures (memory_load8_le(mem, 1962bv64) == 2bv8); free ensures (memory_load8_le(mem, 1963bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1960bv64) == 1bv8); free requires (memory_load8_le(mem, 1961bv64) == 0bv8); free requires (memory_load8_le(mem, 1962bv64) == 2bv8); free requires (memory_load8_le(mem, 1963bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); ensures (Gamma_R0 == true); free ensures (memory_load8_le(mem, 1960bv64) == 1bv8); free ensures (memory_load8_le(mem, 1961bv64) == 0bv8); free ensures (memory_load8_le(mem, 1962bv64) == 2bv8); free ensures (memory_load8_le(mem, 1963bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -239,78 +151,23 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $y_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1960bv64) == 1bv8); free requires (memory_load8_le(mem, 1961bv64) == 0bv8); free requires (memory_load8_le(mem, 1962bv64) == 2bv8); free requires (memory_load8_le(mem, 1963bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -319,54 +176,14 @@ procedure main() free ensures (memory_load8_le(mem, 1961bv64) == 0bv8); free ensures (memory_load8_le(mem, 1962bv64) == 2bv8); free ensures (memory_load8_le(mem, 1963bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -406,3 +223,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/function1/clang/function1.expected b/src/test/correct/function1/clang/function1.expected index 22620843f..159ada63c 100644 --- a/src/test/correct/function1/clang/function1.expected +++ b/src/test/correct/function1/clang/function1.expected @@ -1,233 +1,184 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R2: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2024bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69696bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "sign_extend 32"} sign_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R31, R8, R9, stack; - free requires (memory_load8_le(mem, 2024bv64) == 1bv8); - free requires (memory_load8_le(mem, 2025bv64) == 0bv8); - free requires (memory_load8_le(mem, 2026bv64) == 2bv8); - free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 2028bv64) == 37bv8); - free requires (memory_load8_le(mem, 2029bv64) == 100bv8); - free requires (memory_load8_le(mem, 2030bv64) == 10bv8); - free requires (memory_load8_le(mem, 2031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 132bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -248,108 +199,27 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 2024bv64) == 1bv8); - free requires (memory_load8_le(mem, 2025bv64) == 0bv8); - free requires (memory_load8_le(mem, 2026bv64) == 2bv8); - free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 2028bv64) == 37bv8); - free requires (memory_load8_le(mem, 2029bv64) == 100bv8); - free requires (memory_load8_le(mem, 2030bv64) == 10bv8); - free requires (memory_load8_le(mem, 2031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 132bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); + free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -399,85 +269,19 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2024bv64) == 1bv8); - free requires (memory_load8_le(mem, 2025bv64) == 0bv8); - free requires (memory_load8_le(mem, 2026bv64) == 2bv8); - free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 2028bv64) == 37bv8); - free requires (memory_load8_le(mem, 2029bv64) == 100bv8); - free requires (memory_load8_le(mem, 2030bv64) == 10bv8); - free requires (memory_load8_le(mem, 2031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 132bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); + free ensures (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + diff --git a/src/test/correct/function1/clang_O2/function1.expected b/src/test/correct/function1/clang_O2/function1.expected index bddeefebb..413ffac62 100644 --- a/src/test/correct/function1/clang_O2/function1.expected +++ b/src/test/correct/function1/clang_O2/function1.expected @@ -1,230 +1,156 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R11: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R10: bv64; + var {:extern} R11: bv64; + var {:extern} R16: bv64; + var {:extern} R17: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1976bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69696bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 1976bv64) == 1bv8); - free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); - free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); - free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 1980bv64) == 37bv8); - free ensures (memory_load8_le(mem, 1981bv64) == 100bv8); - free ensures (memory_load8_le(mem, 1982bv64) == 10bv8); - free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 96bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 1976bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1888bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R10, Gamma_R11, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R10, R11, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 1976bv64) == 1bv8); - free requires (memory_load8_le(mem, 1977bv64) == 0bv8); - free requires (memory_load8_le(mem, 1978bv64) == 2bv8); - free requires (memory_load8_le(mem, 1979bv64) == 0bv8); - free requires (memory_load8_le(mem, 1980bv64) == 37bv8); - free requires (memory_load8_le(mem, 1981bv64) == 100bv8); - free requires (memory_load8_le(mem, 1982bv64) == 10bv8); - free requires (memory_load8_le(mem, 1983bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 96bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); + free requires (memory_load64_le(mem, 1976bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1888bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 1976bv64) == 1bv8); - free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); - free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); - free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 1980bv64) == 37bv8); - free ensures (memory_load8_le(mem, 1981bv64) == 100bv8); - free ensures (memory_load8_le(mem, 1982bv64) == 10bv8); - free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 96bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 1976bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1888bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -266,85 +192,19 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 1976bv64) == 1bv8); - free requires (memory_load8_le(mem, 1977bv64) == 0bv8); - free requires (memory_load8_le(mem, 1978bv64) == 2bv8); - free requires (memory_load8_le(mem, 1979bv64) == 0bv8); - free requires (memory_load8_le(mem, 1980bv64) == 37bv8); - free requires (memory_load8_le(mem, 1981bv64) == 100bv8); - free requires (memory_load8_le(mem, 1982bv64) == 10bv8); - free requires (memory_load8_le(mem, 1983bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 96bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free ensures (memory_load8_le(mem, 1976bv64) == 1bv8); - free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); - free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); - free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 1980bv64) == 37bv8); - free ensures (memory_load8_le(mem, 1981bv64) == 100bv8); - free ensures (memory_load8_le(mem, 1982bv64) == 10bv8); - free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 96bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 1976bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1888bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); + free ensures (memory_load64_le(mem, 1976bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1888bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + diff --git a/src/test/correct/function1/clang_no_plt_no_pic/function1.expected b/src/test/correct/function1/clang_no_plt_no_pic/function1.expected index aa6caaf17..f67b29f59 100644 --- a/src/test/correct/function1/clang_no_plt_no_pic/function1.expected +++ b/src/test/correct/function1/clang_no_plt_no_pic/function1.expected @@ -1,233 +1,184 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R2: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2024bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69696bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "sign_extend 32"} sign_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R31, R8, R9, stack; - free requires (memory_load8_le(mem, 2024bv64) == 1bv8); - free requires (memory_load8_le(mem, 2025bv64) == 0bv8); - free requires (memory_load8_le(mem, 2026bv64) == 2bv8); - free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 2028bv64) == 37bv8); - free requires (memory_load8_le(mem, 2029bv64) == 100bv8); - free requires (memory_load8_le(mem, 2030bv64) == 10bv8); - free requires (memory_load8_le(mem, 2031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 132bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -248,108 +199,27 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 2024bv64) == 1bv8); - free requires (memory_load8_le(mem, 2025bv64) == 0bv8); - free requires (memory_load8_le(mem, 2026bv64) == 2bv8); - free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 2028bv64) == 37bv8); - free requires (memory_load8_le(mem, 2029bv64) == 100bv8); - free requires (memory_load8_le(mem, 2030bv64) == 10bv8); - free requires (memory_load8_le(mem, 2031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 132bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); + free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -399,85 +269,19 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2024bv64) == 1bv8); - free requires (memory_load8_le(mem, 2025bv64) == 0bv8); - free requires (memory_load8_le(mem, 2026bv64) == 2bv8); - free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 2028bv64) == 37bv8); - free requires (memory_load8_le(mem, 2029bv64) == 100bv8); - free requires (memory_load8_le(mem, 2030bv64) == 10bv8); - free requires (memory_load8_le(mem, 2031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 132bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); + free ensures (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + diff --git a/src/test/correct/function1/clang_pic/function1.expected b/src/test/correct/function1/clang_pic/function1.expected index 2c77c2294..1ec59b27f 100644 --- a/src/test/correct/function1/clang_pic/function1.expected +++ b/src/test/correct/function1/clang_pic/function1.expected @@ -1,281 +1,190 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R2: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2096bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69696bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "sign_extend 32"} sign_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2096bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2097bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2098bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2099bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2100bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2101bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2102bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2103bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 60bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 196bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 2096bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69692bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1988bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R31, R8, R9, stack; - free requires (memory_load8_le(mem, 2096bv64) == 1bv8); - free requires (memory_load8_le(mem, 2097bv64) == 0bv8); - free requires (memory_load8_le(mem, 2098bv64) == 2bv8); - free requires (memory_load8_le(mem, 2099bv64) == 0bv8); - free requires (memory_load8_le(mem, 2100bv64) == 37bv8); - free requires (memory_load8_le(mem, 2101bv64) == 100bv8); - free requires (memory_load8_le(mem, 2102bv64) == 10bv8); - free requires (memory_load8_le(mem, 2103bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 144bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 60bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 196bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 64bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 64bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); + free requires (memory_load64_le(mem, 2096bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1936bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69692bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1988bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1856bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69696bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2096bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2097bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2098bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2099bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2100bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2101bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2102bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2103bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 60bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 196bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2096bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69692bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1988bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69696bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -296,140 +205,31 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 2096bv64) == 1bv8); - free requires (memory_load8_le(mem, 2097bv64) == 0bv8); - free requires (memory_load8_le(mem, 2098bv64) == 2bv8); - free requires (memory_load8_le(mem, 2099bv64) == 0bv8); - free requires (memory_load8_le(mem, 2100bv64) == 37bv8); - free requires (memory_load8_le(mem, 2101bv64) == 100bv8); - free requires (memory_load8_le(mem, 2102bv64) == 10bv8); - free requires (memory_load8_le(mem, 2103bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 144bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 60bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 196bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 64bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 64bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); + free requires (memory_load64_le(mem, 2096bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1936bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69692bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1988bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1856bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2096bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2097bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2098bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2099bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2100bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2101bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2102bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2103bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 60bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 196bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2096bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69692bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1988bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69696bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -483,117 +283,23 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2096bv64) == 1bv8); - free requires (memory_load8_le(mem, 2097bv64) == 0bv8); - free requires (memory_load8_le(mem, 2098bv64) == 2bv8); - free requires (memory_load8_le(mem, 2099bv64) == 0bv8); - free requires (memory_load8_le(mem, 2100bv64) == 37bv8); - free requires (memory_load8_le(mem, 2101bv64) == 100bv8); - free requires (memory_load8_le(mem, 2102bv64) == 10bv8); - free requires (memory_load8_le(mem, 2103bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 144bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 60bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 196bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 64bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 64bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2096bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2097bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2098bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2099bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2100bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2101bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2102bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2103bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 60bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 196bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); + free requires (memory_load64_le(mem, 2096bv64) == 2924859843805185bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1936bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69692bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1988bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1856bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 2096bv64) == 2924859843805185bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69692bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1988bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69696bv64); + + + diff --git a/src/test/correct/function1/gcc/function1.expected b/src/test/correct/function1/gcc/function1.expected index a95a503aa..d754ffd91 100644 --- a/src/test/correct/function1/gcc/function1.expected +++ b/src/test/correct/function1/gcc/function1.expected @@ -1,85 +1,125 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R2: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2048bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -96,54 +136,35 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_stack, R0, R1, R31, stack; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); free requires (memory_load8_le(mem, 2049bv64) == 0bv8); @@ -157,38 +178,10 @@ procedure get_two() free requires (memory_load8_le(mem, 2057bv64) == 100bv8); free requires (memory_load8_le(mem, 2058bv64) == 10bv8); free requires (memory_load8_le(mem, 2059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 132bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -203,38 +196,12 @@ procedure get_two() free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -255,24 +222,11 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2048bv64) == 1bv8); free requires (memory_load8_le(mem, 2049bv64) == 0bv8); free requires (memory_load8_le(mem, 2050bv64) == 2bv8); @@ -285,38 +239,10 @@ procedure main() free requires (memory_load8_le(mem, 2057bv64) == 100bv8); free requires (memory_load8_le(mem, 2058bv64) == 10bv8); free requires (memory_load8_le(mem, 2059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 132bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -333,38 +259,12 @@ procedure main() free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -420,6 +320,7 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -434,38 +335,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2057bv64) == 100bv8); free requires (memory_load8_le(mem, 2058bv64) == 10bv8); free requires (memory_load8_le(mem, 2059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 132bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2048bv64) == 1bv8); free ensures (memory_load8_le(mem, 2049bv64) == 0bv8); free ensures (memory_load8_le(mem, 2050bv64) == 2bv8); @@ -478,35 +351,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/function1/gcc_O2/function1.expected b/src/test/correct/function1/gcc_O2/function1.expected index 8296db663..7d831c426 100644 --- a/src/test/correct/function1/gcc_O2/function1.expected +++ b/src/test/correct/function1/gcc_O2/function1.expected @@ -1,65 +1,100 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R3: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R2: bv64; + var {:extern} R29: bv64; + var {:extern} R3: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2048bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -76,53 +111,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69008bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -137,38 +153,10 @@ procedure __printf_chk(); free requires (memory_load8_le(mem, 2057bv64) == 100bv8); free requires (memory_load8_le(mem, 2058bv64) == 10bv8); free requires (memory_load8_le(mem, 2059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 208bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 128bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1664bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2048bv64) == 1bv8); free ensures (memory_load8_le(mem, 2049bv64) == 0bv8); free ensures (memory_load8_le(mem, 2050bv64) == 2bv8); @@ -181,57 +169,17 @@ procedure __printf_chk(); free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69008bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R3, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R3, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2048bv64) == 1bv8); free requires (memory_load8_le(mem, 2049bv64) == 0bv8); free requires (memory_load8_le(mem, 2050bv64) == 2bv8); @@ -244,38 +192,10 @@ procedure main() free requires (memory_load8_le(mem, 2057bv64) == 100bv8); free requires (memory_load8_le(mem, 2058bv64) == 10bv8); free requires (memory_load8_le(mem, 2059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 208bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 128bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1664bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -292,38 +212,12 @@ procedure main() free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv64; var Gamma_#1: bool; @@ -362,3 +256,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected b/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected index 711e70cf1..60cb7ea30 100644 --- a/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected +++ b/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected @@ -1,85 +1,125 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R2: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2048bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -96,54 +136,35 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_stack, R0, R1, R31, stack; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); free requires (memory_load8_le(mem, 2049bv64) == 0bv8); @@ -157,38 +178,10 @@ procedure get_two() free requires (memory_load8_le(mem, 2057bv64) == 100bv8); free requires (memory_load8_le(mem, 2058bv64) == 10bv8); free requires (memory_load8_le(mem, 2059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 132bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -203,38 +196,12 @@ procedure get_two() free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -255,24 +222,11 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2048bv64) == 1bv8); free requires (memory_load8_le(mem, 2049bv64) == 0bv8); free requires (memory_load8_le(mem, 2050bv64) == 2bv8); @@ -285,38 +239,10 @@ procedure main() free requires (memory_load8_le(mem, 2057bv64) == 100bv8); free requires (memory_load8_le(mem, 2058bv64) == 10bv8); free requires (memory_load8_le(mem, 2059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 132bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -333,38 +259,12 @@ procedure main() free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -420,6 +320,7 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -434,38 +335,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2057bv64) == 100bv8); free requires (memory_load8_le(mem, 2058bv64) == 10bv8); free requires (memory_load8_le(mem, 2059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 132bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1924bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2048bv64) == 1bv8); free ensures (memory_load8_le(mem, 2049bv64) == 0bv8); free ensures (memory_load8_le(mem, 2050bv64) == 2bv8); @@ -478,35 +351,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2057bv64) == 100bv8); free ensures (memory_load8_le(mem, 2058bv64) == 10bv8); free ensures (memory_load8_le(mem, 2059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 132bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/function1/gcc_pic/function1.expected b/src/test/correct/function1/gcc_pic/function1.expected index 313d20eac..9ecf76efe 100644 --- a/src/test/correct/function1/gcc_pic/function1.expected +++ b/src/test/correct/function1/gcc_pic/function1.expected @@ -1,85 +1,125 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R2: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2112bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -96,70 +136,37 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2121bv64) == 100bv8); free ensures (memory_load8_le(mem, 2122bv64) == 10bv8); free ensures (memory_load8_le(mem, 2123bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 196bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1988bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 1936bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure get_two() + + +procedure get_two(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_stack, R0, R1, R31, stack; free requires (memory_load8_le(mem, 2112bv64) == 1bv8); free requires (memory_load8_le(mem, 2113bv64) == 0bv8); @@ -173,54 +180,12 @@ procedure get_two() free requires (memory_load8_le(mem, 2121bv64) == 100bv8); free requires (memory_load8_le(mem, 2122bv64) == 10bv8); free requires (memory_load8_le(mem, 2123bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 196bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 64bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 144bv8); - free requires (memory_load8_le(mem, 68993bv64) == 7bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1988bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1856bv64); + free requires (memory_load64_le(mem, 68992bv64) == 1936bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 2112bv64) == 1bv8); @@ -235,54 +200,14 @@ procedure get_two() free ensures (memory_load8_le(mem, 2121bv64) == 100bv8); free ensures (memory_load8_le(mem, 2122bv64) == 10bv8); free ensures (memory_load8_le(mem, 2123bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 196bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1988bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 1936bv64); + +implementation get_two() { lget_two: assume {:captureState "lget_two"} true; @@ -303,24 +228,11 @@ procedure get_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2112bv64) == 1bv8); free requires (memory_load8_le(mem, 2113bv64) == 0bv8); free requires (memory_load8_le(mem, 2114bv64) == 2bv8); @@ -333,54 +245,12 @@ procedure main() free requires (memory_load8_le(mem, 2121bv64) == 100bv8); free requires (memory_load8_le(mem, 2122bv64) == 10bv8); free requires (memory_load8_le(mem, 2123bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 196bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 64bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 144bv8); - free requires (memory_load8_le(mem, 68993bv64) == 7bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1988bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1856bv64); + free requires (memory_load64_le(mem, 68992bv64) == 1936bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -397,54 +267,14 @@ procedure main() free ensures (memory_load8_le(mem, 2121bv64) == 100bv8); free ensures (memory_load8_le(mem, 2122bv64) == 10bv8); free ensures (memory_load8_le(mem, 2123bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 196bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1988bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 1936bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -503,6 +333,7 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2112bv64) == 1bv8); @@ -517,54 +348,12 @@ procedure printf(); free requires (memory_load8_le(mem, 2121bv64) == 100bv8); free requires (memory_load8_le(mem, 2122bv64) == 10bv8); free requires (memory_load8_le(mem, 2123bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 196bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 64bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 144bv8); - free requires (memory_load8_le(mem, 68993bv64) == 7bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1988bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1856bv64); + free requires (memory_load64_le(mem, 68992bv64) == 1936bv64); free ensures (memory_load8_le(mem, 2112bv64) == 1bv8); free ensures (memory_load8_le(mem, 2113bv64) == 0bv8); free ensures (memory_load8_le(mem, 2114bv64) == 2bv8); @@ -577,51 +366,12 @@ procedure printf(); free ensures (memory_load8_le(mem, 2121bv64) == 100bv8); free ensures (memory_load8_le(mem, 2122bv64) == 10bv8); free ensures (memory_load8_le(mem, 2123bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 196bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1988bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 1936bv64); + + + diff --git a/src/test/correct/functions_with_params/clang/functions_with_params.expected b/src/test/correct/functions_with_params/clang/functions_with_params.expected index dfe4dc6cb..c2403f1b2 100644 --- a/src/test/correct/functions_with_params/clang/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang/functions_with_params.expected @@ -1,58 +1,85 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1912bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -61,107 +88,46 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_stack, R0, R29, R30, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -170,38 +136,12 @@ procedure main() free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -238,82 +178,29 @@ procedure main() return; } -procedure plus_one() + +procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1912bv64) == 1bv8); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation plus_one() { lplus_one: assume {:captureState "lplus_one"} true; @@ -325,3 +212,5 @@ procedure plus_one() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected b/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected index c92fd296f..f444aac68 100644 --- a/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected @@ -1,13 +1,26 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1848bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -16,146 +29,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1849bv64) == 0bv8); free ensures (memory_load8_le(mem, 1850bv64) == 2bv8); free ensures (memory_load8_le(mem, 1851bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1848bv64) == 1bv8); free requires (memory_load8_le(mem, 1849bv64) == 0bv8); free requires (memory_load8_le(mem, 1850bv64) == 2bv8); free requires (memory_load8_le(mem, 1851bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1848bv64) == 1bv8); free ensures (memory_load8_le(mem, 1849bv64) == 0bv8); free ensures (memory_load8_le(mem, 1850bv64) == 2bv8); free ensures (memory_load8_le(mem, 1851bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected b/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected index 1136a902b..38183a912 100644 --- a/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected @@ -1,58 +1,85 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1912bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -61,107 +88,46 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_stack, R0, R29, R30, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -170,38 +136,12 @@ procedure main() free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -238,82 +178,29 @@ procedure main() return; } -procedure plus_one() + +procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1912bv64) == 1bv8); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation plus_one() { lplus_one: assume {:captureState "lplus_one"} true; @@ -325,3 +212,5 @@ procedure plus_one() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected b/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected index 1136a902b..38183a912 100644 --- a/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected @@ -1,58 +1,85 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1912bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -61,107 +88,46 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_stack, R0, R29, R30, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -170,38 +136,12 @@ procedure main() free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -238,82 +178,29 @@ procedure main() return; } -procedure plus_one() + +procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1912bv64) == 1bv8); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation plus_one() { lplus_one: assume {:captureState "lplus_one"} true; @@ -325,3 +212,5 @@ procedure plus_one() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/functions_with_params/gcc/functions_with_params.expected b/src/test/correct/functions_with_params/gcc/functions_with_params.expected index 284845f2f..f06412bb7 100644 --- a/src/test/correct/functions_with_params/gcc/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc/functions_with_params.expected @@ -1,56 +1,81 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1904bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -59,107 +84,46 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1904bv64) == 1bv8); free requires (memory_load8_le(mem, 1905bv64) == 0bv8); free requires (memory_load8_le(mem, 1906bv64) == 2bv8); free requires (memory_load8_le(mem, 1907bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -168,38 +132,12 @@ procedure main() free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -233,82 +171,29 @@ procedure main() return; } -procedure plus_one() + +procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load8_le(mem, 1904bv64) == 1bv8); free requires (memory_load8_le(mem, 1905bv64) == 0bv8); free requires (memory_load8_le(mem, 1906bv64) == 2bv8); free requires (memory_load8_le(mem, 1907bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1904bv64) == 1bv8); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation plus_one() { lplus_one: assume {:captureState "lplus_one"} true; @@ -320,3 +205,5 @@ procedure plus_one() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected b/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected index 031602cf6..12da93fb9 100644 --- a/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected @@ -1,13 +1,26 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1916bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -16,146 +29,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected b/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected index 03251913e..16e0ad0fc 100644 --- a/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected @@ -1,56 +1,81 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1904bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -59,107 +84,46 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1904bv64) == 1bv8); free requires (memory_load8_le(mem, 1905bv64) == 0bv8); free requires (memory_load8_le(mem, 1906bv64) == 2bv8); free requires (memory_load8_le(mem, 1907bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -168,38 +132,12 @@ procedure main() free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -233,82 +171,29 @@ procedure main() return; } -procedure plus_one() + +procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load8_le(mem, 1904bv64) == 1bv8); free requires (memory_load8_le(mem, 1905bv64) == 0bv8); free requires (memory_load8_le(mem, 1906bv64) == 2bv8); free requires (memory_load8_le(mem, 1907bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1904bv64) == 1bv8); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation plus_one() { lplus_one: assume {:captureState "lplus_one"} true; @@ -320,3 +205,5 @@ procedure plus_one() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected b/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected index 03251913e..16e0ad0fc 100644 --- a/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected @@ -1,56 +1,81 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1904bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -59,107 +84,46 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1904bv64) == 1bv8); free requires (memory_load8_le(mem, 1905bv64) == 0bv8); free requires (memory_load8_le(mem, 1906bv64) == 2bv8); free requires (memory_load8_le(mem, 1907bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -168,38 +132,12 @@ procedure main() free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -233,82 +171,29 @@ procedure main() return; } -procedure plus_one() + +procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load8_le(mem, 1904bv64) == 1bv8); free requires (memory_load8_le(mem, 1905bv64) == 0bv8); free requires (memory_load8_le(mem, 1906bv64) == 2bv8); free requires (memory_load8_le(mem, 1907bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1904bv64) == 1bv8); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation plus_one() { lplus_one: assume {:captureState "lplus_one"} true; @@ -320,3 +205,5 @@ procedure plus_one() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/ifbranches/clang/ifbranches.expected b/src/test/correct/ifbranches/clang/ifbranches.expected index f43c98adb..3611b27d4 100644 --- a/src/test/correct/ifbranches/clang/ifbranches.expected +++ b/src/test/correct/ifbranches/clang/ifbranches.expected @@ -1,53 +1,87 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -56,146 +90,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -269,7 +216,7 @@ procedure main() goto l0000034c; lmain_goto_l0000034f: assume {:captureState "lmain_goto_l0000034f"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000034f; l00000352_goto_l0000035a: assume {:captureState "l00000352_goto_l0000035a"} true; @@ -277,6 +224,8 @@ procedure main() goto l0000035a; l00000352_goto_l00000397: assume {:captureState "l00000352_goto_l00000397"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000397; } + + diff --git a/src/test/correct/ifbranches/clang_O2/ifbranches.expected b/src/test/correct/ifbranches/clang_O2/ifbranches.expected index 4617d4c7f..612ea9149 100644 --- a/src/test/correct/ifbranches/clang_O2/ifbranches.expected +++ b/src/test/correct/ifbranches/clang_O2/ifbranches.expected @@ -1,22 +1,45 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + +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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -25,144 +48,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1849bv64) == 0bv8); free ensures (memory_load8_le(mem, 1850bv64) == 2bv8); free ensures (memory_load8_le(mem, 1851bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R8, R0, R8; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1848bv64) == 1bv8); free requires (memory_load8_le(mem, 1849bv64) == 0bv8); free requires (memory_load8_le(mem, 1850bv64) == 2bv8); free requires (memory_load8_le(mem, 1851bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1848bv64) == 1bv8); free ensures (memory_load8_le(mem, 1849bv64) == 0bv8); free ensures (memory_load8_le(mem, 1850bv64) == 2bv8); free ensures (memory_load8_le(mem, 1851bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -201,6 +137,8 @@ procedure main() goto l000002db; lmain_goto_l000002df: assume {:captureState "lmain_goto_l000002df"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000002df; } + + diff --git a/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected b/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected index 852ead596..d436b4aea 100644 --- a/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected @@ -1,53 +1,87 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -56,146 +90,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -269,7 +216,7 @@ procedure main() goto l000009b8; lmain_goto_l000009bb: assume {:captureState "lmain_goto_l000009bb"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000009bb; l000009be_goto_l000009c6: assume {:captureState "l000009be_goto_l000009c6"} true; @@ -277,6 +224,8 @@ procedure main() goto l000009c6; l000009be_goto_l00000a03: assume {:captureState "l000009be_goto_l00000a03"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000a03; } + + diff --git a/src/test/correct/ifbranches/clang_pic/ifbranches.expected b/src/test/correct/ifbranches/clang_pic/ifbranches.expected index 852ead596..d436b4aea 100644 --- a/src/test/correct/ifbranches/clang_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/clang_pic/ifbranches.expected @@ -1,53 +1,87 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -56,146 +90,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -269,7 +216,7 @@ procedure main() goto l000009b8; lmain_goto_l000009bb: assume {:captureState "lmain_goto_l000009bb"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000009bb; l000009be_goto_l000009c6: assume {:captureState "l000009be_goto_l000009c6"} true; @@ -277,6 +224,8 @@ procedure main() goto l000009c6; l000009be_goto_l00000a03: assume {:captureState "l000009be_goto_l00000a03"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000a03; } + + diff --git a/src/test/correct/ifbranches/gcc/ifbranches.expected b/src/test/correct/ifbranches/gcc/ifbranches.expected index cd7916e92..4c3fa92a9 100644 --- a/src/test/correct/ifbranches/gcc/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc/ifbranches.expected @@ -1,51 +1,83 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -54,146 +86,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1904bv64) == 1bv8); free requires (memory_load8_le(mem, 1905bv64) == 0bv8); free requires (memory_load8_le(mem, 1906bv64) == 2bv8); free requires (memory_load8_le(mem, 1907bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1904bv64) == 1bv8); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -249,6 +194,8 @@ procedure main() goto l00000330; lmain_goto_l00000369: assume {:captureState "lmain_goto_l00000369"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000369; } + + diff --git a/src/test/correct/ifbranches/gcc_O2/ifbranches.expected b/src/test/correct/ifbranches/gcc_O2/ifbranches.expected index 6a212af81..1158eab11 100644 --- a/src/test/correct/ifbranches/gcc_O2/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc_O2/ifbranches.expected @@ -1,20 +1,41 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + +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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -23,144 +44,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv32; var CF: bv1; @@ -199,6 +133,8 @@ procedure main() goto l000001c3; lmain_goto_l000001c6: assume {:captureState "lmain_goto_l000001c6"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000001c6; } + + diff --git a/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected b/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected index da091cc0a..664e7d49d 100644 --- a/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected @@ -1,51 +1,83 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -54,146 +86,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1904bv64) == 1bv8); free requires (memory_load8_le(mem, 1905bv64) == 0bv8); free requires (memory_load8_le(mem, 1906bv64) == 2bv8); free requires (memory_load8_le(mem, 1907bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1904bv64) == 1bv8); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -249,6 +194,8 @@ procedure main() goto l00000963; lmain_goto_l0000099c: assume {:captureState "lmain_goto_l0000099c"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000099c; } + + diff --git a/src/test/correct/ifbranches/gcc_pic/ifbranches.expected b/src/test/correct/ifbranches/gcc_pic/ifbranches.expected index da091cc0a..664e7d49d 100644 --- a/src/test/correct/ifbranches/gcc_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc_pic/ifbranches.expected @@ -1,51 +1,83 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -54,146 +86,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1904bv64) == 1bv8); free requires (memory_load8_le(mem, 1905bv64) == 0bv8); free requires (memory_load8_le(mem, 1906bv64) == 2bv8); free requires (memory_load8_le(mem, 1907bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1904bv64) == 1bv8); free ensures (memory_load8_le(mem, 1905bv64) == 0bv8); free ensures (memory_load8_le(mem, 1906bv64) == 2bv8); free ensures (memory_load8_le(mem, 1907bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -249,6 +194,8 @@ procedure main() goto l00000963; lmain_goto_l0000099c: assume {:captureState "lmain_goto_l0000099c"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000099c; } + + diff --git a/src/test/correct/ifglobal/clang/ifglobal.expected b/src/test/correct/ifglobal/clang/ifglobal.expected index 70d46adf3..86e9dd627 100644 --- a/src/test/correct/ifglobal/clang/ifglobal.expected +++ b/src/test/correct/ifglobal/clang/ifglobal.expected @@ -1,51 +1,85 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -54,145 +88,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -255,7 +202,7 @@ procedure main() goto l0000031e; lmain_goto_l00000321: assume {:captureState "lmain_goto_l00000321"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000321; l00000324_goto_l0000032c: assume {:captureState "l00000324_goto_l0000032c"} true; @@ -263,6 +210,8 @@ procedure main() goto l0000032c; l00000324_goto_l00000343: assume {:captureState "l00000324_goto_l00000343"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000343; } + + diff --git a/src/test/correct/ifglobal/clang_O2/ifglobal.expected b/src/test/correct/ifglobal/clang_O2/ifglobal.expected index 2181d6c4f..998c3150b 100644 --- a/src/test/correct/ifglobal/clang_O2/ifglobal.expected +++ b/src/test/correct/ifglobal/clang_O2/ifglobal.expected @@ -1,40 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -43,143 +66,56 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -207,6 +143,8 @@ procedure main() goto l000002dc; lmain_goto_l000002f8: assume {:captureState "lmain_goto_l000002f8"} true; - assume (bvcomp32(R9[32:0], 0bv32) == 0bv1); + assume (!(bvcomp32(R9[32:0], 0bv32) != 0bv1)); goto l000002f8; } + + diff --git a/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected b/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected index 8ae5517aa..fcdee18ee 100644 --- a/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected @@ -1,51 +1,85 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -54,145 +88,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -255,7 +202,7 @@ procedure main() goto l0000092d; lmain_goto_l00000930: assume {:captureState "lmain_goto_l00000930"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000930; l00000933_goto_l0000093b: assume {:captureState "l00000933_goto_l0000093b"} true; @@ -263,6 +210,8 @@ procedure main() goto l0000093b; l00000933_goto_l00000952: assume {:captureState "l00000933_goto_l00000952"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000952; } + + diff --git a/src/test/correct/ifglobal/clang_pic/ifglobal.expected b/src/test/correct/ifglobal/clang_pic/ifglobal.expected index 2f170c699..786dbed28 100644 --- a/src/test/correct/ifglobal/clang_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/clang_pic/ifglobal.expected @@ -1,59 +1,90 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -62,169 +93,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); free requires (memory_load8_le(mem, 1967bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 52bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 80bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 0bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1964bv64) == 1bv8); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -291,7 +214,7 @@ procedure main() goto l0000032d; lmain_goto_l00000330: assume {:captureState "lmain_goto_l00000330"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000330; l00000333_goto_l0000033b: assume {:captureState "l00000333_goto_l0000033b"} true; @@ -299,6 +222,8 @@ procedure main() goto l0000033b; l00000333_goto_l00000352: assume {:captureState "l00000333_goto_l00000352"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000352; } + + diff --git a/src/test/correct/ifglobal/gcc/ifglobal.expected b/src/test/correct/ifglobal/gcc/ifglobal.expected index a82d65ba3..1fcb21719 100644 --- a/src/test/correct/ifglobal/gcc/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc/ifglobal.expected @@ -1,45 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -48,143 +76,56 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1877bv64) == 0bv8); free ensures (memory_load8_le(mem, 1878bv64) == 2bv8); free ensures (memory_load8_le(mem, 1879bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1876bv64) == 1bv8); free requires (memory_load8_le(mem, 1877bv64) == 0bv8); free requires (memory_load8_le(mem, 1878bv64) == 2bv8); free requires (memory_load8_le(mem, 1879bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1876bv64) == 1bv8); free ensures (memory_load8_le(mem, 1877bv64) == 0bv8); free ensures (memory_load8_le(mem, 1878bv64) == 2bv8); free ensures (memory_load8_le(mem, 1879bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -229,6 +170,8 @@ procedure main() goto l00000302; lmain_goto_l00000311: assume {:captureState "lmain_goto_l00000311"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000311; } + + diff --git a/src/test/correct/ifglobal/gcc_O2/ifglobal.expected b/src/test/correct/ifglobal/gcc_O2/ifglobal.expected index 07170dee4..6dcab0b9a 100644 --- a/src/test/correct/ifglobal/gcc_O2/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc_O2/ifglobal.expected @@ -1,39 +1,61 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -42,143 +64,56 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -205,6 +140,8 @@ procedure main() goto l000001b7; lmain_goto_l00000396: assume {:captureState "lmain_goto_l00000396"} true; - assume (bvnot1(bvcomp32(R1[32:0], 0bv32)) == 0bv1); + assume (!(bvnot1(bvcomp32(R1[32:0], 0bv32)) != 0bv1)); goto l00000396; } + + diff --git a/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected b/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected index bc013859c..0007e6442 100644 --- a/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected @@ -1,45 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -48,143 +76,56 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1877bv64) == 0bv8); free ensures (memory_load8_le(mem, 1878bv64) == 2bv8); free ensures (memory_load8_le(mem, 1879bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1876bv64) == 1bv8); free requires (memory_load8_le(mem, 1877bv64) == 0bv8); free requires (memory_load8_le(mem, 1878bv64) == 2bv8); free requires (memory_load8_le(mem, 1879bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1876bv64) == 1bv8); free ensures (memory_load8_le(mem, 1877bv64) == 0bv8); free ensures (memory_load8_le(mem, 1878bv64) == 2bv8); free ensures (memory_load8_le(mem, 1879bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -229,6 +170,8 @@ procedure main() goto l000008d6; lmain_goto_l000008e5: assume {:captureState "lmain_goto_l000008e5"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000008e5; } + + diff --git a/src/test/correct/ifglobal/gcc_pic/ifglobal.expected b/src/test/correct/ifglobal/gcc_pic/ifglobal.expected index 66adb7f43..48308d4fc 100644 --- a/src/test/correct/ifglobal/gcc_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc_pic/ifglobal.expected @@ -1,53 +1,78 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -56,167 +81,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1941bv64) == 0bv8); free ensures (memory_load8_le(mem, 1942bv64) == 2bv8); free ensures (memory_load8_le(mem, 1943bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1940bv64) == 1bv8); free requires (memory_load8_le(mem, 1941bv64) == 0bv8); free requires (memory_load8_le(mem, 1942bv64) == 2bv8); free requires (memory_load8_le(mem, 1943bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); free ensures (memory_load8_le(mem, 1940bv64) == 1bv8); free ensures (memory_load8_le(mem, 1941bv64) == 0bv8); free ensures (memory_load8_le(mem, 1942bv64) == 2bv8); free ensures (memory_load8_le(mem, 1943bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -263,6 +180,8 @@ procedure main() goto l00000303; lmain_goto_l00000312: assume {:captureState "lmain_goto_l00000312"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000312; } + + diff --git a/src/test/correct/indirect_call/clang_O2/indirect_call.expected b/src/test/correct/indirect_call/clang_O2/indirect_call.expected index d04773ed9..146af610a 100644 --- a/src/test/correct/indirect_call/clang_O2/indirect_call.expected +++ b/src/test/correct/indirect_call/clang_O2/indirect_call.expected @@ -1,42 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R16: bv64; + var {:extern} R17: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1952bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -87,71 +110,38 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1995bv64) == 121bv8); free ensures (memory_load8_le(mem, 1996bv64) == 58bv8); free ensures (memory_load8_le(mem, 1997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 96bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1888bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free requires (memory_load8_le(mem, 1952bv64) == 1bv8); free requires (memory_load8_le(mem, 1953bv64) == 0bv8); free requires (memory_load8_le(mem, 1954bv64) == 2bv8); @@ -198,38 +188,10 @@ procedure main() free requires (memory_load8_le(mem, 1995bv64) == 121bv8); free requires (memory_load8_le(mem, 1996bv64) == 58bv8); free requires (memory_load8_le(mem, 1997bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 96bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1888bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -280,38 +242,12 @@ procedure main() free ensures (memory_load8_le(mem, 1995bv64) == 121bv8); free ensures (memory_load8_le(mem, 1996bv64) == 58bv8); free ensures (memory_load8_le(mem, 1997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 96bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1888bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -345,6 +281,7 @@ procedure main() return; } + procedure puts(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1952bv64) == 1bv8); @@ -393,38 +330,10 @@ procedure puts(); free requires (memory_load8_le(mem, 1995bv64) == 121bv8); free requires (memory_load8_le(mem, 1996bv64) == 58bv8); free requires (memory_load8_le(mem, 1997bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 96bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1888bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (memory_load8_le(mem, 1952bv64) == 1bv8); free ensures (memory_load8_le(mem, 1953bv64) == 0bv8); free ensures (memory_load8_le(mem, 1954bv64) == 2bv8); @@ -471,35 +380,10 @@ procedure puts(); free ensures (memory_load8_le(mem, 1995bv64) == 121bv8); free ensures (memory_load8_le(mem, 1996bv64) == 58bv8); free ensures (memory_load8_le(mem, 1997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 96bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1888bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + diff --git a/src/test/correct/indirect_call/gcc_O2/indirect_call.expected b/src/test/correct/indirect_call/gcc_O2/indirect_call.expected index 992bdfc81..c7c0873ff 100644 --- a/src/test/correct/indirect_call/gcc_O2/indirect_call.expected +++ b/src/test/correct/indirect_call/gcc_O2/indirect_call.expected @@ -1,42 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R16: bv64; + var {:extern} R17: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1984bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -93,54 +116,35 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2033bv64) == 121bv8); free ensures (memory_load8_le(mem, 2034bv64) == 58bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69008bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1600bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure greet() + + +procedure greet(); modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; free requires (memory_load8_le(mem, 1984bv64) == 1bv8); free requires (memory_load8_le(mem, 1985bv64) == 0bv8); @@ -194,38 +198,10 @@ procedure greet() free requires (memory_load8_le(mem, 2033bv64) == 121bv8); free requires (memory_load8_le(mem, 2034bv64) == 58bv8); free requires (memory_load8_le(mem, 2035bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 144bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 64bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 64bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1936bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1856bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1600bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1984bv64) == 1bv8); free ensures (memory_load8_le(mem, 1985bv64) == 0bv8); free ensures (memory_load8_le(mem, 1986bv64) == 2bv8); @@ -278,38 +254,12 @@ procedure greet() free ensures (memory_load8_le(mem, 2033bv64) == 121bv8); free ensures (memory_load8_le(mem, 2034bv64) == 58bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1600bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation greet() { lgreet: assume {:captureState "lgreet"} true; @@ -320,24 +270,11 @@ procedure greet() assume false; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1984bv64) == 1bv8); free requires (memory_load8_le(mem, 1985bv64) == 0bv8); free requires (memory_load8_le(mem, 1986bv64) == 2bv8); @@ -390,38 +327,10 @@ procedure main() free requires (memory_load8_le(mem, 2033bv64) == 121bv8); free requires (memory_load8_le(mem, 2034bv64) == 58bv8); free requires (memory_load8_le(mem, 2035bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 144bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 64bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 64bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1936bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1856bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1600bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -478,38 +387,12 @@ procedure main() free ensures (memory_load8_le(mem, 2033bv64) == 121bv8); free ensures (memory_load8_le(mem, 2034bv64) == 58bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1600bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv64; var Gamma_#1: bool; @@ -541,6 +424,7 @@ procedure main() return; } + procedure puts(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1984bv64) == 1bv8); @@ -595,38 +479,10 @@ procedure puts(); free requires (memory_load8_le(mem, 2033bv64) == 121bv8); free requires (memory_load8_le(mem, 2034bv64) == 58bv8); free requires (memory_load8_le(mem, 2035bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 144bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 64bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 64bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1936bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1856bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1600bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1984bv64) == 1bv8); free ensures (memory_load8_le(mem, 1985bv64) == 0bv8); free ensures (memory_load8_le(mem, 1986bv64) == 2bv8); @@ -679,35 +535,10 @@ procedure puts(); free ensures (memory_load8_le(mem, 2033bv64) == 121bv8); free ensures (memory_load8_le(mem, 2034bv64) == 58bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1600bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/initialisation/clang/initialisation.expected b/src/test/correct/initialisation/clang/initialisation.expected index 4a8b8a7ad..eb2577831 100644 --- a/src/test/correct/initialisation/clang/initialisation.expected +++ b/src/test/correct/initialisation/clang/initialisation.expected @@ -1,85 +1,124 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R11: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R11: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $a_addr: bv64; axiom ($a_addr == 69696bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69680bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd65(bv65, bv65) returns (bv65); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp64(bv64, bv64) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp65(bv65, bv65) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_64(bv64) returns (bv65); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_64(bv64) returns (bv65); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -88,131 +127,49 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 5bv8); - free requires (memory_load8_le(mem, 69681bv64) == 0bv8); - free requires (memory_load8_le(mem, 69682bv64) == 0bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 97bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 255bv8); - free requires (memory_load8_le(mem, 69689bv64) == 255bv8); - free requires (memory_load8_le(mem, 69690bv64) == 255bv8); - free requires (memory_load8_le(mem, 69691bv64) == 255bv8); - free requires (memory_load8_le(mem, 69692bv64) == 15bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 1bv8); - free requires (memory_load8_le(mem, 69697bv64) == 0bv8); - free requires (memory_load8_le(mem, 69698bv64) == 0bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 2bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69680bv64) == 416611827717bv64); + free requires (memory_load64_le(mem, 69688bv64) == 68719476735bv64); + free requires (memory_load64_le(mem, 69696bv64) == 8589934593bv64); free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (memory_load32_le(mem, $x_addr) == 6bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 4bv64)) == 4bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 0bv64)) == 1bv32); @@ -220,38 +177,12 @@ procedure main() free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv64; var CF: bv1; @@ -307,3 +238,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/initialisation/clang_O2/initialisation.expected b/src/test/correct/initialisation/clang_O2/initialisation.expected index 5bbd94028..4ab3a4b4e 100644 --- a/src/test/correct/initialisation/clang_O2/initialisation.expected +++ b/src/test/correct/initialisation/clang_O2/initialisation.expected @@ -1,87 +1,128 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R11: bool; + var {:extern} Gamma_R12: bool; + var {:extern} Gamma_R13: bool; + var {:extern} Gamma_R14: bool; + var {:extern} Gamma_R15: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R11: bv64; + var {:extern} R12: bv64; + var {:extern} R13: bv64; + var {:extern} R14: bv64; + var {:extern} R15: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $a_addr: bv64; axiom ($a_addr == 69696bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69680bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,131 +131,49 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1909bv64) == 0bv8); free ensures (memory_load8_le(mem, 1910bv64) == 2bv8); free ensures (memory_load8_le(mem, 1911bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R12, Gamma_R13, Gamma_R14, Gamma_R15, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R12, R13, R14, R15, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 5bv8); - free requires (memory_load8_le(mem, 69681bv64) == 0bv8); - free requires (memory_load8_le(mem, 69682bv64) == 0bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 97bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 255bv8); - free requires (memory_load8_le(mem, 69689bv64) == 255bv8); - free requires (memory_load8_le(mem, 69690bv64) == 255bv8); - free requires (memory_load8_le(mem, 69691bv64) == 255bv8); - free requires (memory_load8_le(mem, 69692bv64) == 15bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 1bv8); - free requires (memory_load8_le(mem, 69697bv64) == 0bv8); - free requires (memory_load8_le(mem, 69698bv64) == 0bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 2bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69680bv64) == 416611827717bv64); + free requires (memory_load64_le(mem, 69688bv64) == 68719476735bv64); + free requires (memory_load64_le(mem, 69696bv64) == 8589934593bv64); free requires (memory_load8_le(mem, 1908bv64) == 1bv8); free requires (memory_load8_le(mem, 1909bv64) == 0bv8); free requires (memory_load8_le(mem, 1910bv64) == 2bv8); free requires (memory_load8_le(mem, 1911bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (memory_load32_le(mem, $x_addr) == 6bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 4bv64)) == 4bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 0bv64)) == 1bv32); @@ -222,38 +181,12 @@ procedure main() free ensures (memory_load8_le(mem, 1909bv64) == 0bv8); free ensures (memory_load8_le(mem, 1910bv64) == 2bv8); free ensures (memory_load8_le(mem, 1911bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -293,3 +226,5 @@ procedure main() assume {:captureState "%00000367"} true; return; } + + diff --git a/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected b/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected index 2487e0171..8ceb6039a 100644 --- a/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected +++ b/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected @@ -1,85 +1,124 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R11: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R11: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $a_addr: bv64; axiom ($a_addr == 69696bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69680bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd65(bv65, bv65) returns (bv65); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp64(bv64, bv64) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp65(bv65, bv65) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_64(bv64) returns (bv65); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_64(bv64) returns (bv65); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -88,131 +127,49 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 5bv8); - free requires (memory_load8_le(mem, 69681bv64) == 0bv8); - free requires (memory_load8_le(mem, 69682bv64) == 0bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 97bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 255bv8); - free requires (memory_load8_le(mem, 69689bv64) == 255bv8); - free requires (memory_load8_le(mem, 69690bv64) == 255bv8); - free requires (memory_load8_le(mem, 69691bv64) == 255bv8); - free requires (memory_load8_le(mem, 69692bv64) == 15bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 1bv8); - free requires (memory_load8_le(mem, 69697bv64) == 0bv8); - free requires (memory_load8_le(mem, 69698bv64) == 0bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 2bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69680bv64) == 416611827717bv64); + free requires (memory_load64_le(mem, 69688bv64) == 68719476735bv64); + free requires (memory_load64_le(mem, 69696bv64) == 8589934593bv64); free requires (memory_load8_le(mem, 1912bv64) == 1bv8); free requires (memory_load8_le(mem, 1913bv64) == 0bv8); free requires (memory_load8_le(mem, 1914bv64) == 2bv8); free requires (memory_load8_le(mem, 1915bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (memory_load32_le(mem, $x_addr) == 6bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 4bv64)) == 4bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 0bv64)) == 1bv32); @@ -220,38 +177,12 @@ procedure main() free ensures (memory_load8_le(mem, 1913bv64) == 0bv8); free ensures (memory_load8_le(mem, 1914bv64) == 2bv8); free ensures (memory_load8_le(mem, 1915bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv64; var CF: bv1; @@ -307,3 +238,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/initialisation/clang_pic/initialisation.expected b/src/test/correct/initialisation/clang_pic/initialisation.expected index 6fb983d9b..18140d188 100644 --- a/src/test/correct/initialisation/clang_pic/initialisation.expected +++ b/src/test/correct/initialisation/clang_pic/initialisation.expected @@ -1,83 +1,120 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $a_addr: bv64; axiom ($a_addr == 69696bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69680bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd65(bv65, bv65) returns (bv65); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp64(bv64, bv64) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp65(bv65, bv65) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_64(bv64) returns (bv65); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_64(bv64) returns (bv65); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -86,195 +123,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2049bv64) == 0bv8); free ensures (memory_load8_le(mem, 2050bv64) == 2bv8); free ensures (memory_load8_le(mem, 2051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69552bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69553bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69554bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69555bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69556bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69557bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69558bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69559bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69040bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69041bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69042bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69043bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69044bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69045bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69046bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69047bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 148bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69032bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69033bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69034bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69036bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69037bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69038bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69039bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69560bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69561bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69562bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69563bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69564bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69565bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69566bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69567bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69552bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69040bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1940bv64); + free ensures (memory_load64_le(mem, 69032bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69560bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 5bv8); - free requires (memory_load8_le(mem, 69681bv64) == 0bv8); - free requires (memory_load8_le(mem, 69682bv64) == 0bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 97bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); - free requires (memory_load8_le(mem, 69688bv64) == 255bv8); - free requires (memory_load8_le(mem, 69689bv64) == 255bv8); - free requires (memory_load8_le(mem, 69690bv64) == 255bv8); - free requires (memory_load8_le(mem, 69691bv64) == 255bv8); - free requires (memory_load8_le(mem, 69692bv64) == 15bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 1bv8); - free requires (memory_load8_le(mem, 69697bv64) == 0bv8); - free requires (memory_load8_le(mem, 69698bv64) == 0bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 2bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69680bv64) == 416611827717bv64); + free requires (memory_load64_le(mem, 69688bv64) == 68719476735bv64); + free requires (memory_load64_le(mem, 69696bv64) == 8589934593bv64); free requires (memory_load8_le(mem, 2048bv64) == 1bv8); free requires (memory_load8_le(mem, 2049bv64) == 0bv8); free requires (memory_load8_le(mem, 2050bv64) == 2bv8); free requires (memory_load8_le(mem, 2051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 64bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 52bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69552bv64) == 56bv8); - free requires (memory_load8_le(mem, 69553bv64) == 16bv8); - free requires (memory_load8_le(mem, 69554bv64) == 1bv8); - free requires (memory_load8_le(mem, 69555bv64) == 0bv8); - free requires (memory_load8_le(mem, 69556bv64) == 0bv8); - free requires (memory_load8_le(mem, 69557bv64) == 0bv8); - free requires (memory_load8_le(mem, 69558bv64) == 0bv8); - free requires (memory_load8_le(mem, 69559bv64) == 0bv8); - free requires (memory_load8_le(mem, 69040bv64) == 64bv8); - free requires (memory_load8_le(mem, 69041bv64) == 7bv8); - free requires (memory_load8_le(mem, 69042bv64) == 0bv8); - free requires (memory_load8_le(mem, 69043bv64) == 0bv8); - free requires (memory_load8_le(mem, 69044bv64) == 0bv8); - free requires (memory_load8_le(mem, 69045bv64) == 0bv8); - free requires (memory_load8_le(mem, 69046bv64) == 0bv8); - free requires (memory_load8_le(mem, 69047bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 148bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69032bv64) == 144bv8); - free requires (memory_load8_le(mem, 69033bv64) == 7bv8); - free requires (memory_load8_le(mem, 69034bv64) == 0bv8); - free requires (memory_load8_le(mem, 69035bv64) == 0bv8); - free requires (memory_load8_le(mem, 69036bv64) == 0bv8); - free requires (memory_load8_le(mem, 69037bv64) == 0bv8); - free requires (memory_load8_le(mem, 69038bv64) == 0bv8); - free requires (memory_load8_le(mem, 69039bv64) == 0bv8); - free requires (memory_load8_le(mem, 69560bv64) == 48bv8); - free requires (memory_load8_le(mem, 69561bv64) == 16bv8); - free requires (memory_load8_le(mem, 69562bv64) == 1bv8); - free requires (memory_load8_le(mem, 69563bv64) == 0bv8); - free requires (memory_load8_le(mem, 69564bv64) == 0bv8); - free requires (memory_load8_le(mem, 69565bv64) == 0bv8); - free requires (memory_load8_le(mem, 69566bv64) == 0bv8); - free requires (memory_load8_le(mem, 69567bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69696bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69552bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69040bv64) == 1856bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1940bv64); + free requires (memory_load64_le(mem, 69032bv64) == 1936bv64); + free requires (memory_load64_le(mem, 69560bv64) == 69680bv64); ensures (memory_load32_le(mem, $x_addr) == 6bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 4bv64)) == 4bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 0bv64)) == 1bv32); @@ -282,70 +181,16 @@ procedure main() free ensures (memory_load8_le(mem, 2049bv64) == 0bv8); free ensures (memory_load8_le(mem, 2050bv64) == 2bv8); free ensures (memory_load8_le(mem, 2051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69552bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69553bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69554bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69555bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69556bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69557bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69558bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69559bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69040bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69041bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69042bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69043bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69044bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69045bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69046bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69047bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 148bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69032bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69033bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69034bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69036bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69037bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69038bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69039bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69560bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69561bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69562bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69563bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69564bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69565bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69566bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69567bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69552bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69040bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1940bv64); + free ensures (memory_load64_le(mem, 69032bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69560bv64) == 69680bv64); + +implementation main() { var #4: bv64; var CF: bv1; @@ -407,3 +252,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/initialisation/gcc/initialisation.expected b/src/test/correct/initialisation/gcc/initialisation.expected index cd8f95208..deaf09322 100644 --- a/src/test/correct/initialisation/gcc/initialisation.expected +++ b/src/test/correct/initialisation/gcc/initialisation.expected @@ -1,73 +1,100 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $a_addr: bv64; axiom ($a_addr == 69664bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69648bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -76,131 +103,49 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69648bv64) == 5bv8); - free requires (memory_load8_le(mem, 69649bv64) == 0bv8); - free requires (memory_load8_le(mem, 69650bv64) == 0bv8); - free requires (memory_load8_le(mem, 69651bv64) == 0bv8); - free requires (memory_load8_le(mem, 69652bv64) == 97bv8); - free requires (memory_load8_le(mem, 69653bv64) == 0bv8); - free requires (memory_load8_le(mem, 69654bv64) == 0bv8); - free requires (memory_load8_le(mem, 69655bv64) == 0bv8); - free requires (memory_load8_le(mem, 69656bv64) == 255bv8); - free requires (memory_load8_le(mem, 69657bv64) == 255bv8); - free requires (memory_load8_le(mem, 69658bv64) == 255bv8); - free requires (memory_load8_le(mem, 69659bv64) == 255bv8); - free requires (memory_load8_le(mem, 69660bv64) == 15bv8); - free requires (memory_load8_le(mem, 69661bv64) == 0bv8); - free requires (memory_load8_le(mem, 69662bv64) == 0bv8); - free requires (memory_load8_le(mem, 69663bv64) == 0bv8); - free requires (memory_load8_le(mem, 69664bv64) == 1bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 2bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69648bv64) == 416611827717bv64); + free requires (memory_load64_le(mem, 69656bv64) == 68719476735bv64); + free requires (memory_load64_le(mem, 69664bv64) == 8589934593bv64); free requires (memory_load8_le(mem, 1956bv64) == 1bv8); free requires (memory_load8_le(mem, 1957bv64) == 0bv8); free requires (memory_load8_le(mem, 1958bv64) == 2bv8); free requires (memory_load8_le(mem, 1959bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (memory_load32_le(mem, $x_addr) == 6bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 4bv64)) == 4bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 0bv64)) == 1bv32); @@ -208,38 +153,12 @@ procedure main() free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -291,3 +210,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/initialisation/gcc_O2/initialisation.expected b/src/test/correct/initialisation/gcc_O2/initialisation.expected index 0b0da4f5d..a40f21e6a 100644 --- a/src/test/correct/initialisation/gcc_O2/initialisation.expected +++ b/src/test/correct/initialisation/gcc_O2/initialisation.expected @@ -1,83 +1,120 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R3: bool; + var {:extern} Gamma_R4: bool; + var {:extern} Gamma_R5: bool; + var {:extern} Gamma_R6: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} R3: bv64; + var {:extern} R4: bv64; + var {:extern} R5: bv64; + var {:extern} R6: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $a_addr: bv64; axiom ($a_addr == 69664bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69648bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69672bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -86,54 +123,35 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_R4, Gamma_R5, Gamma_R6, Gamma_mem, R0, R1, R2, R3, R4, R5, R6, mem; free requires (memory_load8_le(mem, 69632bv64) == 0bv8); free requires (memory_load8_le(mem, 69633bv64) == 0bv8); @@ -180,38 +198,10 @@ procedure main() free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (memory_load32_le(mem, $x_addr) == 6bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 4bv64)) == 4bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 0bv64)) == 1bv32); @@ -219,38 +209,12 @@ procedure main() free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -287,3 +251,5 @@ procedure main() assume {:captureState "%0000020a"} true; return; } + + diff --git a/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected b/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected index 418adaae6..0b4898f84 100644 --- a/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected +++ b/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected @@ -1,73 +1,100 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $a_addr: bv64; axiom ($a_addr == 69664bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69648bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -76,131 +103,49 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69648bv64) == 5bv8); - free requires (memory_load8_le(mem, 69649bv64) == 0bv8); - free requires (memory_load8_le(mem, 69650bv64) == 0bv8); - free requires (memory_load8_le(mem, 69651bv64) == 0bv8); - free requires (memory_load8_le(mem, 69652bv64) == 97bv8); - free requires (memory_load8_le(mem, 69653bv64) == 0bv8); - free requires (memory_load8_le(mem, 69654bv64) == 0bv8); - free requires (memory_load8_le(mem, 69655bv64) == 0bv8); - free requires (memory_load8_le(mem, 69656bv64) == 255bv8); - free requires (memory_load8_le(mem, 69657bv64) == 255bv8); - free requires (memory_load8_le(mem, 69658bv64) == 255bv8); - free requires (memory_load8_le(mem, 69659bv64) == 255bv8); - free requires (memory_load8_le(mem, 69660bv64) == 15bv8); - free requires (memory_load8_le(mem, 69661bv64) == 0bv8); - free requires (memory_load8_le(mem, 69662bv64) == 0bv8); - free requires (memory_load8_le(mem, 69663bv64) == 0bv8); - free requires (memory_load8_le(mem, 69664bv64) == 1bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 2bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69648bv64) == 416611827717bv64); + free requires (memory_load64_le(mem, 69656bv64) == 68719476735bv64); + free requires (memory_load64_le(mem, 69664bv64) == 8589934593bv64); free requires (memory_load8_le(mem, 1956bv64) == 1bv8); free requires (memory_load8_le(mem, 1957bv64) == 0bv8); free requires (memory_load8_le(mem, 1958bv64) == 2bv8); free requires (memory_load8_le(mem, 1959bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (memory_load32_le(mem, $x_addr) == 6bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 4bv64)) == 4bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 0bv64)) == 1bv32); @@ -208,38 +153,12 @@ procedure main() free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -291,3 +210,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/initialisation/gcc_pic/initialisation.expected b/src/test/correct/initialisation/gcc_pic/initialisation.expected index 4f95961a3..9a523382b 100644 --- a/src/test/correct/initialisation/gcc_pic/initialisation.expected +++ b/src/test/correct/initialisation/gcc_pic/initialisation.expected @@ -1,73 +1,100 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $a_addr: bv64; axiom ($a_addr == 69664bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69648bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -76,195 +103,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2085bv64) == 0bv8); free ensures (memory_load8_le(mem, 2086bv64) == 2bv8); free ensures (memory_load8_le(mem, 2087bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 148bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 32bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68984bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68985bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68986bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68987bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68988bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68989bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68990bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68991bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 64bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69576bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1940bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69648bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69664bv64); + free ensures (memory_load64_le(mem, 68984bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 1856bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69648bv64) == 5bv8); - free requires (memory_load8_le(mem, 69649bv64) == 0bv8); - free requires (memory_load8_le(mem, 69650bv64) == 0bv8); - free requires (memory_load8_le(mem, 69651bv64) == 0bv8); - free requires (memory_load8_le(mem, 69652bv64) == 97bv8); - free requires (memory_load8_le(mem, 69653bv64) == 0bv8); - free requires (memory_load8_le(mem, 69654bv64) == 0bv8); - free requires (memory_load8_le(mem, 69655bv64) == 0bv8); - free requires (memory_load8_le(mem, 69656bv64) == 255bv8); - free requires (memory_load8_le(mem, 69657bv64) == 255bv8); - free requires (memory_load8_le(mem, 69658bv64) == 255bv8); - free requires (memory_load8_le(mem, 69659bv64) == 255bv8); - free requires (memory_load8_le(mem, 69660bv64) == 15bv8); - free requires (memory_load8_le(mem, 69661bv64) == 0bv8); - free requires (memory_load8_le(mem, 69662bv64) == 0bv8); - free requires (memory_load8_le(mem, 69663bv64) == 0bv8); - free requires (memory_load8_le(mem, 69664bv64) == 1bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 2bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69648bv64) == 416611827717bv64); + free requires (memory_load64_le(mem, 69656bv64) == 68719476735bv64); + free requires (memory_load64_le(mem, 69664bv64) == 8589934593bv64); free requires (memory_load8_le(mem, 2084bv64) == 1bv8); free requires (memory_load8_le(mem, 2085bv64) == 0bv8); free requires (memory_load8_le(mem, 2086bv64) == 2bv8); free requires (memory_load8_le(mem, 2087bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 20bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 24bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 148bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 16bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 32bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 68984bv64) == 144bv8); - free requires (memory_load8_le(mem, 68985bv64) == 7bv8); - free requires (memory_load8_le(mem, 68986bv64) == 0bv8); - free requires (memory_load8_le(mem, 68987bv64) == 0bv8); - free requires (memory_load8_le(mem, 68988bv64) == 0bv8); - free requires (memory_load8_le(mem, 68989bv64) == 0bv8); - free requires (memory_load8_le(mem, 68990bv64) == 0bv8); - free requires (memory_load8_le(mem, 68991bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 64bv8); - free requires (memory_load8_le(mem, 68993bv64) == 7bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69576bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1940bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69648bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69664bv64); + free requires (memory_load64_le(mem, 68984bv64) == 1936bv64); + free requires (memory_load64_le(mem, 68992bv64) == 1856bv64); ensures (memory_load32_le(mem, $x_addr) == 6bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 4bv64)) == 4bv32); ensures (memory_load32_le(mem, bvadd64($a_addr, 0bv64)) == 1bv32); @@ -272,70 +161,16 @@ procedure main() free ensures (memory_load8_le(mem, 2085bv64) == 0bv8); free ensures (memory_load8_le(mem, 2086bv64) == 2bv8); free ensures (memory_load8_le(mem, 2087bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 148bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 32bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68984bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68985bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68986bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68987bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68988bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68989bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68990bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68991bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 64bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69576bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1940bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69648bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69664bv64); + free ensures (memory_load64_le(mem, 68984bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 1856bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -395,3 +230,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/jumptable/clang_O2/jumptable.expected b/src/test/correct/jumptable/clang_O2/jumptable.expected index 8de643ece..5b17bb4d8 100644 --- a/src/test/correct/jumptable/clang_O2/jumptable.expected +++ b/src/test/correct/jumptable/clang_O2/jumptable.expected @@ -1,42 +1,66 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1916bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69680bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -45,54 +69,35 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load8_le(mem, 69664bv64) == 0bv8); free requires (memory_load8_le(mem, 69665bv64) == 0bv8); @@ -118,74 +123,20 @@ procedure main() free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 80bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -200,3 +151,5 @@ procedure main() assume {:captureState "%00000378"} true; return; } + + diff --git a/src/test/correct/jumptable/gcc_O2/jumptable.expected b/src/test/correct/jumptable/gcc_O2/jumptable.expected index 0b02b32d3..fcf229103 100644 --- a/src/test/correct/jumptable/gcc_O2/jumptable.expected +++ b/src/test/correct/jumptable/gcc_O2/jumptable.expected @@ -1,64 +1,93 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1976bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69648bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -67,127 +96,54 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure add_six() + + +procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 1976bv64) == 1bv8); free requires (memory_load8_le(mem, 1977bv64) == 0bv8); free requires (memory_load8_le(mem, 1978bv64) == 2bv8); free requires (memory_load8_le(mem, 1979bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1976bv64) == 1bv8); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation add_six() { ladd_six: assume {:captureState "ladd_six"} true; @@ -202,80 +158,27 @@ procedure add_six() return; } -procedure add_two() + +procedure add_two(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 1976bv64) == 1bv8); free requires (memory_load8_le(mem, 1977bv64) == 0bv8); free requires (memory_load8_le(mem, 1978bv64) == 2bv8); free requires (memory_load8_le(mem, 1979bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1976bv64) == 1bv8); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation add_two() { ladd_two: assume {:captureState "ladd_two"} true; @@ -290,7 +193,8 @@ procedure add_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 69632bv64) == 0bv8); free requires (memory_load8_le(mem, 69633bv64) == 0bv8); @@ -316,38 +220,10 @@ procedure main() free requires (memory_load8_le(mem, 1977bv64) == 0bv8); free requires (memory_load8_le(mem, 1978bv64) == 2bv8); free requires (memory_load8_le(mem, 1979bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -356,38 +232,12 @@ procedure main() free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv64; var Gamma_#1: bool; @@ -422,80 +272,27 @@ procedure main() return; } -procedure sub_seven() + +procedure sub_seven(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 1976bv64) == 1bv8); free requires (memory_load8_le(mem, 1977bv64) == 0bv8); free requires (memory_load8_le(mem, 1978bv64) == 2bv8); free requires (memory_load8_le(mem, 1979bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1976bv64) == 1bv8); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation sub_seven() { lsub_seven: assume {:captureState "lsub_seven"} true; @@ -509,3 +306,5 @@ procedure sub_seven() assume {:captureState "%00000275"} true; return; } + + diff --git a/src/test/correct/jumptable3/gcc/jumptable3.expected b/src/test/correct/jumptable3/gcc/jumptable3.expected index c0d970237..97f28a717 100644 --- a/src/test/correct/jumptable3/gcc/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc/jumptable3.expected @@ -1,68 +1,103 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,127 +106,54 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2357bv64) == 0bv8); free ensures (memory_load8_le(mem, 2358bv64) == 2bv8); free ensures (memory_load8_le(mem, 2359bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure add_six() + + +procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); free requires (memory_load8_le(mem, 2357bv64) == 0bv8); free requires (memory_load8_le(mem, 2358bv64) == 2bv8); free requires (memory_load8_le(mem, 2359bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2356bv64) == 1bv8); free ensures (memory_load8_le(mem, 2357bv64) == 0bv8); free ensures (memory_load8_le(mem, 2358bv64) == 2bv8); free ensures (memory_load8_le(mem, 2359bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation add_six() { ladd_six: assume {:captureState "ladd_six"} true; @@ -209,80 +171,27 @@ procedure add_six() return; } -procedure add_two() + +procedure add_two(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); free requires (memory_load8_le(mem, 2357bv64) == 0bv8); free requires (memory_load8_le(mem, 2358bv64) == 2bv8); free requires (memory_load8_le(mem, 2359bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2356bv64) == 1bv8); free ensures (memory_load8_le(mem, 2357bv64) == 0bv8); free ensures (memory_load8_le(mem, 2358bv64) == 2bv8); free ensures (memory_load8_le(mem, 2359bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation add_two() { ladd_two: assume {:captureState "ladd_two"} true; @@ -300,7 +209,8 @@ procedure add_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == true); free requires (memory_load8_le(mem, 69632bv64) == 0bv8); @@ -327,38 +237,10 @@ procedure main() free requires (memory_load8_le(mem, 2357bv64) == 0bv8); free requires (memory_load8_le(mem, 2358bv64) == 2bv8); free requires (memory_load8_le(mem, 2359bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -367,38 +249,12 @@ procedure main() free ensures (memory_load8_le(mem, 2357bv64) == 0bv8); free ensures (memory_load8_le(mem, 2358bv64) == 2bv8); free ensures (memory_load8_le(mem, 2359bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #10: bv32; var #11: bv32; @@ -827,7 +683,7 @@ procedure main() goto l00000599; lmain_goto_l000005e0: assume {:captureState "lmain_goto_l000005e0"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000005e0; l000005e0_goto_l000005d7: assume {:captureState "l000005e0_goto_l000005d7"} true; @@ -835,7 +691,7 @@ procedure main() goto l000005d7; l000005e0_goto_l00000608: assume {:captureState "l000005e0_goto_l00000608"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000608; l00000608_goto_l00000629: assume {:captureState "l00000608_goto_l00000629"} true; @@ -843,7 +699,7 @@ procedure main() goto l00000629; l00000608_goto_l00000643: assume {:captureState "l00000608_goto_l00000643"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000643; l00000643_goto_l000005d7: assume {:captureState "l00000643_goto_l000005d7"} true; @@ -851,7 +707,7 @@ procedure main() goto l000005d7; l00000643_goto_l0000066b: assume {:captureState "l00000643_goto_l0000066b"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l0000066b; l0000066b_goto_l0000068c: assume {:captureState "l0000066b_goto_l0000068c"} true; @@ -859,7 +715,7 @@ procedure main() goto l0000068c; l0000066b_goto_l000006a3: assume {:captureState "l0000066b_goto_l000006a3"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000006a3; l000006a3_goto_l000005d7: assume {:captureState "l000006a3_goto_l000005d7"} true; @@ -867,7 +723,7 @@ procedure main() goto l000005d7; l000006a3_goto_l000006cb: assume {:captureState "l000006a3_goto_l000006cb"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l000006cb; l000006cb_goto_l000006ec: assume {:captureState "l000006cb_goto_l000006ec"} true; @@ -875,7 +731,7 @@ procedure main() goto l000006ec; l000006cb_goto_l00000703: assume {:captureState "l000006cb_goto_l00000703"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000703; l00000703_goto_l000005d7: assume {:captureState "l00000703_goto_l000005d7"} true; @@ -883,7 +739,7 @@ procedure main() goto l000005d7; l00000703_goto_l0000072b: assume {:captureState "l00000703_goto_l0000072b"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l0000072b; l0000072b_goto_l0000074c: assume {:captureState "l0000072b_goto_l0000074c"} true; @@ -891,7 +747,7 @@ procedure main() goto l0000074c; l0000072b_goto_l00000758: assume {:captureState "l0000072b_goto_l00000758"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000758; l00000758_goto_l000005d7: assume {:captureState "l00000758_goto_l000005d7"} true; @@ -899,7 +755,7 @@ procedure main() goto l000005d7; l00000758_goto_l00000780: assume {:captureState "l00000758_goto_l00000780"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000780; l00000780_goto_l000007a1: assume {:captureState "l00000780_goto_l000007a1"} true; @@ -907,7 +763,7 @@ procedure main() goto l000007a1; l00000780_goto_l000007ad: assume {:captureState "l00000780_goto_l000007ad"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000007ad; l000007ad_goto_l000005d7: assume {:captureState "l000007ad_goto_l000005d7"} true; @@ -915,7 +771,7 @@ procedure main() goto l000005d7; l000007ad_goto_l000007d5: assume {:captureState "l000007ad_goto_l000007d5"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l000007d5; l000007d5_goto_l000007f6: assume {:captureState "l000007d5_goto_l000007f6"} true; @@ -923,7 +779,7 @@ procedure main() goto l000007f6; l000007d5_goto_l00000809: assume {:captureState "l000007d5_goto_l00000809"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000809; l00000809_goto_l000005d7: assume {:captureState "l00000809_goto_l000005d7"} true; @@ -931,7 +787,7 @@ procedure main() goto l000005d7; l00000809_goto_l00000831: assume {:captureState "l00000809_goto_l00000831"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000831; l00000831_goto_l00000852: assume {:captureState "l00000831_goto_l00000852"} true; @@ -939,7 +795,7 @@ procedure main() goto l00000852; l00000831_goto_l00000862: assume {:captureState "l00000831_goto_l00000862"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000862; l00000862_goto_l000005d7: assume {:captureState "l00000862_goto_l000005d7"} true; @@ -947,7 +803,7 @@ procedure main() goto l000005d7; l00000862_goto_l0000088a: assume {:captureState "l00000862_goto_l0000088a"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l0000088a; l0000088a_goto_l000008ab: assume {:captureState "l0000088a_goto_l000008ab"} true; @@ -955,7 +811,7 @@ procedure main() goto l000008ab; l0000088a_goto_l000008c2: assume {:captureState "l0000088a_goto_l000008c2"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000008c2; l000008c2_goto_l000005d7: assume {:captureState "l000008c2_goto_l000005d7"} true; @@ -963,7 +819,7 @@ procedure main() goto l000005d7; l000008c2_goto_l000008ea: assume {:captureState "l000008c2_goto_l000008ea"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l000008ea; l000008ea_goto_l0000090b: assume {:captureState "l000008ea_goto_l0000090b"} true; @@ -971,7 +827,7 @@ procedure main() goto l0000090b; l000008ea_goto_l0000091b: assume {:captureState "l000008ea_goto_l0000091b"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000091b; l0000091b_goto_l000005d7: assume {:captureState "l0000091b_goto_l000005d7"} true; @@ -979,7 +835,7 @@ procedure main() goto l000005d7; l0000091b_goto_l00000943: assume {:captureState "l0000091b_goto_l00000943"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000943; l00000943_goto_l00000964: assume {:captureState "l00000943_goto_l00000964"} true; @@ -987,7 +843,7 @@ procedure main() goto l00000964; l00000943_goto_l0000097b: assume {:captureState "l00000943_goto_l0000097b"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000097b; l0000097b_goto_l00000974: assume {:captureState "l0000097b_goto_l00000974"} true; @@ -995,84 +851,31 @@ procedure main() goto l00000974; l0000097b_goto_l000009a1: assume {:captureState "l0000097b_goto_l000009a1"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000009a1; } -procedure sub_seven() + +procedure sub_seven(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); free requires (memory_load8_le(mem, 2357bv64) == 0bv8); free requires (memory_load8_le(mem, 2358bv64) == 2bv8); free requires (memory_load8_le(mem, 2359bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2356bv64) == 1bv8); free ensures (memory_load8_le(mem, 2357bv64) == 0bv8); free ensures (memory_load8_le(mem, 2358bv64) == 2bv8); free ensures (memory_load8_le(mem, 2359bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation sub_seven() { lsub_seven: assume {:captureState "lsub_seven"} true; @@ -1089,3 +892,5 @@ procedure sub_seven() assume {:captureState "%00000543"} true; return; } + + diff --git a/src/test/correct/jumptable3/gcc_O2/jumptable3.expected b/src/test/correct/jumptable3/gcc_O2/jumptable3.expected index 27d281ba8..7b6ee449c 100644 --- a/src/test/correct/jumptable3/gcc_O2/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc_O2/jumptable3.expected @@ -1,44 +1,72 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,54 +75,35 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); free ensures (memory_load8_le(mem, 2235bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 2128bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 2048bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (Gamma_R0 == true); free requires (memory_load8_le(mem, 69632bv64) == 0bv8); @@ -121,74 +130,20 @@ procedure main() free requires (memory_load8_le(mem, 2233bv64) == 0bv8); free requires (memory_load8_le(mem, 2234bv64) == 2bv8); free requires (memory_load8_le(mem, 2235bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 8bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 8bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 2128bv64); + free requires (memory_load64_le(mem, 69024bv64) == 2048bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2232bv64) == 1bv8); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); free ensures (memory_load8_le(mem, 2235bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 2128bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 2048bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv32; var #10: bv32; @@ -463,7 +418,7 @@ procedure main() goto l00000317; lmain_goto_l00000753: assume {:captureState "lmain_goto_l00000753"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000753; l00000753_goto_l000006e8: assume {:captureState "l00000753_goto_l000006e8"} true; @@ -471,7 +426,7 @@ procedure main() goto l000006e8; l00000753_goto_l0000075c: assume {:captureState "l00000753_goto_l0000075c"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l0000075c; l000006e8_goto_l000005f9: assume {:captureState "l000006e8_goto_l000005f9"} true; @@ -479,7 +434,7 @@ procedure main() goto l000005f9; l000006e8_goto_l0000070c: assume {:captureState "l000006e8_goto_l0000070c"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000070c; l0000070c_goto_l00000644: assume {:captureState "l0000070c_goto_l00000644"} true; @@ -487,7 +442,7 @@ procedure main() goto l00000644; l0000070c_goto_l00000715: assume {:captureState "l0000070c_goto_l00000715"} true; - assume (bvnot1(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1))) == 0bv1); + assume (!(bvnot1(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1))) != 0bv1)); goto l00000715; l00000644_goto_l00000331: assume {:captureState "l00000644_goto_l00000331"} true; @@ -495,7 +450,7 @@ procedure main() goto l00000331; l00000644_goto_l00000663: assume {:captureState "l00000644_goto_l00000663"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000663; l00000663_goto_l0000036b: assume {:captureState "l00000663_goto_l0000036b"} true; @@ -503,7 +458,7 @@ procedure main() goto l0000036b; l00000663_goto_l00000347: assume {:captureState "l00000663_goto_l00000347"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000347; l00000715_goto_l00000612: assume {:captureState "l00000715_goto_l00000612"} true; @@ -511,7 +466,7 @@ procedure main() goto l00000612; l00000715_goto_l00000734: assume {:captureState "l00000715_goto_l00000734"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000734; l00000734_goto_l0000036b: assume {:captureState "l00000734_goto_l0000036b"} true; @@ -519,7 +474,7 @@ procedure main() goto l0000036b; l00000734_goto_l00000628: assume {:captureState "l00000734_goto_l00000628"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000628; l0000075c_goto_l0000069c: assume {:captureState "l0000075c_goto_l0000069c"} true; @@ -527,7 +482,7 @@ procedure main() goto l0000069c; l0000075c_goto_l0000077b: assume {:captureState "l0000075c_goto_l0000077b"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000077b; l0000077b_goto_l000005bc: assume {:captureState "l0000077b_goto_l000005bc"} true; @@ -535,7 +490,7 @@ procedure main() goto l000005bc; l0000077b_goto_l00000784: assume {:captureState "l0000077b_goto_l00000784"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000784; l000005bc_goto_l000005d6: assume {:captureState "l000005bc_goto_l000005d6"} true; @@ -543,7 +498,7 @@ procedure main() goto l000005d6; l000005bc_goto_l00000682: assume {:captureState "l000005bc_goto_l00000682"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000682; l00000784_goto_l000006ba: assume {:captureState "l00000784_goto_l000006ba"} true; @@ -551,7 +506,7 @@ procedure main() goto l000006ba; l00000784_goto_l000007a8: assume {:captureState "l00000784_goto_l000007a8"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000007a8; l000007a8_goto_l00000368: assume {:captureState "l000007a8_goto_l00000368"} true; @@ -559,7 +514,7 @@ procedure main() goto l00000368; l000007a8_goto_l000006d0: assume {:captureState "l000007a8_goto_l000006d0"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000006d0; l00000368_goto_l0000036b: assume {:captureState "l00000368_goto_l0000036b"} true; @@ -567,6 +522,8 @@ procedure main() goto l0000036b; l00000368_goto_l000005a3: assume {:captureState "l00000368_goto_l000005a3"} true; - assume (bvnot1(bvcomp32(R0[32:0], 0bv32)) == 0bv1); + assume (!(bvnot1(bvcomp32(R0[32:0], 0bv32)) != 0bv1)); goto l000005a3; } + + diff --git a/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected b/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected index 75b244d38..5cc10fa90 100644 --- a/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected @@ -1,68 +1,103 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,127 +106,54 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2357bv64) == 0bv8); free ensures (memory_load8_le(mem, 2358bv64) == 2bv8); free ensures (memory_load8_le(mem, 2359bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure add_six() + + +procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); free requires (memory_load8_le(mem, 2357bv64) == 0bv8); free requires (memory_load8_le(mem, 2358bv64) == 2bv8); free requires (memory_load8_le(mem, 2359bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2356bv64) == 1bv8); free ensures (memory_load8_le(mem, 2357bv64) == 0bv8); free ensures (memory_load8_le(mem, 2358bv64) == 2bv8); free ensures (memory_load8_le(mem, 2359bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation add_six() { ladd_six: assume {:captureState "ladd_six"} true; @@ -209,80 +171,27 @@ procedure add_six() return; } -procedure add_two() + +procedure add_two(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); free requires (memory_load8_le(mem, 2357bv64) == 0bv8); free requires (memory_load8_le(mem, 2358bv64) == 2bv8); free requires (memory_load8_le(mem, 2359bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2356bv64) == 1bv8); free ensures (memory_load8_le(mem, 2357bv64) == 0bv8); free ensures (memory_load8_le(mem, 2358bv64) == 2bv8); free ensures (memory_load8_le(mem, 2359bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation add_two() { ladd_two: assume {:captureState "ladd_two"} true; @@ -300,7 +209,8 @@ procedure add_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == true); free requires (memory_load8_le(mem, 69632bv64) == 0bv8); @@ -327,38 +237,10 @@ procedure main() free requires (memory_load8_le(mem, 2357bv64) == 0bv8); free requires (memory_load8_le(mem, 2358bv64) == 2bv8); free requires (memory_load8_le(mem, 2359bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -367,38 +249,12 @@ procedure main() free ensures (memory_load8_le(mem, 2357bv64) == 0bv8); free ensures (memory_load8_le(mem, 2358bv64) == 2bv8); free ensures (memory_load8_le(mem, 2359bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #10: bv32; var #11: bv32; @@ -827,7 +683,7 @@ procedure main() goto l000012f4; lmain_goto_l0000133b: assume {:captureState "lmain_goto_l0000133b"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000133b; l0000133b_goto_l00001332: assume {:captureState "l0000133b_goto_l00001332"} true; @@ -835,7 +691,7 @@ procedure main() goto l00001332; l0000133b_goto_l00001363: assume {:captureState "l0000133b_goto_l00001363"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00001363; l00001363_goto_l00001384: assume {:captureState "l00001363_goto_l00001384"} true; @@ -843,7 +699,7 @@ procedure main() goto l00001384; l00001363_goto_l0000139e: assume {:captureState "l00001363_goto_l0000139e"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000139e; l0000139e_goto_l00001332: assume {:captureState "l0000139e_goto_l00001332"} true; @@ -851,7 +707,7 @@ procedure main() goto l00001332; l0000139e_goto_l000013c6: assume {:captureState "l0000139e_goto_l000013c6"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l000013c6; l000013c6_goto_l000013e7: assume {:captureState "l000013c6_goto_l000013e7"} true; @@ -859,7 +715,7 @@ procedure main() goto l000013e7; l000013c6_goto_l000013fe: assume {:captureState "l000013c6_goto_l000013fe"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000013fe; l000013fe_goto_l00001332: assume {:captureState "l000013fe_goto_l00001332"} true; @@ -867,7 +723,7 @@ procedure main() goto l00001332; l000013fe_goto_l00001426: assume {:captureState "l000013fe_goto_l00001426"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00001426; l00001426_goto_l00001447: assume {:captureState "l00001426_goto_l00001447"} true; @@ -875,7 +731,7 @@ procedure main() goto l00001447; l00001426_goto_l0000145e: assume {:captureState "l00001426_goto_l0000145e"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000145e; l0000145e_goto_l00001332: assume {:captureState "l0000145e_goto_l00001332"} true; @@ -883,7 +739,7 @@ procedure main() goto l00001332; l0000145e_goto_l00001486: assume {:captureState "l0000145e_goto_l00001486"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00001486; l00001486_goto_l000014a7: assume {:captureState "l00001486_goto_l000014a7"} true; @@ -891,7 +747,7 @@ procedure main() goto l000014a7; l00001486_goto_l000014b3: assume {:captureState "l00001486_goto_l000014b3"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000014b3; l000014b3_goto_l00001332: assume {:captureState "l000014b3_goto_l00001332"} true; @@ -899,7 +755,7 @@ procedure main() goto l00001332; l000014b3_goto_l000014db: assume {:captureState "l000014b3_goto_l000014db"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l000014db; l000014db_goto_l000014fc: assume {:captureState "l000014db_goto_l000014fc"} true; @@ -907,7 +763,7 @@ procedure main() goto l000014fc; l000014db_goto_l00001508: assume {:captureState "l000014db_goto_l00001508"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00001508; l00001508_goto_l00001332: assume {:captureState "l00001508_goto_l00001332"} true; @@ -915,7 +771,7 @@ procedure main() goto l00001332; l00001508_goto_l00001530: assume {:captureState "l00001508_goto_l00001530"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00001530; l00001530_goto_l00001551: assume {:captureState "l00001530_goto_l00001551"} true; @@ -923,7 +779,7 @@ procedure main() goto l00001551; l00001530_goto_l00001564: assume {:captureState "l00001530_goto_l00001564"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00001564; l00001564_goto_l00001332: assume {:captureState "l00001564_goto_l00001332"} true; @@ -931,7 +787,7 @@ procedure main() goto l00001332; l00001564_goto_l0000158c: assume {:captureState "l00001564_goto_l0000158c"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l0000158c; l0000158c_goto_l000015ad: assume {:captureState "l0000158c_goto_l000015ad"} true; @@ -939,7 +795,7 @@ procedure main() goto l000015ad; l0000158c_goto_l000015bd: assume {:captureState "l0000158c_goto_l000015bd"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000015bd; l000015bd_goto_l00001332: assume {:captureState "l000015bd_goto_l00001332"} true; @@ -947,7 +803,7 @@ procedure main() goto l00001332; l000015bd_goto_l000015e5: assume {:captureState "l000015bd_goto_l000015e5"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l000015e5; l000015e5_goto_l00001606: assume {:captureState "l000015e5_goto_l00001606"} true; @@ -955,7 +811,7 @@ procedure main() goto l00001606; l000015e5_goto_l0000161d: assume {:captureState "l000015e5_goto_l0000161d"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000161d; l0000161d_goto_l00001332: assume {:captureState "l0000161d_goto_l00001332"} true; @@ -963,7 +819,7 @@ procedure main() goto l00001332; l0000161d_goto_l00001645: assume {:captureState "l0000161d_goto_l00001645"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00001645; l00001645_goto_l00001666: assume {:captureState "l00001645_goto_l00001666"} true; @@ -971,7 +827,7 @@ procedure main() goto l00001666; l00001645_goto_l00001676: assume {:captureState "l00001645_goto_l00001676"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00001676; l00001676_goto_l00001332: assume {:captureState "l00001676_goto_l00001332"} true; @@ -979,7 +835,7 @@ procedure main() goto l00001332; l00001676_goto_l0000169e: assume {:captureState "l00001676_goto_l0000169e"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l0000169e; l0000169e_goto_l000016bf: assume {:captureState "l0000169e_goto_l000016bf"} true; @@ -987,7 +843,7 @@ procedure main() goto l000016bf; l0000169e_goto_l000016d6: assume {:captureState "l0000169e_goto_l000016d6"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000016d6; l000016d6_goto_l000016cf: assume {:captureState "l000016d6_goto_l000016cf"} true; @@ -995,84 +851,31 @@ procedure main() goto l000016cf; l000016d6_goto_l000016fc: assume {:captureState "l000016d6_goto_l000016fc"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000016fc; } -procedure sub_seven() + +procedure sub_seven(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); free requires (memory_load8_le(mem, 2357bv64) == 0bv8); free requires (memory_load8_le(mem, 2358bv64) == 2bv8); free requires (memory_load8_le(mem, 2359bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2356bv64) == 1bv8); free ensures (memory_load8_le(mem, 2357bv64) == 0bv8); free ensures (memory_load8_le(mem, 2358bv64) == 2bv8); free ensures (memory_load8_le(mem, 2359bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation sub_seven() { lsub_seven: assume {:captureState "lsub_seven"} true; @@ -1089,3 +892,5 @@ procedure sub_seven() assume {:captureState "%0000129e"} true; return; } + + diff --git a/src/test/correct/jumptable3/gcc_pic/jumptable3.expected b/src/test/correct/jumptable3/gcc_pic/jumptable3.expected index f0bff08a8..a078fbfb4 100644 --- a/src/test/correct/jumptable3/gcc_pic/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc_pic/jumptable3.expected @@ -1,68 +1,103 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,151 +106,57 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2421bv64) == 0bv8); free ensures (memory_load8_le(mem, 2422bv64) == 2bv8); free ensures (memory_load8_le(mem, 2423bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69648bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure add_six() + + +procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2420bv64) == 1bv8); free requires (memory_load8_le(mem, 2421bv64) == 0bv8); free requires (memory_load8_le(mem, 2422bv64) == 2bv8); free requires (memory_load8_le(mem, 2423bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 192bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 16bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69648bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); free ensures (memory_load8_le(mem, 2420bv64) == 1bv8); free ensures (memory_load8_le(mem, 2421bv64) == 0bv8); free ensures (memory_load8_le(mem, 2422bv64) == 2bv8); free ensures (memory_load8_le(mem, 2423bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69648bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation add_six() { ladd_six: assume {:captureState "ladd_six"} true; @@ -235,96 +176,29 @@ procedure add_six() return; } -procedure add_two() + +procedure add_two(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2420bv64) == 1bv8); free requires (memory_load8_le(mem, 2421bv64) == 0bv8); free requires (memory_load8_le(mem, 2422bv64) == 2bv8); free requires (memory_load8_le(mem, 2423bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 192bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 16bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69648bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); free ensures (memory_load8_le(mem, 2420bv64) == 1bv8); free ensures (memory_load8_le(mem, 2421bv64) == 0bv8); free ensures (memory_load8_le(mem, 2422bv64) == 2bv8); free ensures (memory_load8_le(mem, 2423bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69648bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation add_two() { ladd_two: assume {:captureState "ladd_two"} true; @@ -344,7 +218,8 @@ procedure add_two() return; } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == true); free requires (memory_load8_le(mem, 69632bv64) == 0bv8); @@ -371,46 +246,11 @@ procedure main() free requires (memory_load8_le(mem, 2421bv64) == 0bv8); free requires (memory_load8_le(mem, 2422bv64) == 2bv8); free requires (memory_load8_le(mem, 2423bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 192bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 16bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69648bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -419,46 +259,13 @@ procedure main() free ensures (memory_load8_le(mem, 2421bv64) == 0bv8); free ensures (memory_load8_le(mem, 2422bv64) == 2bv8); free ensures (memory_load8_le(mem, 2423bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69648bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { var #10: bv32; var #11: bv32; @@ -888,7 +695,7 @@ procedure main() goto l0000059f; lmain_goto_l000005e7: assume {:captureState "lmain_goto_l000005e7"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000005e7; l000005e7_goto_l000005de: assume {:captureState "l000005e7_goto_l000005de"} true; @@ -896,7 +703,7 @@ procedure main() goto l000005de; l000005e7_goto_l0000060f: assume {:captureState "l000005e7_goto_l0000060f"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l0000060f; l0000060f_goto_l00000630: assume {:captureState "l0000060f_goto_l00000630"} true; @@ -904,7 +711,7 @@ procedure main() goto l00000630; l0000060f_goto_l0000064a: assume {:captureState "l0000060f_goto_l0000064a"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000064a; l0000064a_goto_l000005de: assume {:captureState "l0000064a_goto_l000005de"} true; @@ -912,7 +719,7 @@ procedure main() goto l000005de; l0000064a_goto_l00000672: assume {:captureState "l0000064a_goto_l00000672"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000672; l00000672_goto_l00000693: assume {:captureState "l00000672_goto_l00000693"} true; @@ -920,7 +727,7 @@ procedure main() goto l00000693; l00000672_goto_l000006aa: assume {:captureState "l00000672_goto_l000006aa"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000006aa; l000006aa_goto_l000005de: assume {:captureState "l000006aa_goto_l000005de"} true; @@ -928,7 +735,7 @@ procedure main() goto l000005de; l000006aa_goto_l000006d2: assume {:captureState "l000006aa_goto_l000006d2"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l000006d2; l000006d2_goto_l000006f3: assume {:captureState "l000006d2_goto_l000006f3"} true; @@ -936,7 +743,7 @@ procedure main() goto l000006f3; l000006d2_goto_l0000070a: assume {:captureState "l000006d2_goto_l0000070a"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000070a; l0000070a_goto_l000005de: assume {:captureState "l0000070a_goto_l000005de"} true; @@ -944,7 +751,7 @@ procedure main() goto l000005de; l0000070a_goto_l00000732: assume {:captureState "l0000070a_goto_l00000732"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000732; l00000732_goto_l00000753: assume {:captureState "l00000732_goto_l00000753"} true; @@ -952,7 +759,7 @@ procedure main() goto l00000753; l00000732_goto_l0000075f: assume {:captureState "l00000732_goto_l0000075f"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000075f; l0000075f_goto_l000005de: assume {:captureState "l0000075f_goto_l000005de"} true; @@ -960,7 +767,7 @@ procedure main() goto l000005de; l0000075f_goto_l00000787: assume {:captureState "l0000075f_goto_l00000787"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000787; l00000787_goto_l000007a8: assume {:captureState "l00000787_goto_l000007a8"} true; @@ -968,7 +775,7 @@ procedure main() goto l000007a8; l00000787_goto_l000007b4: assume {:captureState "l00000787_goto_l000007b4"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000007b4; l000007b4_goto_l000005de: assume {:captureState "l000007b4_goto_l000005de"} true; @@ -976,7 +783,7 @@ procedure main() goto l000005de; l000007b4_goto_l000007dc: assume {:captureState "l000007b4_goto_l000007dc"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l000007dc; l000007dc_goto_l000007fd: assume {:captureState "l000007dc_goto_l000007fd"} true; @@ -984,7 +791,7 @@ procedure main() goto l000007fd; l000007dc_goto_l00000810: assume {:captureState "l000007dc_goto_l00000810"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000810; l00000810_goto_l000005de: assume {:captureState "l00000810_goto_l000005de"} true; @@ -992,7 +799,7 @@ procedure main() goto l000005de; l00000810_goto_l00000838: assume {:captureState "l00000810_goto_l00000838"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000838; l00000838_goto_l00000859: assume {:captureState "l00000838_goto_l00000859"} true; @@ -1000,7 +807,7 @@ procedure main() goto l00000859; l00000838_goto_l00000869: assume {:captureState "l00000838_goto_l00000869"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000869; l00000869_goto_l000005de: assume {:captureState "l00000869_goto_l000005de"} true; @@ -1008,7 +815,7 @@ procedure main() goto l000005de; l00000869_goto_l00000891: assume {:captureState "l00000869_goto_l00000891"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000891; l00000891_goto_l000008b2: assume {:captureState "l00000891_goto_l000008b2"} true; @@ -1016,7 +823,7 @@ procedure main() goto l000008b2; l00000891_goto_l000008c9: assume {:captureState "l00000891_goto_l000008c9"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000008c9; l000008c9_goto_l000005de: assume {:captureState "l000008c9_goto_l000005de"} true; @@ -1024,7 +831,7 @@ procedure main() goto l000005de; l000008c9_goto_l000008f1: assume {:captureState "l000008c9_goto_l000008f1"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l000008f1; l000008f1_goto_l00000912: assume {:captureState "l000008f1_goto_l00000912"} true; @@ -1032,7 +839,7 @@ procedure main() goto l00000912; l000008f1_goto_l00000922: assume {:captureState "l000008f1_goto_l00000922"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000922; l00000922_goto_l000005de: assume {:captureState "l00000922_goto_l000005de"} true; @@ -1040,7 +847,7 @@ procedure main() goto l000005de; l00000922_goto_l0000094a: assume {:captureState "l00000922_goto_l0000094a"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l0000094a; l0000094a_goto_l0000096b: assume {:captureState "l0000094a_goto_l0000096b"} true; @@ -1048,7 +855,7 @@ procedure main() goto l0000096b; l0000094a_goto_l00000982: assume {:captureState "l0000094a_goto_l00000982"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000982; l00000982_goto_l0000097b: assume {:captureState "l00000982_goto_l0000097b"} true; @@ -1056,100 +863,33 @@ procedure main() goto l0000097b; l00000982_goto_l000009a8: assume {:captureState "l00000982_goto_l000009a8"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000009a8; } -procedure sub_seven() + +procedure sub_seven(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2420bv64) == 1bv8); free requires (memory_load8_le(mem, 2421bv64) == 0bv8); free requires (memory_load8_le(mem, 2422bv64) == 2bv8); free requires (memory_load8_le(mem, 2423bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 192bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 16bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69648bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); free ensures (memory_load8_le(mem, 2420bv64) == 1bv8); free ensures (memory_load8_le(mem, 2421bv64) == 0bv8); free ensures (memory_load8_le(mem, 2422bv64) == 2bv8); free ensures (memory_load8_le(mem, 2423bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69648bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation sub_seven() { lsub_seven: assume {:captureState "lsub_seven"} true; @@ -1168,3 +908,5 @@ procedure sub_seven() assume {:captureState "%00000549"} true; return; } + + diff --git a/src/test/correct/malloc_with_local/clang/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang/malloc_with_local.expected index ecaf1a185..578485945 100644 --- a/src/test/correct/malloc_with_local/clang/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang/malloc_with_local.expected @@ -1,606 +1,224 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2256bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -699,392 +317,62 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected index 775c83e11..bd9edd86d 100644 --- a/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected @@ -1,44 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1964bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -107,71 +132,38 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2025bv64) == 100bv8); free ensures (memory_load8_le(mem, 2026bv64) == 10bv8); free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); @@ -236,38 +228,10 @@ procedure main() free requires (memory_load8_le(mem, 2025bv64) == 100bv8); free requires (memory_load8_le(mem, 2026bv64) == 10bv8); free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -336,38 +300,12 @@ procedure main() free ensures (memory_load8_le(mem, 2025bv64) == 100bv8); free ensures (memory_load8_le(mem, 2026bv64) == 10bv8); free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -411,6 +349,7 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1964bv64) == 1bv8); @@ -477,38 +416,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2025bv64) == 100bv8); free requires (memory_load8_le(mem, 2026bv64) == 10bv8); free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (memory_load8_le(mem, 1964bv64) == 1bv8); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); @@ -573,35 +484,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2025bv64) == 100bv8); free ensures (memory_load8_le(mem, 2026bv64) == 10bv8); free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + diff --git a/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected index 07ac928d3..ec305e0f2 100644 --- a/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected @@ -1,606 +1,224 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2256bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -699,392 +317,62 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected index 07ac928d3..ec305e0f2 100644 --- a/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected @@ -1,606 +1,224 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2256bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -699,392 +317,62 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2256bv64) == 1bv8); - free requires (memory_load8_le(mem, 2257bv64) == 0bv8); - free requires (memory_load8_le(mem, 2258bv64) == 2bv8); - free requires (memory_load8_le(mem, 2259bv64) == 0bv8); - free requires (memory_load8_le(mem, 2260bv64) == 84bv8); - free requires (memory_load8_le(mem, 2261bv64) == 104bv8); - free requires (memory_load8_le(mem, 2262bv64) == 101bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 99bv8); - free requires (memory_load8_le(mem, 2265bv64) == 104bv8); - free requires (memory_load8_le(mem, 2266bv64) == 97bv8); - free requires (memory_load8_le(mem, 2267bv64) == 114bv8); - free requires (memory_load8_le(mem, 2268bv64) == 32bv8); - free requires (memory_load8_le(mem, 2269bv64) == 105bv8); - free requires (memory_load8_le(mem, 2270bv64) == 115bv8); - free requires (memory_load8_le(mem, 2271bv64) == 58bv8); - free requires (memory_load8_le(mem, 2272bv64) == 32bv8); - free requires (memory_load8_le(mem, 2273bv64) == 37bv8); - free requires (memory_load8_le(mem, 2274bv64) == 99bv8); - free requires (memory_load8_le(mem, 2275bv64) == 10bv8); - free requires (memory_load8_le(mem, 2276bv64) == 0bv8); - free requires (memory_load8_le(mem, 2277bv64) == 84bv8); - free requires (memory_load8_le(mem, 2278bv64) == 104bv8); - free requires (memory_load8_le(mem, 2279bv64) == 101bv8); - free requires (memory_load8_le(mem, 2280bv64) == 32bv8); - free requires (memory_load8_le(mem, 2281bv64) == 105bv8); - free requires (memory_load8_le(mem, 2282bv64) == 110bv8); - free requires (memory_load8_le(mem, 2283bv64) == 116bv8); - free requires (memory_load8_le(mem, 2284bv64) == 32bv8); - free requires (memory_load8_le(mem, 2285bv64) == 105bv8); - free requires (memory_load8_le(mem, 2286bv64) == 115bv8); - free requires (memory_load8_le(mem, 2287bv64) == 58bv8); - free requires (memory_load8_le(mem, 2288bv64) == 32bv8); - free requires (memory_load8_le(mem, 2289bv64) == 37bv8); - free requires (memory_load8_le(mem, 2290bv64) == 100bv8); - free requires (memory_load8_le(mem, 2291bv64) == 10bv8); - free requires (memory_load8_le(mem, 2292bv64) == 0bv8); - free requires (memory_load8_le(mem, 2293bv64) == 84bv8); - free requires (memory_load8_le(mem, 2294bv64) == 104bv8); - free requires (memory_load8_le(mem, 2295bv64) == 101bv8); - free requires (memory_load8_le(mem, 2296bv64) == 32bv8); - free requires (memory_load8_le(mem, 2297bv64) == 108bv8); - free requires (memory_load8_le(mem, 2298bv64) == 111bv8); - free requires (memory_load8_le(mem, 2299bv64) == 99bv8); - free requires (memory_load8_le(mem, 2300bv64) == 97bv8); - free requires (memory_load8_le(mem, 2301bv64) == 108bv8); - free requires (memory_load8_le(mem, 2302bv64) == 32bv8); - free requires (memory_load8_le(mem, 2303bv64) == 118bv8); - free requires (memory_load8_le(mem, 2304bv64) == 97bv8); - free requires (memory_load8_le(mem, 2305bv64) == 114bv8); - free requires (memory_load8_le(mem, 2306bv64) == 105bv8); - free requires (memory_load8_le(mem, 2307bv64) == 97bv8); - free requires (memory_load8_le(mem, 2308bv64) == 98bv8); - free requires (memory_load8_le(mem, 2309bv64) == 108bv8); - free requires (memory_load8_le(mem, 2310bv64) == 101bv8); - free requires (memory_load8_le(mem, 2311bv64) == 32bv8); - free requires (memory_load8_le(mem, 2312bv64) == 105bv8); - free requires (memory_load8_le(mem, 2313bv64) == 115bv8); - free requires (memory_load8_le(mem, 2314bv64) == 58bv8); - free requires (memory_load8_le(mem, 2315bv64) == 32bv8); - free requires (memory_load8_le(mem, 2316bv64) == 37bv8); - free requires (memory_load8_le(mem, 2317bv64) == 100bv8); - free requires (memory_load8_le(mem, 2318bv64) == 10bv8); - free requires (memory_load8_le(mem, 2319bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2272bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2273bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2274bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2275bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2276bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2277bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2278bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2279bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2280bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2281bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2282bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2283bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2284bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2285bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2286bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2287bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2288bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2289bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2290bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2291bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2292bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2293bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2294bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2295bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2296bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2297bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2298bv64) == 111bv8); - free ensures (memory_load8_le(mem, 2299bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2300bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2301bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2302bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2303bv64) == 118bv8); - free ensures (memory_load8_le(mem, 2304bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2305bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2306bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2307bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2308bv64) == 98bv8); - free ensures (memory_load8_le(mem, 2309bv64) == 108bv8); - free ensures (memory_load8_le(mem, 2310bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2311bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2312bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2313bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2314bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2315bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2316bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2317bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2318bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2319bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free requires (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free requires (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free requires (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free requires (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free requires (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free requires (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free requires (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 4211825664600402019bv64); + free ensures (memory_load64_le(mem, 2272bv64) == 7307182754559632672bv64); + free ensures (memory_load64_le(mem, 2280bv64) == 4211825664634808608bv64); + free ensures (memory_load64_le(mem, 2288bv64) == 7307182754559698208bv64); + free ensures (memory_load64_le(mem, 2296bv64) == 8511922461266111520bv64); + free ensures (memory_load64_le(mem, 2304bv64) == 2334391151658365537bv64); + free ensures (memory_load64_le(mem, 2312bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected index 7853707b6..cdae10f99 100644 --- a/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected @@ -1,78 +1,113 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2248bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -152,53 +187,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -276,38 +292,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2248bv64) == 1bv8); free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); free ensures (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -383,57 +371,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2248bv64) == 1bv8); free requires (memory_load8_le(mem, 2249bv64) == 0bv8); free requires (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -509,38 +457,10 @@ procedure main() free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -620,38 +540,12 @@ procedure main() free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -744,6 +638,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -821,38 +716,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2248bv64) == 1bv8); free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); free ensures (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -928,38 +795,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -1038,38 +879,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2248bv64) == 1bv8); free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); free ensures (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -1145,35 +958,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected index 2f63e0068..8183571ec 100644 --- a/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected @@ -1,46 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R2: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2088bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -120,53 +147,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2160bv64) == 100bv8); free ensures (memory_load8_le(mem, 2161bv64) == 10bv8); free ensures (memory_load8_le(mem, 2162bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69008bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2088bv64) == 1bv8); @@ -244,38 +252,10 @@ procedure __printf_chk(); free requires (memory_load8_le(mem, 2160bv64) == 100bv8); free requires (memory_load8_le(mem, 2161bv64) == 10bv8); free requires (memory_load8_le(mem, 2162bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 16bv8); - free requires (memory_load8_le(mem, 69009bv64) == 8bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 192bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1664bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2088bv64) == 1bv8); free ensures (memory_load8_le(mem, 2089bv64) == 0bv8); free ensures (memory_load8_le(mem, 2090bv64) == 2bv8); @@ -351,57 +331,17 @@ procedure __printf_chk(); free ensures (memory_load8_le(mem, 2160bv64) == 100bv8); free ensures (memory_load8_le(mem, 2161bv64) == 10bv8); free ensures (memory_load8_le(mem, 2162bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69008bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2088bv64) == 1bv8); free requires (memory_load8_le(mem, 2089bv64) == 0bv8); free requires (memory_load8_le(mem, 2090bv64) == 2bv8); @@ -477,38 +417,10 @@ procedure main() free requires (memory_load8_le(mem, 2160bv64) == 100bv8); free requires (memory_load8_le(mem, 2161bv64) == 10bv8); free requires (memory_load8_le(mem, 2162bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 16bv8); - free requires (memory_load8_le(mem, 69009bv64) == 8bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 192bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1664bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -588,38 +500,12 @@ procedure main() free ensures (memory_load8_le(mem, 2160bv64) == 100bv8); free ensures (memory_load8_le(mem, 2161bv64) == 10bv8); free ensures (memory_load8_le(mem, 2162bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv64; var Gamma_#1: bool; @@ -665,3 +551,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected index 91f3ea4d7..66996aab1 100644 --- a/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected @@ -1,78 +1,113 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2248bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -152,53 +187,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -276,38 +292,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2248bv64) == 1bv8); free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); free ensures (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -383,57 +371,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2248bv64) == 1bv8); free requires (memory_load8_le(mem, 2249bv64) == 0bv8); free requires (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -509,38 +457,10 @@ procedure main() free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -620,38 +540,12 @@ procedure main() free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -744,6 +638,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -821,38 +716,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2248bv64) == 1bv8); free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); free ensures (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -928,38 +795,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -1038,38 +879,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2248bv64) == 1bv8); free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); free ensures (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -1145,35 +958,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected index 91f3ea4d7..66996aab1 100644 --- a/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected @@ -1,78 +1,113 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2248bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -152,53 +187,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -276,38 +292,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2248bv64) == 1bv8); free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); free ensures (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -383,57 +371,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2248bv64) == 1bv8); free requires (memory_load8_le(mem, 2249bv64) == 0bv8); free requires (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -509,38 +457,10 @@ procedure main() free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -620,38 +540,12 @@ procedure main() free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -744,6 +638,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -821,38 +716,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2248bv64) == 1bv8); free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); free ensures (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -928,38 +795,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -1038,38 +879,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2320bv64) == 100bv8); free requires (memory_load8_le(mem, 2321bv64) == 10bv8); free requires (memory_load8_le(mem, 2322bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2248bv64) == 1bv8); free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); free ensures (memory_load8_le(mem, 2250bv64) == 2bv8); @@ -1145,35 +958,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2320bv64) == 100bv8); free ensures (memory_load8_le(mem, 2321bv64) == 10bv8); free ensures (memory_load8_le(mem, 2322bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected index 6030ae003..d3787536d 100644 --- a/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected @@ -1,82 +1,121 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2292bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -145,53 +184,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -258,38 +278,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2292bv64) == 1bv8); free ensures (memory_load8_le(mem, 2293bv64) == 0bv8); free ensures (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -354,57 +346,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free requires (memory_load8_le(mem, 2292bv64) == 1bv8); free requires (memory_load8_le(mem, 2293bv64) == 0bv8); free requires (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -469,38 +421,10 @@ procedure main() free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -569,38 +493,12 @@ procedure main() free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -716,6 +614,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -782,38 +681,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2292bv64) == 1bv8); free ensures (memory_load8_le(mem, 2293bv64) == 0bv8); free ensures (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -878,38 +749,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -977,38 +822,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2292bv64) == 1bv8); free ensures (memory_load8_le(mem, 2293bv64) == 0bv8); free ensures (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -1073,35 +890,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected index 775c83e11..bd9edd86d 100644 --- a/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected @@ -1,44 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1964bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -107,71 +132,38 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2025bv64) == 100bv8); free ensures (memory_load8_le(mem, 2026bv64) == 10bv8); free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); @@ -236,38 +228,10 @@ procedure main() free requires (memory_load8_le(mem, 2025bv64) == 100bv8); free requires (memory_load8_le(mem, 2026bv64) == 10bv8); free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -336,38 +300,12 @@ procedure main() free ensures (memory_load8_le(mem, 2025bv64) == 100bv8); free ensures (memory_load8_le(mem, 2026bv64) == 10bv8); free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -411,6 +349,7 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1964bv64) == 1bv8); @@ -477,38 +416,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2025bv64) == 100bv8); free requires (memory_load8_le(mem, 2026bv64) == 10bv8); free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (memory_load8_le(mem, 1964bv64) == 1bv8); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); @@ -573,35 +484,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2025bv64) == 100bv8); free ensures (memory_load8_le(mem, 2026bv64) == 10bv8); free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + diff --git a/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected index 8645f53a7..6cb98b8c0 100644 --- a/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected @@ -1,82 +1,121 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2292bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -145,53 +184,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -258,38 +278,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2292bv64) == 1bv8); free ensures (memory_load8_le(mem, 2293bv64) == 0bv8); free ensures (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -354,57 +346,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free requires (memory_load8_le(mem, 2292bv64) == 1bv8); free requires (memory_load8_le(mem, 2293bv64) == 0bv8); free requires (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -469,38 +421,10 @@ procedure main() free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -569,38 +493,12 @@ procedure main() free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -716,6 +614,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -782,38 +681,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2292bv64) == 1bv8); free ensures (memory_load8_le(mem, 2293bv64) == 0bv8); free ensures (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -878,38 +749,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -977,38 +822,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2292bv64) == 1bv8); free ensures (memory_load8_le(mem, 2293bv64) == 0bv8); free ensures (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -1073,35 +890,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected index 8645f53a7..6cb98b8c0 100644 --- a/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected @@ -1,82 +1,121 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2292bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -145,53 +184,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -258,38 +278,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2292bv64) == 1bv8); free ensures (memory_load8_le(mem, 2293bv64) == 0bv8); free ensures (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -354,57 +346,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free requires (memory_load8_le(mem, 2292bv64) == 1bv8); free requires (memory_load8_le(mem, 2293bv64) == 0bv8); free requires (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -469,38 +421,10 @@ procedure main() free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -569,38 +493,12 @@ procedure main() free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -716,6 +614,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -782,38 +681,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2292bv64) == 1bv8); free ensures (memory_load8_le(mem, 2293bv64) == 0bv8); free ensures (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -878,38 +749,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -977,38 +822,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2353bv64) == 100bv8); free requires (memory_load8_le(mem, 2354bv64) == 10bv8); free requires (memory_load8_le(mem, 2355bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2292bv64) == 1bv8); free ensures (memory_load8_le(mem, 2293bv64) == 0bv8); free ensures (memory_load8_le(mem, 2294bv64) == 2bv8); @@ -1073,35 +890,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2353bv64) == 100bv8); free ensures (memory_load8_le(mem, 2354bv64) == 10bv8); free ensures (memory_load8_le(mem, 2355bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected index 503331b2c..2cf8f9710 100644 --- a/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected @@ -1,78 +1,113 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2272bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -152,53 +187,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -276,38 +292,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2272bv64) == 1bv8); free ensures (memory_load8_le(mem, 2273bv64) == 0bv8); free ensures (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -383,57 +371,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2272bv64) == 1bv8); free requires (memory_load8_le(mem, 2273bv64) == 0bv8); free requires (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -509,38 +457,10 @@ procedure main() free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -620,38 +540,12 @@ procedure main() free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -758,6 +652,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -835,38 +730,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2272bv64) == 1bv8); free ensures (memory_load8_le(mem, 2273bv64) == 0bv8); free ensures (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -942,38 +809,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -1052,38 +893,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2272bv64) == 1bv8); free ensures (memory_load8_le(mem, 2273bv64) == 0bv8); free ensures (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -1159,35 +972,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected index 2f63e0068..8183571ec 100644 --- a/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected @@ -1,46 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R2: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2088bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -120,53 +147,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2160bv64) == 100bv8); free ensures (memory_load8_le(mem, 2161bv64) == 10bv8); free ensures (memory_load8_le(mem, 2162bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69008bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2088bv64) == 1bv8); @@ -244,38 +252,10 @@ procedure __printf_chk(); free requires (memory_load8_le(mem, 2160bv64) == 100bv8); free requires (memory_load8_le(mem, 2161bv64) == 10bv8); free requires (memory_load8_le(mem, 2162bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 16bv8); - free requires (memory_load8_le(mem, 69009bv64) == 8bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 192bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1664bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2088bv64) == 1bv8); free ensures (memory_load8_le(mem, 2089bv64) == 0bv8); free ensures (memory_load8_le(mem, 2090bv64) == 2bv8); @@ -351,57 +331,17 @@ procedure __printf_chk(); free ensures (memory_load8_le(mem, 2160bv64) == 100bv8); free ensures (memory_load8_le(mem, 2161bv64) == 10bv8); free ensures (memory_load8_le(mem, 2162bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69008bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2088bv64) == 1bv8); free requires (memory_load8_le(mem, 2089bv64) == 0bv8); free requires (memory_load8_le(mem, 2090bv64) == 2bv8); @@ -477,38 +417,10 @@ procedure main() free requires (memory_load8_le(mem, 2160bv64) == 100bv8); free requires (memory_load8_le(mem, 2161bv64) == 10bv8); free requires (memory_load8_le(mem, 2162bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 16bv8); - free requires (memory_load8_le(mem, 69009bv64) == 8bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 192bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1664bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -588,38 +500,12 @@ procedure main() free ensures (memory_load8_le(mem, 2160bv64) == 100bv8); free ensures (memory_load8_le(mem, 2161bv64) == 10bv8); free ensures (memory_load8_le(mem, 2162bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv64; var Gamma_#1: bool; @@ -665,3 +551,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected index 76eed4543..adf40c74b 100644 --- a/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected @@ -1,78 +1,113 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2272bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -152,53 +187,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -276,38 +292,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2272bv64) == 1bv8); free ensures (memory_load8_le(mem, 2273bv64) == 0bv8); free ensures (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -383,57 +371,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2272bv64) == 1bv8); free requires (memory_load8_le(mem, 2273bv64) == 0bv8); free requires (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -509,38 +457,10 @@ procedure main() free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -620,38 +540,12 @@ procedure main() free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -758,6 +652,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -835,38 +730,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2272bv64) == 1bv8); free ensures (memory_load8_le(mem, 2273bv64) == 0bv8); free ensures (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -942,38 +809,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -1052,38 +893,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2272bv64) == 1bv8); free ensures (memory_load8_le(mem, 2273bv64) == 0bv8); free ensures (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -1159,35 +972,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected index 76eed4543..adf40c74b 100644 --- a/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected @@ -1,78 +1,113 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2272bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -152,53 +187,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -276,38 +292,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2272bv64) == 1bv8); free ensures (memory_load8_le(mem, 2273bv64) == 0bv8); free ensures (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -383,57 +371,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2272bv64) == 1bv8); free requires (memory_load8_le(mem, 2273bv64) == 0bv8); free requires (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -509,38 +457,10 @@ procedure main() free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -620,38 +540,12 @@ procedure main() free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -758,6 +652,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -835,38 +730,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2272bv64) == 1bv8); free ensures (memory_load8_le(mem, 2273bv64) == 0bv8); free ensures (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -942,38 +809,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -1052,38 +893,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2344bv64) == 100bv8); free requires (memory_load8_le(mem, 2345bv64) == 10bv8); free requires (memory_load8_le(mem, 2346bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2272bv64) == 1bv8); free ensures (memory_load8_le(mem, 2273bv64) == 0bv8); free ensures (memory_load8_le(mem, 2274bv64) == 2bv8); @@ -1159,35 +972,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2344bv64) == 100bv8); free ensures (memory_load8_le(mem, 2345bv64) == 10bv8); free ensures (memory_load8_le(mem, 2346bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected index f97fa4098..e68576cd3 100644 --- a/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected @@ -1,83 +1,123 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2344bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -152,53 +192,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -271,38 +292,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2344bv64) == 1bv8); free ensures (memory_load8_le(mem, 2345bv64) == 0bv8); free ensures (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -373,57 +366,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free requires (memory_load8_le(mem, 2344bv64) == 1bv8); free requires (memory_load8_le(mem, 2345bv64) == 0bv8); free requires (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -494,38 +447,10 @@ procedure main() free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -600,38 +525,12 @@ procedure main() free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #7: bv64; @@ -743,6 +642,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -815,38 +715,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2344bv64) == 1bv8); free ensures (memory_load8_le(mem, 2345bv64) == 0bv8); free ensures (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -917,40 +789,14 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure printCharValue() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); free requires (memory_load8_le(mem, 2345bv64) == 0bv8); @@ -1022,38 +868,10 @@ procedure printCharValue() free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -1128,38 +946,12 @@ procedure printCharValue() free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation printCharValue() { var #5: bv64; var #6: bv64; @@ -1201,6 +993,7 @@ procedure printCharValue() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -1273,38 +1066,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2344bv64) == 1bv8); free ensures (memory_load8_le(mem, 2345bv64) == 0bv8); free ensures (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -1375,35 +1140,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected index de0df8c0a..303803cd3 100644 --- a/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected @@ -1,44 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1996bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -113,71 +138,38 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2063bv64) == 99bv8); free ensures (memory_load8_le(mem, 2064bv64) == 10bv8); free ensures (memory_load8_le(mem, 2065bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free requires (memory_load8_le(mem, 1996bv64) == 1bv8); free requires (memory_load8_le(mem, 1997bv64) == 0bv8); free requires (memory_load8_le(mem, 1998bv64) == 2bv8); @@ -248,38 +240,10 @@ procedure main() free requires (memory_load8_le(mem, 2063bv64) == 99bv8); free requires (memory_load8_le(mem, 2064bv64) == 10bv8); free requires (memory_load8_le(mem, 2065bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -354,38 +318,12 @@ procedure main() free ensures (memory_load8_le(mem, 2063bv64) == 99bv8); free ensures (memory_load8_le(mem, 2064bv64) == 10bv8); free ensures (memory_load8_le(mem, 2065bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -429,6 +367,7 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1996bv64) == 1bv8); @@ -501,38 +440,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2063bv64) == 99bv8); free requires (memory_load8_le(mem, 2064bv64) == 10bv8); free requires (memory_load8_le(mem, 2065bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (memory_load8_le(mem, 1996bv64) == 1bv8); free ensures (memory_load8_le(mem, 1997bv64) == 0bv8); free ensures (memory_load8_le(mem, 1998bv64) == 2bv8); @@ -603,35 +514,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2063bv64) == 99bv8); free ensures (memory_load8_le(mem, 2064bv64) == 10bv8); free ensures (memory_load8_le(mem, 2065bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + diff --git a/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected index 4e8f07b3e..4df4fa8c2 100644 --- a/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected @@ -1,83 +1,123 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2344bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -152,53 +192,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -271,38 +292,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2344bv64) == 1bv8); free ensures (memory_load8_le(mem, 2345bv64) == 0bv8); free ensures (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -373,57 +366,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free requires (memory_load8_le(mem, 2344bv64) == 1bv8); free requires (memory_load8_le(mem, 2345bv64) == 0bv8); free requires (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -494,38 +447,10 @@ procedure main() free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -600,38 +525,12 @@ procedure main() free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #7: bv64; @@ -743,6 +642,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -815,38 +715,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2344bv64) == 1bv8); free ensures (memory_load8_le(mem, 2345bv64) == 0bv8); free ensures (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -917,40 +789,14 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure printCharValue() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); free requires (memory_load8_le(mem, 2345bv64) == 0bv8); @@ -1022,38 +868,10 @@ procedure printCharValue() free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -1128,38 +946,12 @@ procedure printCharValue() free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation printCharValue() { var #5: bv64; var #6: bv64; @@ -1201,6 +993,7 @@ procedure printCharValue() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -1273,38 +1066,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2344bv64) == 1bv8); free ensures (memory_load8_le(mem, 2345bv64) == 0bv8); free ensures (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -1375,35 +1140,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected index 4e8f07b3e..4df4fa8c2 100644 --- a/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected @@ -1,83 +1,123 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2344bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -152,53 +192,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -271,38 +292,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2344bv64) == 1bv8); free ensures (memory_load8_le(mem, 2345bv64) == 0bv8); free ensures (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -373,57 +366,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free requires (memory_load8_le(mem, 2344bv64) == 1bv8); free requires (memory_load8_le(mem, 2345bv64) == 0bv8); free requires (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -494,38 +447,10 @@ procedure main() free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -600,38 +525,12 @@ procedure main() free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #7: bv64; @@ -743,6 +642,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -815,38 +715,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2344bv64) == 1bv8); free ensures (memory_load8_le(mem, 2345bv64) == 0bv8); free ensures (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -917,40 +789,14 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure printCharValue() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); free requires (memory_load8_le(mem, 2345bv64) == 0bv8); @@ -1022,38 +868,10 @@ procedure printCharValue() free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -1128,38 +946,12 @@ procedure printCharValue() free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation printCharValue() { var #5: bv64; var #6: bv64; @@ -1201,6 +993,7 @@ procedure printCharValue() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -1273,38 +1066,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2411bv64) == 99bv8); free requires (memory_load8_le(mem, 2412bv64) == 10bv8); free requires (memory_load8_le(mem, 2413bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2344bv64) == 1bv8); free ensures (memory_load8_le(mem, 2345bv64) == 0bv8); free ensures (memory_load8_le(mem, 2346bv64) == 2bv8); @@ -1375,35 +1140,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2411bv64) == 99bv8); free ensures (memory_load8_le(mem, 2412bv64) == 10bv8); free ensures (memory_load8_le(mem, 2413bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected index 84eaf0dd9..84faf1f55 100644 --- a/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected @@ -1,79 +1,115 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2328bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -157,53 +193,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -285,38 +302,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -396,57 +385,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2328bv64) == 1bv8); free requires (memory_load8_le(mem, 2329bv64) == 0bv8); free requires (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -526,38 +475,10 @@ procedure main() free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -641,38 +562,12 @@ procedure main() free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -774,6 +669,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -855,38 +751,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -966,40 +834,14 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure printCharValue() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); free requires (memory_load8_le(mem, 2329bv64) == 0bv8); @@ -1080,38 +922,10 @@ procedure printCharValue() free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -1195,38 +1009,12 @@ procedure printCharValue() free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation printCharValue() { var #5: bv64; var Gamma_#5: bool; @@ -1268,6 +1056,7 @@ procedure printCharValue() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1349,38 +1138,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -1460,35 +1221,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected index cb33d38b0..cbb78d053 100644 --- a/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected @@ -1,69 +1,107 @@ 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_R29: bool; + var {:extern} Gamma_R3: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R3: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2264bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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]))))))) + (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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -143,53 +181,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2336bv64) == 100bv8); free ensures (memory_load8_le(mem, 2337bv64) == 10bv8); free ensures (memory_load8_le(mem, 2338bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 68992bv64) == 2192bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 2112bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2264bv64) == 1bv8); @@ -267,38 +286,10 @@ procedure __printf_chk(); free requires (memory_load8_le(mem, 2336bv64) == 100bv8); free requires (memory_load8_le(mem, 2337bv64) == 10bv8); free requires (memory_load8_le(mem, 2338bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 144bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 64bv8); - free requires (memory_load8_le(mem, 69001bv64) == 8bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2192bv64); + free requires (memory_load64_le(mem, 69000bv64) == 2112bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2264bv64) == 1bv8); free ensures (memory_load8_le(mem, 2265bv64) == 0bv8); free ensures (memory_load8_le(mem, 2266bv64) == 2bv8); @@ -374,38 +365,12 @@ procedure __printf_chk(); free ensures (memory_load8_le(mem, 2336bv64) == 100bv8); free ensures (memory_load8_le(mem, 2337bv64) == 10bv8); free ensures (memory_load8_le(mem, 2338bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2192bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 2112bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -484,38 +449,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2336bv64) == 100bv8); free requires (memory_load8_le(mem, 2337bv64) == 10bv8); free requires (memory_load8_le(mem, 2338bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 144bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 64bv8); - free requires (memory_load8_le(mem, 69001bv64) == 8bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2192bv64); + free requires (memory_load64_le(mem, 69000bv64) == 2112bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2264bv64) == 1bv8); free ensures (memory_load8_le(mem, 2265bv64) == 0bv8); free ensures (memory_load8_le(mem, 2266bv64) == 2bv8); @@ -591,57 +528,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2336bv64) == 100bv8); free ensures (memory_load8_le(mem, 2337bv64) == 10bv8); free ensures (memory_load8_le(mem, 2338bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 68992bv64) == 2192bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 2112bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, Gamma_R29, Gamma_R3, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, R29, R3, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2264bv64) == 1bv8); free requires (memory_load8_le(mem, 2265bv64) == 0bv8); free requires (memory_load8_le(mem, 2266bv64) == 2bv8); @@ -717,38 +614,10 @@ procedure main() free requires (memory_load8_le(mem, 2336bv64) == 100bv8); free requires (memory_load8_le(mem, 2337bv64) == 10bv8); free requires (memory_load8_le(mem, 2338bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 144bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 64bv8); - free requires (memory_load8_le(mem, 69001bv64) == 8bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2192bv64); + free requires (memory_load64_le(mem, 69000bv64) == 2112bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R19 == old(Gamma_R19)); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); @@ -830,38 +699,12 @@ procedure main() free ensures (memory_load8_le(mem, 2336bv64) == 100bv8); free ensures (memory_load8_le(mem, 2337bv64) == 10bv8); free ensures (memory_load8_le(mem, 2338bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2192bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 2112bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv64; var Gamma_#1: bool; @@ -925,6 +768,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2264bv64) == 1bv8); @@ -1002,38 +846,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2336bv64) == 100bv8); free requires (memory_load8_le(mem, 2337bv64) == 10bv8); free requires (memory_load8_le(mem, 2338bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 144bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 64bv8); - free requires (memory_load8_le(mem, 69001bv64) == 8bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2192bv64); + free requires (memory_load64_le(mem, 69000bv64) == 2112bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2264bv64) == 1bv8); free ensures (memory_load8_le(mem, 2265bv64) == 0bv8); free ensures (memory_load8_le(mem, 2266bv64) == 2bv8); @@ -1109,40 +925,14 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2336bv64) == 100bv8); free ensures (memory_load8_le(mem, 2337bv64) == 10bv8); free ensures (memory_load8_le(mem, 2338bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure printCharValue() + free ensures (memory_load64_le(mem, 68992bv64) == 2192bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 2112bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R16, R17, R2, R3, mem; free requires (memory_load8_le(mem, 2264bv64) == 1bv8); free requires (memory_load8_le(mem, 2265bv64) == 0bv8); @@ -1219,38 +1009,10 @@ procedure printCharValue() free requires (memory_load8_le(mem, 2336bv64) == 100bv8); free requires (memory_load8_le(mem, 2337bv64) == 10bv8); free requires (memory_load8_le(mem, 2338bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 144bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 64bv8); - free requires (memory_load8_le(mem, 69001bv64) == 8bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2192bv64); + free requires (memory_load64_le(mem, 69000bv64) == 2112bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2264bv64) == 1bv8); free ensures (memory_load8_le(mem, 2265bv64) == 0bv8); free ensures (memory_load8_le(mem, 2266bv64) == 2bv8); @@ -1326,38 +1088,12 @@ procedure printCharValue() free ensures (memory_load8_le(mem, 2336bv64) == 100bv8); free ensures (memory_load8_le(mem, 2337bv64) == 10bv8); free ensures (memory_load8_le(mem, 2338bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 144bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2192bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 2112bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation printCharValue() { lprintCharValue: assume {:captureState "lprintCharValue"} true; @@ -1377,3 +1113,5 @@ procedure printCharValue() //no return target assume false; } + + diff --git a/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected index 5b5324742..20b14e248 100644 --- a/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected @@ -1,79 +1,115 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2328bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -157,53 +193,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -285,38 +302,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -396,57 +385,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2328bv64) == 1bv8); free requires (memory_load8_le(mem, 2329bv64) == 0bv8); free requires (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -526,38 +475,10 @@ procedure main() free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -641,38 +562,12 @@ procedure main() free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -774,6 +669,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -855,38 +751,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -966,40 +834,14 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure printCharValue() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); free requires (memory_load8_le(mem, 2329bv64) == 0bv8); @@ -1080,38 +922,10 @@ procedure printCharValue() free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -1195,38 +1009,12 @@ procedure printCharValue() free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation printCharValue() { var #5: bv64; var Gamma_#5: bool; @@ -1268,6 +1056,7 @@ procedure printCharValue() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1349,38 +1138,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -1460,35 +1221,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected index 5b5324742..20b14e248 100644 --- a/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected @@ -1,79 +1,115 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2328bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -157,53 +193,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -285,38 +302,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -396,57 +385,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2328bv64) == 1bv8); free requires (memory_load8_le(mem, 2329bv64) == 0bv8); free requires (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -526,38 +475,10 @@ procedure main() free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -641,38 +562,12 @@ procedure main() free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -774,6 +669,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -855,38 +751,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -966,40 +834,14 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure printCharValue() + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); free requires (memory_load8_le(mem, 2329bv64) == 0bv8); @@ -1080,38 +922,10 @@ procedure printCharValue() free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -1195,38 +1009,12 @@ procedure printCharValue() free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation printCharValue() { var #5: bv64; var Gamma_#5: bool; @@ -1268,6 +1056,7 @@ procedure printCharValue() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1349,38 +1138,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2404bv64) == 99bv8); free requires (memory_load8_le(mem, 2405bv64) == 10bv8); free requires (memory_load8_le(mem, 2406bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2328bv64) == 1bv8); free ensures (memory_load8_le(mem, 2329bv64) == 0bv8); free ensures (memory_load8_le(mem, 2330bv64) == 2bv8); @@ -1460,35 +1221,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2404bv64) == 99bv8); free ensures (memory_load8_le(mem, 2405bv64) == 10bv8); free ensures (memory_load8_le(mem, 2406bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/multi_malloc/clang/multi_malloc.expected b/src/test/correct/multi_malloc/clang/multi_malloc.expected index 829a6b1d3..6b041a2ab 100644 --- a/src/test/correct/multi_malloc/clang/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang/multi_malloc.expected @@ -1,82 +1,121 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2232bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -118,53 +157,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -204,38 +224,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2232bv64) == 1bv8); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -273,57 +265,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free requires (memory_load8_le(mem, 2232bv64) == 1bv8); free requires (memory_load8_le(mem, 2233bv64) == 0bv8); free requires (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -361,38 +313,10 @@ procedure main() free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -434,38 +358,12 @@ procedure main() free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -553,6 +451,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -592,38 +491,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2232bv64) == 1bv8); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -661,38 +532,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -733,38 +578,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2232bv64) == 1bv8); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -802,35 +619,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected b/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected index d1762ce6b..5a20c63cc 100644 --- a/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected @@ -1,44 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1948bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -80,71 +105,38 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1982bv64) == 100bv8); free ensures (memory_load8_le(mem, 1983bv64) == 10bv8); free ensures (memory_load8_le(mem, 1984bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free requires (memory_load8_le(mem, 1948bv64) == 1bv8); free requires (memory_load8_le(mem, 1949bv64) == 0bv8); free requires (memory_load8_le(mem, 1950bv64) == 2bv8); @@ -182,38 +174,10 @@ procedure main() free requires (memory_load8_le(mem, 1982bv64) == 100bv8); free requires (memory_load8_le(mem, 1983bv64) == 10bv8); free requires (memory_load8_le(mem, 1984bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -255,38 +219,12 @@ procedure main() free ensures (memory_load8_le(mem, 1982bv64) == 100bv8); free ensures (memory_load8_le(mem, 1983bv64) == 10bv8); free ensures (memory_load8_le(mem, 1984bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -322,6 +260,7 @@ procedure main() return; } + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1948bv64) == 1bv8); @@ -361,38 +300,10 @@ procedure printf(); free requires (memory_load8_le(mem, 1982bv64) == 100bv8); free requires (memory_load8_le(mem, 1983bv64) == 10bv8); free requires (memory_load8_le(mem, 1984bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (memory_load8_le(mem, 1948bv64) == 1bv8); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); @@ -430,35 +341,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 1982bv64) == 100bv8); free ensures (memory_load8_le(mem, 1983bv64) == 10bv8); free ensures (memory_load8_le(mem, 1984bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + diff --git a/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected b/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected index 002ba1344..d62a57bb3 100644 --- a/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected @@ -1,82 +1,121 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2232bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -118,53 +157,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -204,38 +224,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2232bv64) == 1bv8); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -273,57 +265,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free requires (memory_load8_le(mem, 2232bv64) == 1bv8); free requires (memory_load8_le(mem, 2233bv64) == 0bv8); free requires (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -361,38 +313,10 @@ procedure main() free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -434,38 +358,12 @@ procedure main() free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -553,6 +451,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -592,38 +491,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2232bv64) == 1bv8); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -661,38 +532,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -733,38 +578,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2232bv64) == 1bv8); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -802,35 +619,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected b/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected index 002ba1344..d62a57bb3 100644 --- a/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected @@ -1,82 +1,121 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2232bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -118,53 +157,34 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -204,38 +224,10 @@ procedure #free(); free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2232bv64) == 1bv8); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -273,57 +265,17 @@ procedure #free(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69688bv64) == 0bv8); - free requires (memory_load8_le(mem, 69689bv64) == 0bv8); - free requires (memory_load8_le(mem, 69690bv64) == 0bv8); - free requires (memory_load8_le(mem, 69691bv64) == 0bv8); - free requires (memory_load8_le(mem, 69692bv64) == 0bv8); - free requires (memory_load8_le(mem, 69693bv64) == 0bv8); - free requires (memory_load8_le(mem, 69694bv64) == 0bv8); - free requires (memory_load8_le(mem, 69695bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69688bv64) == 0bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free requires (memory_load8_le(mem, 2232bv64) == 1bv8); free requires (memory_load8_le(mem, 2233bv64) == 0bv8); free requires (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -361,38 +313,10 @@ procedure main() free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -434,38 +358,12 @@ procedure main() free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -553,6 +451,7 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -592,38 +491,10 @@ procedure malloc(); free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2232bv64) == 1bv8); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -661,38 +532,12 @@ procedure malloc(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; @@ -733,38 +578,10 @@ procedure printf(); free requires (memory_load8_le(mem, 2266bv64) == 100bv8); free requires (memory_load8_le(mem, 2267bv64) == 10bv8); free requires (memory_load8_le(mem, 2268bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 8bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 8bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69696bv64) == 64bv8); - free requires (memory_load8_le(mem, 69697bv64) == 16bv8); - free requires (memory_load8_le(mem, 69698bv64) == 1bv8); - free requires (memory_load8_le(mem, 69699bv64) == 0bv8); - free requires (memory_load8_le(mem, 69700bv64) == 0bv8); - free requires (memory_load8_le(mem, 69701bv64) == 0bv8); - free requires (memory_load8_le(mem, 69702bv64) == 0bv8); - free requires (memory_load8_le(mem, 69703bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69592bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69696bv64) == 69696bv64); free ensures (memory_load8_le(mem, 2232bv64) == 1bv8); free ensures (memory_load8_le(mem, 2233bv64) == 0bv8); free ensures (memory_load8_le(mem, 2234bv64) == 2bv8); @@ -802,35 +619,10 @@ procedure printf(); free ensures (memory_load8_le(mem, 2266bv64) == 100bv8); free ensures (memory_load8_le(mem, 2267bv64) == 10bv8); free ensures (memory_load8_le(mem, 2268bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69696bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69697bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69698bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69699bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69700bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69701bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69702bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69703bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); + + + diff --git a/src/test/correct/multi_malloc/gcc/multi_malloc.expected b/src/test/correct/multi_malloc/gcc/multi_malloc.expected index 183a05c34..a31d53957 100644 --- a/src/test/correct/multi_malloc/gcc/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc/multi_malloc.expected @@ -1,522 +1,206 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2224bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -598,328 +282,54 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected b/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected index 4fa5bf17f..53057ea6e 100644 --- a/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected @@ -1,490 +1,161 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R2: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2024bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2032bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2033bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2034bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2035bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2036bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2037bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2038bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2039bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2040bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2041bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2042bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2043bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2044bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2045bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2046bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2047bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2048bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2049bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2056bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2057bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2058bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2059bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2060bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2061bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2062bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2063bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2064bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2065bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2066bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2067bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2068bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2069bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2070bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 2024bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2032bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2040bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2048bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2056bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2064bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2024bv64) == 1bv8); - free requires (memory_load8_le(mem, 2025bv64) == 0bv8); - free requires (memory_load8_le(mem, 2026bv64) == 2bv8); - free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 2028bv64) == 0bv8); - free requires (memory_load8_le(mem, 2029bv64) == 0bv8); - free requires (memory_load8_le(mem, 2030bv64) == 0bv8); - free requires (memory_load8_le(mem, 2031bv64) == 0bv8); - free requires (memory_load8_le(mem, 2032bv64) == 84bv8); - free requires (memory_load8_le(mem, 2033bv64) == 104bv8); - free requires (memory_load8_le(mem, 2034bv64) == 101bv8); - free requires (memory_load8_le(mem, 2035bv64) == 32bv8); - free requires (memory_load8_le(mem, 2036bv64) == 99bv8); - free requires (memory_load8_le(mem, 2037bv64) == 104bv8); - free requires (memory_load8_le(mem, 2038bv64) == 97bv8); - free requires (memory_load8_le(mem, 2039bv64) == 114bv8); - free requires (memory_load8_le(mem, 2040bv64) == 32bv8); - free requires (memory_load8_le(mem, 2041bv64) == 105bv8); - free requires (memory_load8_le(mem, 2042bv64) == 115bv8); - free requires (memory_load8_le(mem, 2043bv64) == 58bv8); - free requires (memory_load8_le(mem, 2044bv64) == 32bv8); - free requires (memory_load8_le(mem, 2045bv64) == 37bv8); - free requires (memory_load8_le(mem, 2046bv64) == 99bv8); - free requires (memory_load8_le(mem, 2047bv64) == 10bv8); - free requires (memory_load8_le(mem, 2048bv64) == 0bv8); - free requires (memory_load8_le(mem, 2049bv64) == 0bv8); - free requires (memory_load8_le(mem, 2050bv64) == 0bv8); - free requires (memory_load8_le(mem, 2051bv64) == 0bv8); - free requires (memory_load8_le(mem, 2052bv64) == 0bv8); - free requires (memory_load8_le(mem, 2053bv64) == 0bv8); - free requires (memory_load8_le(mem, 2054bv64) == 0bv8); - free requires (memory_load8_le(mem, 2055bv64) == 0bv8); - free requires (memory_load8_le(mem, 2056bv64) == 84bv8); - free requires (memory_load8_le(mem, 2057bv64) == 104bv8); - free requires (memory_load8_le(mem, 2058bv64) == 101bv8); - free requires (memory_load8_le(mem, 2059bv64) == 32bv8); - free requires (memory_load8_le(mem, 2060bv64) == 105bv8); - free requires (memory_load8_le(mem, 2061bv64) == 110bv8); - free requires (memory_load8_le(mem, 2062bv64) == 116bv8); - free requires (memory_load8_le(mem, 2063bv64) == 32bv8); - free requires (memory_load8_le(mem, 2064bv64) == 105bv8); - free requires (memory_load8_le(mem, 2065bv64) == 115bv8); - free requires (memory_load8_le(mem, 2066bv64) == 58bv8); - free requires (memory_load8_le(mem, 2067bv64) == 32bv8); - free requires (memory_load8_le(mem, 2068bv64) == 37bv8); - free requires (memory_load8_le(mem, 2069bv64) == 100bv8); - free requires (memory_load8_le(mem, 2070bv64) == 10bv8); - free requires (memory_load8_le(mem, 2071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 208bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 128bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2032bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2033bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2034bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2035bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2036bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2037bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2038bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2039bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2040bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2041bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2042bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2043bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2044bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2045bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2046bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2047bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2048bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2049bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2056bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2057bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2058bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2059bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2060bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2061bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2062bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2063bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2064bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2065bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2066bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2067bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2068bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2069bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2070bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free requires (memory_load64_le(mem, 2024bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2032bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2040bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2048bv64) == 0bv64); + free requires (memory_load64_le(mem, 2056bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2064bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69008bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1664bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 2024bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2032bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2040bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2048bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2056bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2064bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 2024bv64) == 1bv8); - free requires (memory_load8_le(mem, 2025bv64) == 0bv8); - free requires (memory_load8_le(mem, 2026bv64) == 2bv8); - free requires (memory_load8_le(mem, 2027bv64) == 0bv8); - free requires (memory_load8_le(mem, 2028bv64) == 0bv8); - free requires (memory_load8_le(mem, 2029bv64) == 0bv8); - free requires (memory_load8_le(mem, 2030bv64) == 0bv8); - free requires (memory_load8_le(mem, 2031bv64) == 0bv8); - free requires (memory_load8_le(mem, 2032bv64) == 84bv8); - free requires (memory_load8_le(mem, 2033bv64) == 104bv8); - free requires (memory_load8_le(mem, 2034bv64) == 101bv8); - free requires (memory_load8_le(mem, 2035bv64) == 32bv8); - free requires (memory_load8_le(mem, 2036bv64) == 99bv8); - free requires (memory_load8_le(mem, 2037bv64) == 104bv8); - free requires (memory_load8_le(mem, 2038bv64) == 97bv8); - free requires (memory_load8_le(mem, 2039bv64) == 114bv8); - free requires (memory_load8_le(mem, 2040bv64) == 32bv8); - free requires (memory_load8_le(mem, 2041bv64) == 105bv8); - free requires (memory_load8_le(mem, 2042bv64) == 115bv8); - free requires (memory_load8_le(mem, 2043bv64) == 58bv8); - free requires (memory_load8_le(mem, 2044bv64) == 32bv8); - free requires (memory_load8_le(mem, 2045bv64) == 37bv8); - free requires (memory_load8_le(mem, 2046bv64) == 99bv8); - free requires (memory_load8_le(mem, 2047bv64) == 10bv8); - free requires (memory_load8_le(mem, 2048bv64) == 0bv8); - free requires (memory_load8_le(mem, 2049bv64) == 0bv8); - free requires (memory_load8_le(mem, 2050bv64) == 0bv8); - free requires (memory_load8_le(mem, 2051bv64) == 0bv8); - free requires (memory_load8_le(mem, 2052bv64) == 0bv8); - free requires (memory_load8_le(mem, 2053bv64) == 0bv8); - free requires (memory_load8_le(mem, 2054bv64) == 0bv8); - free requires (memory_load8_le(mem, 2055bv64) == 0bv8); - free requires (memory_load8_le(mem, 2056bv64) == 84bv8); - free requires (memory_load8_le(mem, 2057bv64) == 104bv8); - free requires (memory_load8_le(mem, 2058bv64) == 101bv8); - free requires (memory_load8_le(mem, 2059bv64) == 32bv8); - free requires (memory_load8_le(mem, 2060bv64) == 105bv8); - free requires (memory_load8_le(mem, 2061bv64) == 110bv8); - free requires (memory_load8_le(mem, 2062bv64) == 116bv8); - free requires (memory_load8_le(mem, 2063bv64) == 32bv8); - free requires (memory_load8_le(mem, 2064bv64) == 105bv8); - free requires (memory_load8_le(mem, 2065bv64) == 115bv8); - free requires (memory_load8_le(mem, 2066bv64) == 58bv8); - free requires (memory_load8_le(mem, 2067bv64) == 32bv8); - free requires (memory_load8_le(mem, 2068bv64) == 37bv8); - free requires (memory_load8_le(mem, 2069bv64) == 100bv8); - free requires (memory_load8_le(mem, 2070bv64) == 10bv8); - free requires (memory_load8_le(mem, 2071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 208bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 128bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 128bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 2024bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2032bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2040bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2048bv64) == 0bv64); + free requires (memory_load64_le(mem, 2056bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2064bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 69008bv64) == 2000bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1920bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1664bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2024bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2032bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2033bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2034bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2035bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2036bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2037bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2038bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2039bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2040bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2041bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2042bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2043bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2044bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2045bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2046bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2047bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2048bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2049bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2056bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2057bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2058bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2059bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2060bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2061bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2062bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2063bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2064bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2065bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2066bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2067bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2068bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2069bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2070bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 208bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 128bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2024bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2032bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2040bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2048bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2056bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2064bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 2000bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1920bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv64; var Gamma_#1: bool; @@ -521,3 +192,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected b/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected index 417806157..1d6a5af20 100644 --- a/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected @@ -1,522 +1,206 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2224bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -598,328 +282,54 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected b/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected index 417806157..1d6a5af20 100644 --- a/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected @@ -1,522 +1,206 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2224bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { 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; - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -598,328 +282,54 @@ procedure main() return; } + procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2224bv64) == 1bv8); - free requires (memory_load8_le(mem, 2225bv64) == 0bv8); - free requires (memory_load8_le(mem, 2226bv64) == 2bv8); - free requires (memory_load8_le(mem, 2227bv64) == 0bv8); - free requires (memory_load8_le(mem, 2228bv64) == 0bv8); - free requires (memory_load8_le(mem, 2229bv64) == 0bv8); - free requires (memory_load8_le(mem, 2230bv64) == 0bv8); - free requires (memory_load8_le(mem, 2231bv64) == 0bv8); - free requires (memory_load8_le(mem, 2232bv64) == 84bv8); - free requires (memory_load8_le(mem, 2233bv64) == 104bv8); - free requires (memory_load8_le(mem, 2234bv64) == 101bv8); - free requires (memory_load8_le(mem, 2235bv64) == 32bv8); - free requires (memory_load8_le(mem, 2236bv64) == 99bv8); - free requires (memory_load8_le(mem, 2237bv64) == 104bv8); - free requires (memory_load8_le(mem, 2238bv64) == 97bv8); - free requires (memory_load8_le(mem, 2239bv64) == 114bv8); - free requires (memory_load8_le(mem, 2240bv64) == 32bv8); - free requires (memory_load8_le(mem, 2241bv64) == 105bv8); - free requires (memory_load8_le(mem, 2242bv64) == 115bv8); - free requires (memory_load8_le(mem, 2243bv64) == 58bv8); - free requires (memory_load8_le(mem, 2244bv64) == 32bv8); - free requires (memory_load8_le(mem, 2245bv64) == 37bv8); - free requires (memory_load8_le(mem, 2246bv64) == 99bv8); - free requires (memory_load8_le(mem, 2247bv64) == 10bv8); - free requires (memory_load8_le(mem, 2248bv64) == 0bv8); - free requires (memory_load8_le(mem, 2249bv64) == 0bv8); - free requires (memory_load8_le(mem, 2250bv64) == 0bv8); - free requires (memory_load8_le(mem, 2251bv64) == 0bv8); - free requires (memory_load8_le(mem, 2252bv64) == 0bv8); - free requires (memory_load8_le(mem, 2253bv64) == 0bv8); - free requires (memory_load8_le(mem, 2254bv64) == 0bv8); - free requires (memory_load8_le(mem, 2255bv64) == 0bv8); - free requires (memory_load8_le(mem, 2256bv64) == 84bv8); - free requires (memory_load8_le(mem, 2257bv64) == 104bv8); - free requires (memory_load8_le(mem, 2258bv64) == 101bv8); - free requires (memory_load8_le(mem, 2259bv64) == 32bv8); - free requires (memory_load8_le(mem, 2260bv64) == 105bv8); - free requires (memory_load8_le(mem, 2261bv64) == 110bv8); - free requires (memory_load8_le(mem, 2262bv64) == 116bv8); - free requires (memory_load8_le(mem, 2263bv64) == 32bv8); - free requires (memory_load8_le(mem, 2264bv64) == 105bv8); - free requires (memory_load8_le(mem, 2265bv64) == 115bv8); - free requires (memory_load8_le(mem, 2266bv64) == 58bv8); - free requires (memory_load8_le(mem, 2267bv64) == 32bv8); - free requires (memory_load8_le(mem, 2268bv64) == 37bv8); - free requires (memory_load8_le(mem, 2269bv64) == 100bv8); - free requires (memory_load8_le(mem, 2270bv64) == 10bv8); - free requires (memory_load8_le(mem, 2271bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 16bv8); - free requires (memory_load8_le(mem, 68993bv64) == 8bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 192bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 8bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2224bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2225bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2226bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2227bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2228bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2229bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2230bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2231bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2232bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2233bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2234bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2235bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2236bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2237bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2238bv64) == 97bv8); - free ensures (memory_load8_le(mem, 2239bv64) == 114bv8); - free ensures (memory_load8_le(mem, 2240bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2241bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2242bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2243bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2244bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2245bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2246bv64) == 99bv8); - free ensures (memory_load8_le(mem, 2247bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2248bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2249bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2250bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2251bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2252bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2253bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2254bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2255bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2256bv64) == 84bv8); - free ensures (memory_load8_le(mem, 2257bv64) == 104bv8); - free ensures (memory_load8_le(mem, 2258bv64) == 101bv8); - free ensures (memory_load8_le(mem, 2259bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2260bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2261bv64) == 110bv8); - free ensures (memory_load8_le(mem, 2262bv64) == 116bv8); - free ensures (memory_load8_le(mem, 2263bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2264bv64) == 105bv8); - free ensures (memory_load8_le(mem, 2265bv64) == 115bv8); - free ensures (memory_load8_le(mem, 2266bv64) == 58bv8); - free ensures (memory_load8_le(mem, 2267bv64) == 32bv8); - free ensures (memory_load8_le(mem, 2268bv64) == 37bv8); - free ensures (memory_load8_le(mem, 2269bv64) == 100bv8); - free ensures (memory_load8_le(mem, 2270bv64) == 10bv8); - free ensures (memory_load8_le(mem, 2271bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 16bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 8bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); + free requires (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free requires (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free requires (memory_load64_le(mem, 2248bv64) == 0bv64); + free requires (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free requires (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free requires (memory_load64_le(mem, 68992bv64) == 2064bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1984bv64); + free requires (memory_load64_le(mem, 69616bv64) == 2068bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 2224bv64) == 131073bv64); + free ensures (memory_load64_le(mem, 2232bv64) == 8241983568019286100bv64); + free ensures (memory_load64_le(mem, 2240bv64) == 748482783423457568bv64); + free ensures (memory_load64_le(mem, 2248bv64) == 0bv64); + free ensures (memory_load64_le(mem, 2256bv64) == 2338615504306268244bv64); + free ensures (memory_load64_le(mem, 2264bv64) == 2924860384375657bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 2064bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1984bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/nestedif/clang/nestedif.expected b/src/test/correct/nestedif/clang/nestedif.expected index cc4c39950..cf814c928 100644 --- a/src/test/correct/nestedif/clang/nestedif.expected +++ b/src/test/correct/nestedif/clang/nestedif.expected @@ -1,45 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1968bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -48,145 +79,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1968bv64) == 1bv8); free requires (memory_load8_le(mem, 1969bv64) == 0bv8); free requires (memory_load8_le(mem, 1970bv64) == 2bv8); free requires (memory_load8_le(mem, 1971bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1968bv64) == 1bv8); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -323,7 +267,7 @@ procedure main() goto l00000379; lmain_goto_l0000037c: assume {:captureState "lmain_goto_l0000037c"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000037c; l0000037f_goto_l00000387: assume {:captureState "l0000037f_goto_l00000387"} true; @@ -331,7 +275,7 @@ procedure main() goto l00000387; l0000037f_goto_l00000442: assume {:captureState "l0000037f_goto_l00000442"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000442; l00000387_goto_l000003b2: assume {:captureState "l00000387_goto_l000003b2"} true; @@ -339,7 +283,7 @@ procedure main() goto l000003b2; l00000387_goto_l000003b5: assume {:captureState "l00000387_goto_l000003b5"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000003b5; l000003b8_goto_l000003c0: assume {:captureState "l000003b8_goto_l000003c0"} true; @@ -347,7 +291,7 @@ procedure main() goto l000003c0; l000003b8_goto_l0000042d: assume {:captureState "l000003b8_goto_l0000042d"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000042d; l000003c0_goto_l000003eb: assume {:captureState "l000003c0_goto_l000003eb"} true; @@ -355,7 +299,7 @@ procedure main() goto l000003eb; l000003c0_goto_l000003ee: assume {:captureState "l000003c0_goto_l000003ee"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000003ee; l000003f1_goto_l000003f9: assume {:captureState "l000003f1_goto_l000003f9"} true; @@ -363,6 +307,8 @@ procedure main() goto l000003f9; l000003f1_goto_l00000418: assume {:captureState "l000003f1_goto_l00000418"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000418; } + + diff --git a/src/test/correct/nestedif/clang_O2/nestedif.expected b/src/test/correct/nestedif/clang_O2/nestedif.expected index b904c03a5..37b720b0f 100644 --- a/src/test/correct/nestedif/clang_O2/nestedif.expected +++ b/src/test/correct/nestedif/clang_O2/nestedif.expected @@ -1,13 +1,26 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1840bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -16,146 +29,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1841bv64) == 0bv8); free ensures (memory_load8_le(mem, 1842bv64) == 2bv8); free ensures (memory_load8_le(mem, 1843bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1840bv64) == 1bv8); free requires (memory_load8_le(mem, 1841bv64) == 0bv8); free requires (memory_load8_le(mem, 1842bv64) == 2bv8); free requires (memory_load8_le(mem, 1843bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1840bv64) == 1bv8); free ensures (memory_load8_le(mem, 1841bv64) == 0bv8); free ensures (memory_load8_le(mem, 1842bv64) == 2bv8); free ensures (memory_load8_le(mem, 1843bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected b/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected index 6e883b1f1..8229d82be 100644 --- a/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected +++ b/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected @@ -1,45 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1968bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -48,145 +79,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1968bv64) == 1bv8); free requires (memory_load8_le(mem, 1969bv64) == 0bv8); free requires (memory_load8_le(mem, 1970bv64) == 2bv8); free requires (memory_load8_le(mem, 1971bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1968bv64) == 1bv8); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -323,7 +267,7 @@ procedure main() goto l00000aaa; lmain_goto_l00000aad: assume {:captureState "lmain_goto_l00000aad"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000aad; l00000ab0_goto_l00000ab8: assume {:captureState "l00000ab0_goto_l00000ab8"} true; @@ -331,7 +275,7 @@ procedure main() goto l00000ab8; l00000ab0_goto_l00000b73: assume {:captureState "l00000ab0_goto_l00000b73"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000b73; l00000ab8_goto_l00000ae3: assume {:captureState "l00000ab8_goto_l00000ae3"} true; @@ -339,7 +283,7 @@ procedure main() goto l00000ae3; l00000ab8_goto_l00000ae6: assume {:captureState "l00000ab8_goto_l00000ae6"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000ae6; l00000ae9_goto_l00000af1: assume {:captureState "l00000ae9_goto_l00000af1"} true; @@ -347,7 +291,7 @@ procedure main() goto l00000af1; l00000ae9_goto_l00000b5e: assume {:captureState "l00000ae9_goto_l00000b5e"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000b5e; l00000af1_goto_l00000b1c: assume {:captureState "l00000af1_goto_l00000b1c"} true; @@ -355,7 +299,7 @@ procedure main() goto l00000b1c; l00000af1_goto_l00000b1f: assume {:captureState "l00000af1_goto_l00000b1f"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000b1f; l00000b22_goto_l00000b2a: assume {:captureState "l00000b22_goto_l00000b2a"} true; @@ -363,6 +307,8 @@ procedure main() goto l00000b2a; l00000b22_goto_l00000b49: assume {:captureState "l00000b22_goto_l00000b49"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000b49; } + + diff --git a/src/test/correct/nestedif/clang_pic/nestedif.expected b/src/test/correct/nestedif/clang_pic/nestedif.expected index 6e883b1f1..8229d82be 100644 --- a/src/test/correct/nestedif/clang_pic/nestedif.expected +++ b/src/test/correct/nestedif/clang_pic/nestedif.expected @@ -1,45 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1968bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -48,145 +79,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1968bv64) == 1bv8); free requires (memory_load8_le(mem, 1969bv64) == 0bv8); free requires (memory_load8_le(mem, 1970bv64) == 2bv8); free requires (memory_load8_le(mem, 1971bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1968bv64) == 1bv8); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -323,7 +267,7 @@ procedure main() goto l00000aaa; lmain_goto_l00000aad: assume {:captureState "lmain_goto_l00000aad"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000aad; l00000ab0_goto_l00000ab8: assume {:captureState "l00000ab0_goto_l00000ab8"} true; @@ -331,7 +275,7 @@ procedure main() goto l00000ab8; l00000ab0_goto_l00000b73: assume {:captureState "l00000ab0_goto_l00000b73"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000b73; l00000ab8_goto_l00000ae3: assume {:captureState "l00000ab8_goto_l00000ae3"} true; @@ -339,7 +283,7 @@ procedure main() goto l00000ae3; l00000ab8_goto_l00000ae6: assume {:captureState "l00000ab8_goto_l00000ae6"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000ae6; l00000ae9_goto_l00000af1: assume {:captureState "l00000ae9_goto_l00000af1"} true; @@ -347,7 +291,7 @@ procedure main() goto l00000af1; l00000ae9_goto_l00000b5e: assume {:captureState "l00000ae9_goto_l00000b5e"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000b5e; l00000af1_goto_l00000b1c: assume {:captureState "l00000af1_goto_l00000b1c"} true; @@ -355,7 +299,7 @@ procedure main() goto l00000b1c; l00000af1_goto_l00000b1f: assume {:captureState "l00000af1_goto_l00000b1f"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000b1f; l00000b22_goto_l00000b2a: assume {:captureState "l00000b22_goto_l00000b2a"} true; @@ -363,6 +307,8 @@ procedure main() goto l00000b2a; l00000b22_goto_l00000b49: assume {:captureState "l00000b22_goto_l00000b49"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000b49; } + + diff --git a/src/test/correct/nestedif/gcc/nestedif.expected b/src/test/correct/nestedif/gcc/nestedif.expected index 66735fb03..fc7f4a877 100644 --- a/src/test/correct/nestedif/gcc/nestedif.expected +++ b/src/test/correct/nestedif/gcc/nestedif.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1928bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1928bv64) == 1bv8); free requires (memory_load8_le(mem, 1929bv64) == 0bv8); free requires (memory_load8_le(mem, 1930bv64) == 2bv8); free requires (memory_load8_le(mem, 1931bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1928bv64) == 1bv8); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -265,7 +207,7 @@ procedure main() goto l00000345; lmain_goto_l000003c4: assume {:captureState "lmain_goto_l000003c4"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000003c4; l00000345_goto_l0000036b: assume {:captureState "l00000345_goto_l0000036b"} true; @@ -273,7 +215,7 @@ procedure main() goto l0000036b; l00000345_goto_l000003b3: assume {:captureState "l00000345_goto_l000003b3"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000003b3; l0000036b_goto_l00000391: assume {:captureState "l0000036b_goto_l00000391"} true; @@ -281,6 +223,8 @@ procedure main() goto l00000391; l0000036b_goto_l000003a6: assume {:captureState "l0000036b_goto_l000003a6"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000003a6; } + + diff --git a/src/test/correct/nestedif/gcc_O2/nestedif.expected b/src/test/correct/nestedif/gcc_O2/nestedif.expected index 306991d20..69a6690ea 100644 --- a/src/test/correct/nestedif/gcc_O2/nestedif.expected +++ b/src/test/correct/nestedif/gcc_O2/nestedif.expected @@ -1,13 +1,26 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -16,146 +29,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected b/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected index 10003d950..5812fc3ac 100644 --- a/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected +++ b/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1928bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1928bv64) == 1bv8); free requires (memory_load8_le(mem, 1929bv64) == 0bv8); free requires (memory_load8_le(mem, 1930bv64) == 2bv8); free requires (memory_load8_le(mem, 1931bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1928bv64) == 1bv8); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -265,7 +207,7 @@ procedure main() goto l000009e1; lmain_goto_l00000a60: assume {:captureState "lmain_goto_l00000a60"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000a60; l000009e1_goto_l00000a07: assume {:captureState "l000009e1_goto_l00000a07"} true; @@ -273,7 +215,7 @@ procedure main() goto l00000a07; l000009e1_goto_l00000a4f: assume {:captureState "l000009e1_goto_l00000a4f"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000a4f; l00000a07_goto_l00000a2d: assume {:captureState "l00000a07_goto_l00000a2d"} true; @@ -281,6 +223,8 @@ procedure main() goto l00000a2d; l00000a07_goto_l00000a42: assume {:captureState "l00000a07_goto_l00000a42"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000a42; } + + diff --git a/src/test/correct/nestedif/gcc_pic/nestedif.expected b/src/test/correct/nestedif/gcc_pic/nestedif.expected index 10003d950..5812fc3ac 100644 --- a/src/test/correct/nestedif/gcc_pic/nestedif.expected +++ b/src/test/correct/nestedif/gcc_pic/nestedif.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1928bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1928bv64) == 1bv8); free requires (memory_load8_le(mem, 1929bv64) == 0bv8); free requires (memory_load8_le(mem, 1930bv64) == 2bv8); free requires (memory_load8_le(mem, 1931bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1928bv64) == 1bv8); free ensures (memory_load8_le(mem, 1929bv64) == 0bv8); free ensures (memory_load8_le(mem, 1930bv64) == 2bv8); free ensures (memory_load8_le(mem, 1931bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -265,7 +207,7 @@ procedure main() goto l000009e1; lmain_goto_l00000a60: assume {:captureState "lmain_goto_l00000a60"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000a60; l000009e1_goto_l00000a07: assume {:captureState "l000009e1_goto_l00000a07"} true; @@ -273,7 +215,7 @@ procedure main() goto l00000a07; l000009e1_goto_l00000a4f: assume {:captureState "l000009e1_goto_l00000a4f"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000a4f; l00000a07_goto_l00000a2d: assume {:captureState "l00000a07_goto_l00000a2d"} true; @@ -281,6 +223,8 @@ procedure main() goto l00000a2d; l00000a07_goto_l00000a42: assume {:captureState "l00000a07_goto_l00000a42"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000a42; } + + diff --git a/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected index 7a6a27fd0..855a50922 100644 --- a/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected @@ -1,36 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,149 +60,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (memory_load32_le(mem, $x_addr) == 1bv32); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var y_old: bv32; lmain: @@ -197,3 +133,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected index 740a585c8..481fa6140 100644 --- a/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected @@ -1,36 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,149 +60,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (memory_load32_le(mem, $x_addr) == 1bv32); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var y_old: bv32; lmain: @@ -197,3 +133,5 @@ procedure main() assume {:captureState "%000002d3"} true; return; } + + diff --git a/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected index 293d1dbc9..0721b9b19 100644 --- a/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected @@ -1,36 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,149 +60,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (memory_load32_le(mem, $x_addr) == 1bv32); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var y_old: bv32; lmain: @@ -197,3 +133,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected index a5a054cf9..f440ff664 100644 --- a/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected @@ -1,44 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -47,173 +65,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 52bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 80bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 0bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); ensures (memory_load32_le(mem, $x_addr) == 1bv32); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + +implementation main() { var y_old: bv32; lmain: @@ -231,3 +143,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected index 48ecd68b7..7c780737c 100644 --- a/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected @@ -1,34 +1,53 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,149 +56,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (memory_load32_le(mem, $x_addr) == 1bv32); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var y_old: bv32; lmain: @@ -196,3 +130,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected index ef1344e1e..bdd5d1900 100644 --- a/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected @@ -1,36 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,149 +60,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (memory_load32_le(mem, $x_addr) == 1bv32); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var y_old: bv32; lmain: @@ -197,3 +133,5 @@ procedure main() assume {:captureState "%000001bd"} true; return; } + + diff --git a/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected index 09a38ab49..58e374101 100644 --- a/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected @@ -1,34 +1,53 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,149 +56,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (memory_load32_le(mem, $x_addr) == 1bv32); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var y_old: bv32; lmain: @@ -196,3 +130,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected index b07082212..a9a4eece4 100644 --- a/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected @@ -1,42 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -45,173 +61,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); ensures (memory_load32_le(mem, $x_addr) == 1bv32); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { var y_old: bv32; lmain: @@ -229,3 +139,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected index 2bb856649..fbb66cfdf 100644 --- a/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected @@ -1,36 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,149 +60,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (memory_load32_le(mem, $y_addr) == 1bv32); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -197,3 +133,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected index 81e2f7c66..ca0b790b2 100644 --- a/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected @@ -1,36 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,149 +60,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (memory_load32_le(mem, $y_addr) == 1bv32); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -197,3 +133,5 @@ procedure main() assume {:captureState "%000002d3"} true; return; } + + diff --git a/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected index ac0a8d545..5f18311ad 100644 --- a/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected @@ -1,36 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,149 +60,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); ensures (memory_load32_le(mem, $y_addr) == 1bv32); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var x_old: bv32; lmain: @@ -197,3 +133,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected index 963551bd0..5dbbbcf36 100644 --- a/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected @@ -1,44 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -47,173 +65,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 52bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 80bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 0bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); ensures (memory_load32_le(mem, $y_addr) == 1bv32); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + +implementation main() { var x_old: bv32; lmain: @@ -231,3 +143,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected index 20a7bf882..ea54b06d5 100644 --- a/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected @@ -1,34 +1,53 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,149 +56,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (memory_load32_le(mem, $y_addr) == 1bv32); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -196,3 +130,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected index 01c79156a..07e6010b9 100644 --- a/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected @@ -1,36 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -39,149 +60,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (memory_load32_le(mem, $y_addr) == 1bv32); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -197,3 +133,5 @@ procedure main() assume {:captureState "%000001bd"} true; return; } + + diff --git a/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected index 658b4eb22..53531d162 100644 --- a/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected @@ -1,34 +1,53 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -37,149 +56,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); ensures (memory_load32_le(mem, $y_addr) == 1bv32); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var x_old: bv32; lmain: @@ -196,3 +130,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected index 0cd4b1423..6cded0856 100644 --- a/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected @@ -1,42 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -45,173 +61,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); ensures (memory_load32_le(mem, $y_addr) == 1bv32); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { var x_old: bv32; lmain: @@ -229,3 +139,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/secret_write/clang/secret_write.expected b/src/test/correct/secret_write/clang/secret_write.expected index 731e47319..20b761539 100644 --- a/src/test/correct/secret_write/clang/secret_write.expected +++ b/src/test/correct/secret_write/clang/secret_write.expected @@ -1,48 +1,77 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,154 +81,69 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $z_addr) == true); requires (gamma_load32(Gamma_mem, $secret_addr) == false); requires (memory_load32_le(mem, $z_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -259,3 +203,5 @@ procedure main() assume {:captureState "%0000033f"} true; return; } + + diff --git a/src/test/correct/secret_write/clang_O2/secret_write.expected b/src/test/correct/secret_write/clang_O2/secret_write.expected index 0adc7d048..78e1e2e73 100644 --- a/src/test/correct/secret_write/clang_O2/secret_write.expected +++ b/src/test/correct/secret_write/clang_O2/secret_write.expected @@ -1,46 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -50,154 +77,69 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $z_addr) == true); requires (gamma_load32(Gamma_mem, $secret_addr) == false); requires (memory_load32_le(mem, $z_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1860bv64) == 1bv8); free requires (memory_load8_le(mem, 1861bv64) == 0bv8); free requires (memory_load8_le(mem, 1862bv64) == 2bv8); free requires (memory_load8_le(mem, 1863bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1860bv64) == 1bv8); free ensures (memory_load8_le(mem, 1861bv64) == 0bv8); free ensures (memory_load8_le(mem, 1862bv64) == 2bv8); free ensures (memory_load8_le(mem, 1863bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -225,3 +167,5 @@ procedure main() assume {:captureState "%000002e7"} true; return; } + + diff --git a/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected b/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected index 2e4c0f4d2..09e7fa742 100644 --- a/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected +++ b/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected @@ -1,48 +1,77 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,154 +81,69 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $z_addr) == true); requires (gamma_load32(Gamma_mem, $secret_addr) == false); requires (memory_load32_le(mem, $z_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -259,3 +203,5 @@ procedure main() assume {:captureState "%00000936"} true; return; } + + diff --git a/src/test/correct/secret_write/clang_pic/secret_write.expected b/src/test/correct/secret_write/clang_pic/secret_write.expected index 53c9b519b..cc11c9742 100644 --- a/src/test/correct/secret_write/clang_pic/secret_write.expected +++ b/src/test/correct/secret_write/clang_pic/secret_write.expected @@ -1,56 +1,82 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -60,226 +86,78 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69040bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69041bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69042bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69043bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69044bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69045bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69046bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69047bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 60bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69560bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69561bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69562bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69563bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69564bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69565bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69566bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69567bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69040bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69692bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69560bv64) == 69684bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $z_addr) == true); requires (gamma_load32(Gamma_mem, $secret_addr) == false); requires (memory_load32_le(mem, $z_addr) == 0bv32); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1968bv64) == 1bv8); free requires (memory_load8_le(mem, 1969bv64) == 0bv8); free requires (memory_load8_le(mem, 1970bv64) == 2bv8); free requires (memory_load8_le(mem, 1971bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 56bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 0bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69040bv64) == 80bv8); - free requires (memory_load8_le(mem, 69041bv64) == 7bv8); - free requires (memory_load8_le(mem, 69042bv64) == 0bv8); - free requires (memory_load8_le(mem, 69043bv64) == 0bv8); - free requires (memory_load8_le(mem, 69044bv64) == 0bv8); - free requires (memory_load8_le(mem, 69045bv64) == 0bv8); - free requires (memory_load8_le(mem, 69046bv64) == 0bv8); - free requires (memory_load8_le(mem, 69047bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 60bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69560bv64) == 52bv8); - free requires (memory_load8_le(mem, 69561bv64) == 16bv8); - free requires (memory_load8_le(mem, 69562bv64) == 1bv8); - free requires (memory_load8_le(mem, 69563bv64) == 0bv8); - free requires (memory_load8_le(mem, 69564bv64) == 0bv8); - free requires (memory_load8_le(mem, 69565bv64) == 0bv8); - free requires (memory_load8_le(mem, 69566bv64) == 0bv8); - free requires (memory_load8_le(mem, 69567bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69040bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69692bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69560bv64) == 69684bv64); free ensures (memory_load8_le(mem, 1968bv64) == 1bv8); free ensures (memory_load8_le(mem, 1969bv64) == 0bv8); free ensures (memory_load8_le(mem, 1970bv64) == 2bv8); free ensures (memory_load8_le(mem, 1971bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69040bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69041bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69042bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69043bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69044bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69045bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69046bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69047bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 60bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69560bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69561bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69562bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69563bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69564bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69565bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69566bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69567bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69040bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69692bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69560bv64) == 69684bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -345,3 +223,5 @@ procedure main() assume {:captureState "%00000360"} true; return; } + + diff --git a/src/test/correct/secret_write/gcc/secret_write.expected b/src/test/correct/secret_write/gcc/secret_write.expected index fbb8b7faf..2e26dcd88 100644 --- a/src/test/correct/secret_write/gcc/secret_write.expected +++ b/src/test/correct/secret_write/gcc/secret_write.expected @@ -1,44 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -48,154 +73,69 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $z_addr) == true); requires (gamma_load32(Gamma_mem, $secret_addr) == false); requires (memory_load32_le(mem, $z_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1944bv64) == 1bv8); free requires (memory_load8_le(mem, 1945bv64) == 0bv8); free requires (memory_load8_le(mem, 1946bv64) == 2bv8); free requires (memory_load8_le(mem, 1947bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1944bv64) == 1bv8); free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -268,3 +208,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/secret_write/gcc_O2/secret_write.expected b/src/test/correct/secret_write/gcc_O2/secret_write.expected index 393a51bf6..9253c1f5c 100644 --- a/src/test/correct/secret_write/gcc_O2/secret_write.expected +++ b/src/test/correct/secret_write/gcc_O2/secret_write.expected @@ -1,46 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_R3: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} R3: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -50,154 +77,69 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $z_addr) == true); requires (gamma_load32(Gamma_mem, $secret_addr) == false); requires (memory_load32_le(mem, $z_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -225,3 +167,5 @@ procedure main() assume {:captureState "%000001ca"} true; return; } + + diff --git a/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected b/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected index 9d6a27f3f..c60a4ad31 100644 --- a/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected +++ b/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected @@ -1,44 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -48,154 +73,69 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $z_addr) == true); requires (gamma_load32(Gamma_mem, $secret_addr) == false); requires (memory_load32_le(mem, $z_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1944bv64) == 1bv8); free requires (memory_load8_le(mem, 1945bv64) == 0bv8); free requires (memory_load8_le(mem, 1946bv64) == 2bv8); free requires (memory_load8_le(mem, 1947bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1944bv64) == 1bv8); free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -268,3 +208,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/secret_write/gcc_pic/secret_write.expected b/src/test/correct/secret_write/gcc_pic/secret_write.expected index 2275cb362..2f32e3a43 100644 --- a/src/test/correct/secret_write/gcc_pic/secret_write.expected +++ b/src/test/correct/secret_write/gcc_pic/secret_write.expected @@ -1,52 +1,74 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); + function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -56,226 +78,78 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2009bv64) == 0bv8); free ensures (memory_load8_le(mem, 2010bv64) == 2bv8); free ensures (memory_load8_le(mem, 2011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 80bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69660bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); requires (gamma_load32(Gamma_mem, $z_addr) == true); requires (gamma_load32(Gamma_mem, $secret_addr) == false); requires (memory_load32_le(mem, $z_addr) == 0bv32); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2008bv64) == 1bv8); free requires (memory_load8_le(mem, 2009bv64) == 0bv8); free requires (memory_load8_le(mem, 2010bv64) == 2bv8); free requires (memory_load8_le(mem, 2011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 28bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 20bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 24bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 0bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 80bv8); - free requires (memory_load8_le(mem, 68993bv64) == 7bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69660bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1792bv64); + free requires (memory_load64_le(mem, 68992bv64) == 1872bv64); free ensures (memory_load8_le(mem, 2008bv64) == 1bv8); free ensures (memory_load8_le(mem, 2009bv64) == 0bv8); free ensures (memory_load8_le(mem, 2010bv64) == 2bv8); free ensures (memory_load8_le(mem, 2011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 80bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69660bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 1872bv64); + +implementation main() { var Gamma_x_old: bool; var z_old: bv32; @@ -356,3 +230,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/simple_jump/clang/simple_jump.expected b/src/test/correct/simple_jump/clang/simple_jump.expected index 8ae879c7e..54a8897b1 100644 --- a/src/test/correct/simple_jump/clang/simple_jump.expected +++ b/src/test/correct/simple_jump/clang/simple_jump.expected @@ -1,45 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1892bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -48,145 +79,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -247,7 +191,7 @@ procedure main() goto l00000326; lmain_goto_l00000329: assume {:captureState "lmain_goto_l00000329"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000329; l0000032c_goto_l00000334: assume {:captureState "l0000032c_goto_l00000334"} true; @@ -255,6 +199,8 @@ procedure main() goto l00000334; l0000032c_goto_l0000034b: assume {:captureState "l0000032c_goto_l0000034b"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000034b; } + + diff --git a/src/test/correct/simple_jump/clang_O2/simple_jump.expected b/src/test/correct/simple_jump/clang_O2/simple_jump.expected index b904c03a5..37b720b0f 100644 --- a/src/test/correct/simple_jump/clang_O2/simple_jump.expected +++ b/src/test/correct/simple_jump/clang_O2/simple_jump.expected @@ -1,13 +1,26 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1840bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -16,146 +29,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1841bv64) == 0bv8); free ensures (memory_load8_le(mem, 1842bv64) == 2bv8); free ensures (memory_load8_le(mem, 1843bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1840bv64) == 1bv8); free requires (memory_load8_le(mem, 1841bv64) == 0bv8); free requires (memory_load8_le(mem, 1842bv64) == 2bv8); free requires (memory_load8_le(mem, 1843bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1840bv64) == 1bv8); free ensures (memory_load8_le(mem, 1841bv64) == 0bv8); free ensures (memory_load8_le(mem, 1842bv64) == 2bv8); free ensures (memory_load8_le(mem, 1843bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected b/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected index 7d5b217e6..0cc0f3e97 100644 --- a/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected @@ -1,45 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1892bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -48,145 +79,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -247,7 +191,7 @@ procedure main() goto l00000938; lmain_goto_l0000093b: assume {:captureState "lmain_goto_l0000093b"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000093b; l0000093e_goto_l00000946: assume {:captureState "l0000093e_goto_l00000946"} true; @@ -255,6 +199,8 @@ procedure main() goto l00000946; l0000093e_goto_l0000095d: assume {:captureState "l0000093e_goto_l0000095d"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000095d; } + + diff --git a/src/test/correct/simple_jump/clang_pic/simple_jump.expected b/src/test/correct/simple_jump/clang_pic/simple_jump.expected index 7d5b217e6..0cc0f3e97 100644 --- a/src/test/correct/simple_jump/clang_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/clang_pic/simple_jump.expected @@ -1,45 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1892bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -48,145 +79,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -247,7 +191,7 @@ procedure main() goto l00000938; lmain_goto_l0000093b: assume {:captureState "lmain_goto_l0000093b"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000093b; l0000093e_goto_l00000946: assume {:captureState "l0000093e_goto_l00000946"} true; @@ -255,6 +199,8 @@ procedure main() goto l00000946; l0000093e_goto_l0000095d: assume {:captureState "l0000093e_goto_l0000095d"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000095d; } + + diff --git a/src/test/correct/simple_jump/gcc/simple_jump.expected b/src/test/correct/simple_jump/gcc/simple_jump.expected index 90f4f92e4..9b6e9d550 100644 --- a/src/test/correct/simple_jump/gcc/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc/simple_jump.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1876bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1877bv64) == 0bv8); free ensures (memory_load8_le(mem, 1878bv64) == 2bv8); free ensures (memory_load8_le(mem, 1879bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1876bv64) == 1bv8); free requires (memory_load8_le(mem, 1877bv64) == 0bv8); free requires (memory_load8_le(mem, 1878bv64) == 2bv8); free requires (memory_load8_le(mem, 1879bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1876bv64) == 1bv8); free ensures (memory_load8_le(mem, 1877bv64) == 0bv8); free ensures (memory_load8_le(mem, 1878bv64) == 2bv8); free ensures (memory_load8_le(mem, 1879bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -227,6 +169,8 @@ procedure main() goto l0000030a; lmain_goto_l0000031f: assume {:captureState "lmain_goto_l0000031f"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000031f; } + + diff --git a/src/test/correct/simple_jump/gcc_O2/simple_jump.expected b/src/test/correct/simple_jump/gcc_O2/simple_jump.expected index 306991d20..69a6690ea 100644 --- a/src/test/correct/simple_jump/gcc_O2/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc_O2/simple_jump.expected @@ -1,13 +1,26 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -16,146 +29,61 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, R0; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected b/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected index fca2ea8b1..b340c6bdc 100644 --- a/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1876bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1877bv64) == 0bv8); free ensures (memory_load8_le(mem, 1878bv64) == 2bv8); free ensures (memory_load8_le(mem, 1879bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1876bv64) == 1bv8); free requires (memory_load8_le(mem, 1877bv64) == 0bv8); free requires (memory_load8_le(mem, 1878bv64) == 2bv8); free requires (memory_load8_le(mem, 1879bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1876bv64) == 1bv8); free ensures (memory_load8_le(mem, 1877bv64) == 0bv8); free ensures (memory_load8_le(mem, 1878bv64) == 2bv8); free ensures (memory_load8_le(mem, 1879bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -227,6 +169,8 @@ procedure main() goto l000008e1; lmain_goto_l000008f6: assume {:captureState "lmain_goto_l000008f6"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000008f6; } + + diff --git a/src/test/correct/simple_jump/gcc_pic/simple_jump.expected b/src/test/correct/simple_jump/gcc_pic/simple_jump.expected index fca2ea8b1..b340c6bdc 100644 --- a/src/test/correct/simple_jump/gcc_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc_pic/simple_jump.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1876bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1877bv64) == 0bv8); free ensures (memory_load8_le(mem, 1878bv64) == 2bv8); free ensures (memory_load8_le(mem, 1879bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1876bv64) == 1bv8); free requires (memory_load8_le(mem, 1877bv64) == 0bv8); free requires (memory_load8_le(mem, 1878bv64) == 2bv8); free requires (memory_load8_le(mem, 1879bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1876bv64) == 1bv8); free ensures (memory_load8_le(mem, 1877bv64) == 0bv8); free ensures (memory_load8_le(mem, 1878bv64) == 2bv8); free ensures (memory_load8_le(mem, 1879bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -227,6 +169,8 @@ procedure main() goto l000008e1; lmain_goto_l000008f6: assume {:captureState "lmain_goto_l000008f6"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000008f6; } + + diff --git a/src/test/correct/switch/clang/switch.expected b/src/test/correct/switch/clang/switch.expected index b33b54140..8d555cf74 100644 --- a/src/test/correct/switch/clang/switch.expected +++ b/src/test/correct/switch/clang/switch.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1936bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1937bv64) == 0bv8); free ensures (memory_load8_le(mem, 1938bv64) == 2bv8); free ensures (memory_load8_le(mem, 1939bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R31, Gamma_R8, Gamma_stack, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1936bv64) == 1bv8); free requires (memory_load8_le(mem, 1937bv64) == 0bv8); free requires (memory_load8_le(mem, 1938bv64) == 2bv8); free requires (memory_load8_le(mem, 1939bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1936bv64) == 1bv8); free ensures (memory_load8_le(mem, 1937bv64) == 0bv8); free ensures (memory_load8_le(mem, 1938bv64) == 2bv8); free ensures (memory_load8_le(mem, 1939bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -286,7 +228,7 @@ procedure main() goto l0000035a; lmain_goto_l0000035d: assume {:captureState "lmain_goto_l0000035d"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000035d; l00000360_goto_l00000368: assume {:captureState "l00000360_goto_l00000368"} true; @@ -294,7 +236,7 @@ procedure main() goto l00000368; l00000360_goto_l0000039a: assume {:captureState "l00000360_goto_l0000039a"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000039a; l0000039b_goto_l000003c4: assume {:captureState "l0000039b_goto_l000003c4"} true; @@ -302,7 +244,7 @@ procedure main() goto l000003c4; l0000039b_goto_l000003c7: assume {:captureState "l0000039b_goto_l000003c7"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000003c7; l000003ca_goto_l00000389: assume {:captureState "l000003ca_goto_l00000389"} true; @@ -310,6 +252,8 @@ procedure main() goto l00000389; l000003ca_goto_l000003d7: assume {:captureState "l000003ca_goto_l000003d7"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l000003d7; } + + diff --git a/src/test/correct/switch/clang_O2/switch.expected b/src/test/correct/switch/clang_O2/switch.expected index ae43ad872..950c0b6b7 100644 --- a/src/test/correct/switch/clang_O2/switch.expected +++ b/src/test/correct/switch/clang_O2/switch.expected @@ -1,11 +1,22 @@ var {:extern} Gamma_mem: [bv64]bool; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1836bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -14,144 +25,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1837bv64) == 0bv8); free ensures (memory_load8_le(mem, 1838bv64) == 2bv8); free ensures (memory_load8_le(mem, 1839bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + + +procedure main(); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1836bv64) == 1bv8); free requires (memory_load8_le(mem, 1837bv64) == 0bv8); free requires (memory_load8_le(mem, 1838bv64) == 2bv8); free requires (memory_load8_le(mem, 1839bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1836bv64) == 1bv8); free ensures (memory_load8_le(mem, 1837bv64) == 0bv8); free ensures (memory_load8_le(mem, 1838bv64) == 2bv8); free ensures (memory_load8_le(mem, 1839bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; return; } + + diff --git a/src/test/correct/switch/clang_no_plt_no_pic/switch.expected b/src/test/correct/switch/clang_no_plt_no_pic/switch.expected index 198585344..16869f2b4 100644 --- a/src/test/correct/switch/clang_no_plt_no_pic/switch.expected +++ b/src/test/correct/switch/clang_no_plt_no_pic/switch.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1936bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1937bv64) == 0bv8); free ensures (memory_load8_le(mem, 1938bv64) == 2bv8); free ensures (memory_load8_le(mem, 1939bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R31, Gamma_R8, Gamma_stack, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1936bv64) == 1bv8); free requires (memory_load8_le(mem, 1937bv64) == 0bv8); free requires (memory_load8_le(mem, 1938bv64) == 2bv8); free requires (memory_load8_le(mem, 1939bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1936bv64) == 1bv8); free ensures (memory_load8_le(mem, 1937bv64) == 0bv8); free ensures (memory_load8_le(mem, 1938bv64) == 2bv8); free ensures (memory_load8_le(mem, 1939bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -286,7 +228,7 @@ procedure main() goto l00000a0f; lmain_goto_l00000a12: assume {:captureState "lmain_goto_l00000a12"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000a12; l00000a15_goto_l00000a1d: assume {:captureState "l00000a15_goto_l00000a1d"} true; @@ -294,7 +236,7 @@ procedure main() goto l00000a1d; l00000a15_goto_l00000a4f: assume {:captureState "l00000a15_goto_l00000a4f"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000a4f; l00000a50_goto_l00000a79: assume {:captureState "l00000a50_goto_l00000a79"} true; @@ -302,7 +244,7 @@ procedure main() goto l00000a79; l00000a50_goto_l00000a7c: assume {:captureState "l00000a50_goto_l00000a7c"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000a7c; l00000a7f_goto_l00000a3e: assume {:captureState "l00000a7f_goto_l00000a3e"} true; @@ -310,6 +252,8 @@ procedure main() goto l00000a3e; l00000a7f_goto_l00000a8c: assume {:captureState "l00000a7f_goto_l00000a8c"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000a8c; } + + diff --git a/src/test/correct/switch/clang_pic/switch.expected b/src/test/correct/switch/clang_pic/switch.expected index 198585344..16869f2b4 100644 --- a/src/test/correct/switch/clang_pic/switch.expected +++ b/src/test/correct/switch/clang_pic/switch.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1936bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1937bv64) == 0bv8); free ensures (memory_load8_le(mem, 1938bv64) == 2bv8); free ensures (memory_load8_le(mem, 1939bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R31, Gamma_R8, Gamma_stack, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1936bv64) == 1bv8); free requires (memory_load8_le(mem, 1937bv64) == 0bv8); free requires (memory_load8_le(mem, 1938bv64) == 2bv8); free requires (memory_load8_le(mem, 1939bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1936bv64) == 1bv8); free ensures (memory_load8_le(mem, 1937bv64) == 0bv8); free ensures (memory_load8_le(mem, 1938bv64) == 2bv8); free ensures (memory_load8_le(mem, 1939bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -286,7 +228,7 @@ procedure main() goto l00000a0f; lmain_goto_l00000a12: assume {:captureState "lmain_goto_l00000a12"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000a12; l00000a15_goto_l00000a1d: assume {:captureState "l00000a15_goto_l00000a1d"} true; @@ -294,7 +236,7 @@ procedure main() goto l00000a1d; l00000a15_goto_l00000a4f: assume {:captureState "l00000a15_goto_l00000a4f"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000a4f; l00000a50_goto_l00000a79: assume {:captureState "l00000a50_goto_l00000a79"} true; @@ -302,7 +244,7 @@ procedure main() goto l00000a79; l00000a50_goto_l00000a7c: assume {:captureState "l00000a50_goto_l00000a7c"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000a7c; l00000a7f_goto_l00000a3e: assume {:captureState "l00000a7f_goto_l00000a3e"} true; @@ -310,6 +252,8 @@ procedure main() goto l00000a3e; l00000a7f_goto_l00000a8c: assume {:captureState "l00000a7f_goto_l00000a8c"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000a8c; } + + diff --git a/src/test/correct/switch/gcc/switch.expected b/src/test/correct/switch/gcc/switch.expected index 355bb8743..5c92a9293 100644 --- a/src/test/correct/switch/gcc/switch.expected +++ b/src/test/correct/switch/gcc/switch.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1916bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -252,7 +194,7 @@ procedure main() goto l00000339; lmain_goto_l0000036b: assume {:captureState "lmain_goto_l0000036b"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000036b; l0000036b_goto_l0000035c: assume {:captureState "l0000036b_goto_l0000035c"} true; @@ -260,6 +202,8 @@ procedure main() goto l0000035c; l0000036b_goto_l00000391: assume {:captureState "l0000036b_goto_l00000391"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000391; } + + diff --git a/src/test/correct/switch/gcc_O2/switch.expected b/src/test/correct/switch/gcc_O2/switch.expected index f96261171..4e913a701 100644 --- a/src/test/correct/switch/gcc_O2/switch.expected +++ b/src/test/correct/switch/gcc_O2/switch.expected @@ -1,11 +1,22 @@ var {:extern} Gamma_mem: [bv64]bool; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -14,144 +25,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + + +procedure main(); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; return; } + + diff --git a/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected b/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected index 6e21b2c50..2f1d23918 100644 --- a/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected +++ b/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1916bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -252,7 +194,7 @@ procedure main() goto l00000998; lmain_goto_l000009ca: assume {:captureState "lmain_goto_l000009ca"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000009ca; l000009ca_goto_l000009bb: assume {:captureState "l000009ca_goto_l000009bb"} true; @@ -260,6 +202,8 @@ procedure main() goto l000009bb; l000009ca_goto_l000009f0: assume {:captureState "l000009ca_goto_l000009f0"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000009f0; } + + diff --git a/src/test/correct/switch/gcc_pic/switch.expected b/src/test/correct/switch/gcc_pic/switch.expected index 6e21b2c50..2f1d23918 100644 --- a/src/test/correct/switch/gcc_pic/switch.expected +++ b/src/test/correct/switch/gcc_pic/switch.expected @@ -1,43 +1,72 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1916bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +75,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -252,7 +194,7 @@ procedure main() goto l00000998; lmain_goto_l000009ca: assume {:captureState "lmain_goto_l000009ca"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000009ca; l000009ca_goto_l000009bb: assume {:captureState "l000009ca_goto_l000009bb"} true; @@ -260,6 +202,8 @@ procedure main() goto l000009bb; l000009ca_goto_l000009f0: assume {:captureState "l000009ca_goto_l000009f0"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000009f0; } + + diff --git a/src/test/correct/switch2/clang_O2/switch2.expected b/src/test/correct/switch2/clang_O2/switch2.expected index 9083f1e41..814de1d48 100644 --- a/src/test/correct/switch2/clang_O2/switch2.expected +++ b/src/test/correct/switch2/clang_O2/switch2.expected @@ -1,10 +1,21 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} mem: [bv64]bv8; + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -13,145 +24,60 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1845bv64) == 0bv8); free ensures (memory_load8_le(mem, 1846bv64) == 2bv8); free ensures (memory_load8_le(mem, 1847bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1844bv64) == 1bv8); free requires (memory_load8_le(mem, 1845bv64) == 0bv8); free requires (memory_load8_le(mem, 1846bv64) == 2bv8); free requires (memory_load8_le(mem, 1847bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 28bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1844bv64) == 1bv8); free ensures (memory_load8_le(mem, 1845bv64) == 0bv8); free ensures (memory_load8_le(mem, 1846bv64) == 2bv8); free ensures (memory_load8_le(mem, 1847bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; return; } + + diff --git a/src/test/correct/switch2/gcc/switch2.expected b/src/test/correct/switch2/gcc/switch2.expected index 317bf93c9..f9c319e2d 100644 --- a/src/test/correct/switch2/gcc/switch2.expected +++ b/src/test/correct/switch2/gcc/switch2.expected @@ -1,64 +1,98 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -67,108 +101,47 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2033bv64) == 0bv8); free ensures (memory_load8_le(mem, 2034bv64) == 2bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2032bv64) == 1bv8); free requires (memory_load8_le(mem, 2033bv64) == 0bv8); free requires (memory_load8_le(mem, 2034bv64) == 2bv8); free requires (memory_load8_le(mem, 2035bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 28bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -177,38 +150,12 @@ procedure main() free ensures (memory_load8_le(mem, 2033bv64) == 0bv8); free ensures (memory_load8_le(mem, 2034bv64) == 2bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #10: bv32; var #11: bv32; @@ -384,7 +331,7 @@ procedure main() goto l000003d0; lmain_goto_l00000408: assume {:captureState "lmain_goto_l00000408"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000408; l00000408_goto_l000003e2: assume {:captureState "l00000408_goto_l000003e2"} true; @@ -392,7 +339,7 @@ procedure main() goto l000003e2; l00000408_goto_l00000430: assume {:captureState "l00000408_goto_l00000430"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000430; l00000430_goto_l00000451: assume {:captureState "l00000430_goto_l00000451"} true; @@ -400,7 +347,7 @@ procedure main() goto l00000451; l00000430_goto_l00000467: assume {:captureState "l00000430_goto_l00000467"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000467; l00000467_goto_l000003e2: assume {:captureState "l00000467_goto_l000003e2"} true; @@ -408,7 +355,7 @@ procedure main() goto l000003e2; l00000467_goto_l0000048f: assume {:captureState "l00000467_goto_l0000048f"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l0000048f; l0000048f_goto_l000004b0: assume {:captureState "l0000048f_goto_l000004b0"} true; @@ -416,7 +363,7 @@ procedure main() goto l000004b0; l0000048f_goto_l000004e2: assume {:captureState "l0000048f_goto_l000004e2"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000004e2; l000004e2_goto_l000003e2: assume {:captureState "l000004e2_goto_l000003e2"} true; @@ -424,7 +371,7 @@ procedure main() goto l000003e2; l000004e2_goto_l0000050a: assume {:captureState "l000004e2_goto_l0000050a"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l0000050a; l0000050a_goto_l000004c4: assume {:captureState "l0000050a_goto_l000004c4"} true; @@ -432,7 +379,7 @@ procedure main() goto l000004c4; l0000050a_goto_l00000530: assume {:captureState "l0000050a_goto_l00000530"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000530; l00000530_goto_l000004d5: assume {:captureState "l00000530_goto_l000004d5"} true; @@ -440,87 +387,36 @@ procedure main() goto l000004d5; l00000530_goto_l00000556: assume {:captureState "l00000530_goto_l00000556"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000556; } -procedure r() + +procedure r(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 2032bv64) == 1bv8); free requires (memory_load8_le(mem, 2033bv64) == 0bv8); free requires (memory_load8_le(mem, 2034bv64) == 2bv8); free requires (memory_load8_le(mem, 2035bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 28bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2032bv64) == 1bv8); free ensures (memory_load8_le(mem, 2033bv64) == 0bv8); free ensures (memory_load8_le(mem, 2034bv64) == 2bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation r() { lr: assume {:captureState "lr"} true; R0, Gamma_R0 := 1bv64, true; return; } + + diff --git a/src/test/correct/switch2/gcc_O2/switch2.expected b/src/test/correct/switch2/gcc_O2/switch2.expected index 8dd64e5d7..8b1ebc1f2 100644 --- a/src/test/correct/switch2/gcc_O2/switch2.expected +++ b/src/test/correct/switch2/gcc_O2/switch2.expected @@ -1,10 +1,21 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} mem: [bv64]bv8; + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -13,145 +24,60 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; return; } + + diff --git a/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected b/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected index 6f0e32d47..463dce49e 100644 --- a/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected +++ b/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected @@ -1,64 +1,98 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -67,108 +101,47 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2033bv64) == 0bv8); free ensures (memory_load8_le(mem, 2034bv64) == 2bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2032bv64) == 1bv8); free requires (memory_load8_le(mem, 2033bv64) == 0bv8); free requires (memory_load8_le(mem, 2034bv64) == 2bv8); free requires (memory_load8_le(mem, 2035bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 28bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -177,38 +150,12 @@ procedure main() free ensures (memory_load8_le(mem, 2033bv64) == 0bv8); free ensures (memory_load8_le(mem, 2034bv64) == 2bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #10: bv32; var #11: bv32; @@ -384,7 +331,7 @@ procedure main() goto l00000c2f; lmain_goto_l00000c67: assume {:captureState "lmain_goto_l00000c67"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000c67; l00000c67_goto_l00000c41: assume {:captureState "l00000c67_goto_l00000c41"} true; @@ -392,7 +339,7 @@ procedure main() goto l00000c41; l00000c67_goto_l00000c8f: assume {:captureState "l00000c67_goto_l00000c8f"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000c8f; l00000c8f_goto_l00000cb0: assume {:captureState "l00000c8f_goto_l00000cb0"} true; @@ -400,7 +347,7 @@ procedure main() goto l00000cb0; l00000c8f_goto_l00000cc6: assume {:captureState "l00000c8f_goto_l00000cc6"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000cc6; l00000cc6_goto_l00000c41: assume {:captureState "l00000cc6_goto_l00000c41"} true; @@ -408,7 +355,7 @@ procedure main() goto l00000c41; l00000cc6_goto_l00000cee: assume {:captureState "l00000cc6_goto_l00000cee"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000cee; l00000cee_goto_l00000d0f: assume {:captureState "l00000cee_goto_l00000d0f"} true; @@ -416,7 +363,7 @@ procedure main() goto l00000d0f; l00000cee_goto_l00000d41: assume {:captureState "l00000cee_goto_l00000d41"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000d41; l00000d41_goto_l00000c41: assume {:captureState "l00000d41_goto_l00000c41"} true; @@ -424,7 +371,7 @@ procedure main() goto l00000c41; l00000d41_goto_l00000d69: assume {:captureState "l00000d41_goto_l00000d69"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000d69; l00000d69_goto_l00000d23: assume {:captureState "l00000d69_goto_l00000d23"} true; @@ -432,7 +379,7 @@ procedure main() goto l00000d23; l00000d69_goto_l00000d8f: assume {:captureState "l00000d69_goto_l00000d8f"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000d8f; l00000d8f_goto_l00000d34: assume {:captureState "l00000d8f_goto_l00000d34"} true; @@ -440,87 +387,36 @@ procedure main() goto l00000d34; l00000d8f_goto_l00000db5: assume {:captureState "l00000d8f_goto_l00000db5"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000db5; } -procedure r() + +procedure r(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 2032bv64) == 1bv8); free requires (memory_load8_le(mem, 2033bv64) == 0bv8); free requires (memory_load8_le(mem, 2034bv64) == 2bv8); free requires (memory_load8_le(mem, 2035bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 28bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2032bv64) == 1bv8); free ensures (memory_load8_le(mem, 2033bv64) == 0bv8); free ensures (memory_load8_le(mem, 2034bv64) == 2bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation r() { lr: assume {:captureState "lr"} true; R0, Gamma_R0 := 1bv64, true; return; } + + diff --git a/src/test/correct/switch2/gcc_pic/switch2.expected b/src/test/correct/switch2/gcc_pic/switch2.expected index 6f0e32d47..463dce49e 100644 --- a/src/test/correct/switch2/gcc_pic/switch2.expected +++ b/src/test/correct/switch2/gcc_pic/switch2.expected @@ -1,64 +1,98 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -67,108 +101,47 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2033bv64) == 0bv8); free ensures (memory_load8_le(mem, 2034bv64) == 2bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; requires (Gamma_R0 == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2032bv64) == 1bv8); free requires (memory_load8_le(mem, 2033bv64) == 0bv8); free requires (memory_load8_le(mem, 2034bv64) == 2bv8); free requires (memory_load8_le(mem, 2035bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 28bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -177,38 +150,12 @@ procedure main() free ensures (memory_load8_le(mem, 2033bv64) == 0bv8); free ensures (memory_load8_le(mem, 2034bv64) == 2bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #10: bv32; var #11: bv32; @@ -384,7 +331,7 @@ procedure main() goto l00000c2f; lmain_goto_l00000c67: assume {:captureState "lmain_goto_l00000c67"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000c67; l00000c67_goto_l00000c41: assume {:captureState "l00000c67_goto_l00000c41"} true; @@ -392,7 +339,7 @@ procedure main() goto l00000c41; l00000c67_goto_l00000c8f: assume {:captureState "l00000c67_goto_l00000c8f"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000c8f; l00000c8f_goto_l00000cb0: assume {:captureState "l00000c8f_goto_l00000cb0"} true; @@ -400,7 +347,7 @@ procedure main() goto l00000cb0; l00000c8f_goto_l00000cc6: assume {:captureState "l00000c8f_goto_l00000cc6"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000cc6; l00000cc6_goto_l00000c41: assume {:captureState "l00000cc6_goto_l00000c41"} true; @@ -408,7 +355,7 @@ procedure main() goto l00000c41; l00000cc6_goto_l00000cee: assume {:captureState "l00000cc6_goto_l00000cee"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000cee; l00000cee_goto_l00000d0f: assume {:captureState "l00000cee_goto_l00000d0f"} true; @@ -416,7 +363,7 @@ procedure main() goto l00000d0f; l00000cee_goto_l00000d41: assume {:captureState "l00000cee_goto_l00000d41"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000d41; l00000d41_goto_l00000c41: assume {:captureState "l00000d41_goto_l00000c41"} true; @@ -424,7 +371,7 @@ procedure main() goto l00000c41; l00000d41_goto_l00000d69: assume {:captureState "l00000d41_goto_l00000d69"} true; - assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); + assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); goto l00000d69; l00000d69_goto_l00000d23: assume {:captureState "l00000d69_goto_l00000d23"} true; @@ -432,7 +379,7 @@ procedure main() goto l00000d23; l00000d69_goto_l00000d8f: assume {:captureState "l00000d69_goto_l00000d8f"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000d8f; l00000d8f_goto_l00000d34: assume {:captureState "l00000d8f_goto_l00000d34"} true; @@ -440,87 +387,36 @@ procedure main() goto l00000d34; l00000d8f_goto_l00000db5: assume {:captureState "l00000d8f_goto_l00000db5"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000db5; } -procedure r() + +procedure r(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 2032bv64) == 1bv8); free requires (memory_load8_le(mem, 2033bv64) == 0bv8); free requires (memory_load8_le(mem, 2034bv64) == 2bv8); free requires (memory_load8_le(mem, 2035bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 28bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1820bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 2032bv64) == 1bv8); free ensures (memory_load8_le(mem, 2033bv64) == 0bv8); free ensures (memory_load8_le(mem, 2034bv64) == 2bv8); free ensures (memory_load8_le(mem, 2035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation r() { lr: assume {:captureState "lr"} true; R0, Gamma_R0 := 1bv64, true; return; } + + diff --git a/src/test/correct/syscall/clang/syscall.expected b/src/test/correct/syscall/clang/syscall.expected index 5c23cb30f..3b37899d3 100644 --- a/src/test/correct/syscall/clang/syscall.expected +++ b/src/test/correct/syscall/clang/syscall.expected @@ -1,61 +1,91 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1944bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,182 +94,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1944bv64) == 1bv8); free requires (memory_load8_le(mem, 1945bv64) == 0bv8); free requires (memory_load8_le(mem, 1946bv64) == 2bv8); free requires (memory_load8_le(mem, 1947bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (memory_load8_le(mem, 1944bv64) == 1bv8); free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free requires (memory_load8_le(mem, 1944bv64) == 1bv8); free requires (memory_load8_le(mem, 1945bv64) == 0bv8); free requires (memory_load8_le(mem, 1946bv64) == 2bv8); free requires (memory_load8_le(mem, 1947bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -248,38 +163,12 @@ procedure main() free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -314,3 +203,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected b/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected index d0efb46c8..da545fa06 100644 --- a/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected +++ b/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected @@ -1,61 +1,91 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1944bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,182 +94,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1944bv64) == 1bv8); free requires (memory_load8_le(mem, 1945bv64) == 0bv8); free requires (memory_load8_le(mem, 1946bv64) == 2bv8); free requires (memory_load8_le(mem, 1947bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (memory_load8_le(mem, 1944bv64) == 1bv8); free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free requires (memory_load8_le(mem, 1944bv64) == 1bv8); free requires (memory_load8_le(mem, 1945bv64) == 0bv8); free requires (memory_load8_le(mem, 1946bv64) == 2bv8); free requires (memory_load8_le(mem, 1947bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -248,38 +163,12 @@ procedure main() free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -314,3 +203,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/syscall/clang_pic/syscall.expected b/src/test/correct/syscall/clang_pic/syscall.expected index d0efb46c8..da545fa06 100644 --- a/src/test/correct/syscall/clang_pic/syscall.expected +++ b/src/test/correct/syscall/clang_pic/syscall.expected @@ -1,61 +1,91 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1944bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,182 +94,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1944bv64) == 1bv8); free requires (memory_load8_le(mem, 1945bv64) == 0bv8); free requires (memory_load8_le(mem, 1946bv64) == 2bv8); free requires (memory_load8_le(mem, 1947bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (memory_load8_le(mem, 1944bv64) == 1bv8); free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69672bv64) == 0bv8); - free requires (memory_load8_le(mem, 69673bv64) == 0bv8); - free requires (memory_load8_le(mem, 69674bv64) == 0bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 0bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free requires (memory_load8_le(mem, 1944bv64) == 1bv8); free requires (memory_load8_le(mem, 1945bv64) == 0bv8); free requires (memory_load8_le(mem, 1946bv64) == 2bv8); free requires (memory_load8_le(mem, 1947bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 80bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 0bv8); - free requires (memory_load8_le(mem, 69073bv64) == 7bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69680bv64) == 48bv8); - free requires (memory_load8_le(mem, 69681bv64) == 16bv8); - free requires (memory_load8_le(mem, 69682bv64) == 1bv8); - free requires (memory_load8_le(mem, 69683bv64) == 0bv8); - free requires (memory_load8_le(mem, 69684bv64) == 0bv8); - free requires (memory_load8_le(mem, 69685bv64) == 0bv8); - free requires (memory_load8_le(mem, 69686bv64) == 0bv8); - free requires (memory_load8_le(mem, 69687bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -248,38 +163,12 @@ procedure main() free ensures (memory_load8_le(mem, 1945bv64) == 0bv8); free ensures (memory_load8_le(mem, 1946bv64) == 2bv8); free ensures (memory_load8_le(mem, 1947bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69680bv64) == 48bv8); - free ensures (memory_load8_le(mem, 69681bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69682bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69683bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69684bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69685bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69686bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69687bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); + +implementation main() { var #4: bv64; var #5: bv64; @@ -314,3 +203,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/syscall/gcc/syscall.expected b/src/test/correct/syscall/gcc/syscall.expected index d10405962..1b8025136 100644 --- a/src/test/correct/syscall/gcc/syscall.expected +++ b/src/test/correct/syscall/gcc/syscall.expected @@ -1,61 +1,91 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1932bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,182 +94,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1932bv64) == 1bv8); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -248,38 +163,12 @@ procedure main() free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -309,3 +198,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/syscall/gcc_O2/syscall.expected b/src/test/correct/syscall/gcc_O2/syscall.expected index 757903692..ccab5d71a 100644 --- a/src/test/correct/syscall/gcc_O2/syscall.expected +++ b/src/test/correct/syscall/gcc_O2/syscall.expected @@ -1,15 +1,30 @@ var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R16: bv64; + var {:extern} R17: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1960bv64); + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + +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] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -18,140 +33,54 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1961bv64) == 0bv8); free ensures (memory_load8_le(mem, 1962bv64) == 2bv8); free ensures (memory_load8_le(mem, 1963bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69008bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1600bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1960bv64) == 1bv8); free requires (memory_load8_le(mem, 1961bv64) == 0bv8); free requires (memory_load8_le(mem, 1962bv64) == 2bv8); free requires (memory_load8_le(mem, 1963bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 144bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 64bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 64bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1936bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1856bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1600bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1960bv64) == 1bv8); free ensures (memory_load8_le(mem, 1961bv64) == 0bv8); free ensures (memory_load8_le(mem, 1962bv64) == 2bv8); free ensures (memory_load8_le(mem, 1963bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 144bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1936bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1856bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1600bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + diff --git a/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected b/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected index 712177c54..0701ee358 100644 --- a/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected +++ b/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected @@ -1,61 +1,91 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1932bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,182 +94,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1932bv64) == 1bv8); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -248,38 +163,12 @@ procedure main() free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -309,3 +198,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/syscall/gcc_pic/syscall.expected b/src/test/correct/syscall/gcc_pic/syscall.expected index 712177c54..0701ee358 100644 --- a/src/test/correct/syscall/gcc_pic/syscall.expected +++ b/src/test/correct/syscall/gcc_pic/syscall.expected @@ -1,61 +1,91 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R16: bool; + var {:extern} Gamma_R17: bool; + var {:extern} Gamma_R29: bool; + var {:extern} Gamma_R30: bool; + var {:extern} Gamma_R31: 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} R29: bv64; + var {:extern} R30: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1932bv64); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,182 +94,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + + procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1932bv64) == 1bv8); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure main() + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R29 == old(Gamma_R29)); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); @@ -248,38 +163,12 @@ procedure main() free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv64; var Gamma_#4: bool; @@ -309,3 +198,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; return; } + + diff --git a/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected index b1773a812..38c606af3 100644 --- a/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected @@ -1,51 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,151 +87,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -263,7 +211,7 @@ procedure main() goto l00000322; lmain_goto_l00000325: assume {:captureState "lmain_goto_l00000325"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000325; l00000328_goto_l00000330: assume {:captureState "l00000328_goto_l00000330"} true; @@ -271,6 +219,8 @@ procedure main() goto l00000330; l00000328_goto_l00000358: assume {:captureState "l00000328_goto_l00000358"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000358; } + + diff --git a/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected index 3b7e9dc9d..49e02cacb 100644 --- a/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected @@ -1,39 +1,66 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -42,149 +69,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_mem, R0, R8, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -225,6 +167,8 @@ procedure main() goto l000002e5; lmain_goto_l000002e8: assume {:captureState "lmain_goto_l000002e8"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000002e8; } + + diff --git a/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected index bb9a9caa9..4b4a5ecfc 100644 --- a/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected @@ -1,51 +1,84 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -54,151 +87,66 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -263,7 +211,7 @@ procedure main() goto l0000093d; lmain_goto_l00000940: assume {:captureState "lmain_goto_l00000940"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000940; l00000943_goto_l0000094b: assume {:captureState "l00000943_goto_l0000094b"} true; @@ -271,6 +219,8 @@ procedure main() goto l0000094b; l00000943_goto_l00000973: assume {:captureState "l00000943_goto_l00000973"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000973; } + + diff --git a/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected index 022cc6fb7..b21bfcc7c 100644 --- a/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected @@ -1,59 +1,89 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,175 +92,69 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); free requires (memory_load8_le(mem, 1967bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 52bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 80bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 0bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1964bv64) == 1bv8); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -297,7 +221,7 @@ procedure main() goto l0000032d; lmain_goto_l00000330: assume {:captureState "lmain_goto_l00000330"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000330; l00000333_goto_l0000033b: assume {:captureState "l00000333_goto_l0000033b"} true; @@ -305,6 +229,8 @@ procedure main() goto l0000033b; l00000333_goto_l00000363: assume {:captureState "l00000333_goto_l00000363"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000363; } + + diff --git a/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected index a078d99f9..4a00ec065 100644 --- a/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected @@ -1,37 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -40,149 +65,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -224,6 +164,8 @@ procedure main() goto l000002fa; lmain_goto_l00000309: assume {:captureState "lmain_goto_l00000309"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000309; } + + diff --git a/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected index 62ead8320..b3bc6fe65 100644 --- a/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected @@ -1,37 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -40,149 +65,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv32; var CF: bv1; @@ -223,6 +163,8 @@ procedure main() goto l000001cf; lmain_goto_l000001d2: assume {:captureState "lmain_goto_l000001d2"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000001d2; } + + diff --git a/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected index 1eb9759f1..6792c5c30 100644 --- a/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected @@ -1,37 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -40,149 +65,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1868bv64) == 1bv8); free requires (memory_load8_le(mem, 1869bv64) == 0bv8); free requires (memory_load8_le(mem, 1870bv64) == 2bv8); free requires (memory_load8_le(mem, 1871bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1868bv64) == 1bv8); free ensures (memory_load8_le(mem, 1869bv64) == 0bv8); free ensures (memory_load8_le(mem, 1870bv64) == 2bv8); free ensures (memory_load8_le(mem, 1871bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -224,6 +164,8 @@ procedure main() goto l000008b3; lmain_goto_l000008c2: assume {:captureState "lmain_goto_l000008c2"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000008c2; } + + diff --git a/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected index 661b64502..4653d9457 100644 --- a/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected @@ -1,45 +1,67 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -48,173 +70,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1932bv64) == 1bv8); free requires (memory_load8_le(mem, 1933bv64) == 0bv8); free requires (memory_load8_le(mem, 1934bv64) == 2bv8); free requires (memory_load8_le(mem, 1935bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); free ensures (memory_load8_le(mem, 1932bv64) == 1bv8); free ensures (memory_load8_le(mem, 1933bv64) == 0bv8); free ensures (memory_load8_le(mem, 1934bv64) == 2bv8); free ensures (memory_load8_le(mem, 1935bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -257,6 +173,8 @@ procedure main() goto l000002fb; lmain_goto_l0000030a: assume {:captureState "lmain_goto_l0000030a"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000030a; } + + diff --git a/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected index 5ab807fea..094a403b5 100644 --- a/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected @@ -1,40 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,149 +65,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; lmain: @@ -202,3 +139,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected index ba7a07752..a28d634bd 100644 --- a/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected @@ -1,40 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,149 +65,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; lmain: @@ -202,3 +139,5 @@ procedure main() assume {:captureState "%000002d3"} true; return; } + + diff --git a/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected index 121f49afb..588b1e097 100644 --- a/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected @@ -1,40 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,149 +65,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1852bv64) == 1bv8); free requires (memory_load8_le(mem, 1853bv64) == 0bv8); free requires (memory_load8_le(mem, 1854bv64) == 2bv8); free requires (memory_load8_le(mem, 1855bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1852bv64) == 1bv8); free ensures (memory_load8_le(mem, 1853bv64) == 0bv8); free ensures (memory_load8_le(mem, 1854bv64) == 2bv8); free ensures (memory_load8_le(mem, 1855bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var Gamma_x_old: bool; lmain: @@ -202,3 +139,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected index c05386840..e4cc8c581 100644 --- a/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected @@ -1,48 +1,67 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -51,173 +70,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 52bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 80bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 0bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69064bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + +implementation main() { var Gamma_x_old: bool; lmain: @@ -236,3 +149,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected index 195161608..b9e64be8a 100644 --- a/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected @@ -1,38 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -41,149 +61,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; lmain: @@ -201,3 +136,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected index 6e3d75bef..2f42c459c 100644 --- a/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected @@ -1,40 +1,62 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -43,149 +65,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; lmain: @@ -202,3 +139,5 @@ procedure main() assume {:captureState "%000001bd"} true; return; } + + diff --git a/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected index 8bf981db5..80dd00a8e 100644 --- a/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected @@ -1,38 +1,58 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -41,149 +61,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var Gamma_x_old: bool; lmain: @@ -201,3 +136,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected index 3ffffbcfb..1cf4df81e 100644 --- a/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected @@ -1,46 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -49,173 +66,67 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } -procedure {:extern} guarantee_reflexive() + +procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; + +implementation {:extern} guarantee_reflexive() { assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } -procedure main() + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1920bv64) == 1bv8); free requires (memory_load8_le(mem, 1921bv64) == 0bv8); free requires (memory_load8_le(mem, 1922bv64) == 2bv8); free requires (memory_load8_le(mem, 1923bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 0bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 24bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 80bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69016bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1872bv64); free ensures (memory_load8_le(mem, 1920bv64) == 1bv8); free ensures (memory_load8_le(mem, 1921bv64) == 0bv8); free ensures (memory_load8_le(mem, 1922bv64) == 2bv8); free ensures (memory_load8_le(mem, 1923bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); + +implementation main() { var Gamma_x_old: bool; lmain: @@ -234,3 +145,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/incorrect/basicassign/clang/basicassign.expected b/src/test/incorrect/basicassign/clang/basicassign.expected index 122d69a08..b9c75990c 100644 --- a/src/test/incorrect/basicassign/clang/basicassign.expected +++ b/src/test/incorrect/basicassign/clang/basicassign.expected @@ -1,47 +1,75 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R11: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R11: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69692bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -50,145 +78,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1888bv64) == 1bv8); free requires (memory_load8_le(mem, 1889bv64) == 0bv8); free requires (memory_load8_le(mem, 1890bv64) == 2bv8); free requires (memory_load8_le(mem, 1891bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1888bv64) == 1bv8); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -226,3 +168,5 @@ procedure main() assume {:captureState "%00000337"} true; return; } + + diff --git a/src/test/incorrect/basicassign/clang_O2/basicassign.expected b/src/test/incorrect/basicassign/clang_O2/basicassign.expected index e3a318276..bfee5b1dd 100644 --- a/src/test/incorrect/basicassign/clang_O2/basicassign.expected +++ b/src/test/incorrect/basicassign/clang_O2/basicassign.expected @@ -1,45 +1,71 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69692bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -48,145 +74,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1865bv64) == 0bv8); free ensures (memory_load8_le(mem, 1866bv64) == 2bv8); free ensures (memory_load8_le(mem, 1867bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1864bv64) == 1bv8); free requires (memory_load8_le(mem, 1865bv64) == 0bv8); free requires (memory_load8_le(mem, 1866bv64) == 2bv8); free requires (memory_load8_le(mem, 1867bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1864bv64) == 1bv8); free ensures (memory_load8_le(mem, 1865bv64) == 0bv8); free ensures (memory_load8_le(mem, 1866bv64) == 2bv8); free ensures (memory_load8_le(mem, 1867bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -206,3 +146,5 @@ procedure main() assume {:captureState "%000002f3"} true; return; } + + diff --git a/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected b/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected index 3250d4cce..a07e14129 100644 --- a/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected @@ -1,47 +1,75 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R11: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R11: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69692bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -50,145 +78,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1888bv64) == 1bv8); free requires (memory_load8_le(mem, 1889bv64) == 0bv8); free requires (memory_load8_le(mem, 1890bv64) == 2bv8); free requires (memory_load8_le(mem, 1891bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1888bv64) == 1bv8); free ensures (memory_load8_le(mem, 1889bv64) == 0bv8); free ensures (memory_load8_le(mem, 1890bv64) == 2bv8); free ensures (memory_load8_le(mem, 1891bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -226,3 +168,5 @@ procedure main() assume {:captureState "%00000924"} true; return; } + + diff --git a/src/test/incorrect/basicassign/clang_pic/basicassign.expected b/src/test/incorrect/basicassign/clang_pic/basicassign.expected index ac86f966b..dd5714462 100644 --- a/src/test/incorrect/basicassign/clang_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/clang_pic/basicassign.expected @@ -1,55 +1,80 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R11: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R11: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69692bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -58,217 +83,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69040bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69041bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69042bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69043bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69044bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69045bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69046bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69047bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69560bv64) == 60bv8); - free ensures (memory_load8_le(mem, 69561bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69562bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69563bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69564bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69565bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69566bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69567bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69040bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69560bv64) == 69692bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); free requires (memory_load8_le(mem, 1967bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 52bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 0bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69040bv64) == 80bv8); - free requires (memory_load8_le(mem, 69041bv64) == 7bv8); - free requires (memory_load8_le(mem, 69042bv64) == 0bv8); - free requires (memory_load8_le(mem, 69043bv64) == 0bv8); - free requires (memory_load8_le(mem, 69044bv64) == 0bv8); - free requires (memory_load8_le(mem, 69045bv64) == 0bv8); - free requires (memory_load8_le(mem, 69046bv64) == 0bv8); - free requires (memory_load8_le(mem, 69047bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 56bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69560bv64) == 60bv8); - free requires (memory_load8_le(mem, 69561bv64) == 16bv8); - free requires (memory_load8_le(mem, 69562bv64) == 1bv8); - free requires (memory_load8_le(mem, 69563bv64) == 0bv8); - free requires (memory_load8_le(mem, 69564bv64) == 0bv8); - free requires (memory_load8_le(mem, 69565bv64) == 0bv8); - free requires (memory_load8_le(mem, 69566bv64) == 0bv8); - free requires (memory_load8_le(mem, 69567bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69040bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69560bv64) == 69692bv64); free ensures (memory_load8_le(mem, 1964bv64) == 1bv8); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69040bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69041bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69042bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69043bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69044bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69045bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69046bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69047bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69560bv64) == 60bv8); - free ensures (memory_load8_le(mem, 69561bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69562bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69563bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69564bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69565bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69566bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69567bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69040bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69560bv64) == 69692bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -312,3 +188,5 @@ procedure main() assume {:captureState "%00000358"} true; return; } + + diff --git a/src/test/incorrect/basicassign/gcc/basicassign.expected b/src/test/incorrect/basicassign/gcc/basicassign.expected index 121167794..bd5b8acf6 100644 --- a/src/test/incorrect/basicassign/gcc/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc/basicassign.expected @@ -1,41 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,145 +66,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); free ensures (memory_load8_le(mem, 1951bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1948bv64) == 1bv8); free requires (memory_load8_le(mem, 1949bv64) == 0bv8); free requires (memory_load8_le(mem, 1950bv64) == 2bv8); free requires (memory_load8_le(mem, 1951bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1948bv64) == 1bv8); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); free ensures (memory_load8_le(mem, 1951bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -235,3 +171,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/incorrect/basicassign/gcc_O2/basicassign.expected b/src/test/incorrect/basicassign/gcc_O2/basicassign.expected index 42773c210..93007cf8c 100644 --- a/src/test/incorrect/basicassign/gcc_O2/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc_O2/basicassign.expected @@ -1,43 +1,67 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69652bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69660bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -46,145 +70,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #1: bv64; var Gamma_#1: bool; @@ -206,3 +144,5 @@ procedure main() assume {:captureState "%000001cf"} true; return; } + + diff --git a/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected b/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected index 499b391fd..d2d4ccec5 100644 --- a/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected @@ -1,41 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -44,145 +66,59 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); free ensures (memory_load8_le(mem, 1951bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1948bv64) == 1bv8); free requires (memory_load8_le(mem, 1949bv64) == 0bv8); free requires (memory_load8_le(mem, 1950bv64) == 2bv8); free requires (memory_load8_le(mem, 1951bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1948bv64) == 1bv8); free ensures (memory_load8_le(mem, 1949bv64) == 0bv8); free ensures (memory_load8_le(mem, 1950bv64) == 2bv8); free ensures (memory_load8_le(mem, 1951bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -235,3 +171,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/incorrect/basicassign/gcc_pic/basicassign.expected b/src/test/incorrect/basicassign/gcc_pic/basicassign.expected index e67a10bdf..e25f3553f 100644 --- a/src/test/incorrect/basicassign/gcc_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc_pic/basicassign.expected @@ -1,49 +1,68 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); + const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -52,217 +71,68 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2013bv64) == 0bv8); free ensures (memory_load8_le(mem, 2014bv64) == 2bv8); free ensures (memory_load8_le(mem, 2015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 80bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69660bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } -procedure {:extern} rely_reflexive() + +procedure {:extern} rely_reflexive(); + +implementation {:extern} rely_reflexive() { assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2012bv64) == 1bv8); free requires (memory_load8_le(mem, 2013bv64) == 0bv8); free requires (memory_load8_le(mem, 2014bv64) == 2bv8); free requires (memory_load8_le(mem, 2015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 28bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 24bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 0bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); - free requires (memory_load8_le(mem, 68992bv64) == 80bv8); - free requires (memory_load8_le(mem, 68993bv64) == 7bv8); - free requires (memory_load8_le(mem, 68994bv64) == 0bv8); - free requires (memory_load8_le(mem, 68995bv64) == 0bv8); - free requires (memory_load8_le(mem, 68996bv64) == 0bv8); - free requires (memory_load8_le(mem, 68997bv64) == 0bv8); - free requires (memory_load8_le(mem, 68998bv64) == 0bv8); - free requires (memory_load8_le(mem, 68999bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69660bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1792bv64); + free requires (memory_load64_le(mem, 68992bv64) == 1872bv64); free ensures (memory_load8_le(mem, 2012bv64) == 1bv8); free ensures (memory_load8_le(mem, 2013bv64) == 0bv8); free ensures (memory_load8_le(mem, 2014bv64) == 2bv8); free ensures (memory_load8_le(mem, 2015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 28bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68992bv64) == 80bv8); - free ensures (memory_load8_le(mem, 68993bv64) == 7bv8); - free ensures (memory_load8_le(mem, 68994bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68995bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68996bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68997bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68998bv64) == 0bv8); - free ensures (memory_load8_le(mem, 68999bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69660bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 68992bv64) == 1872bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -324,3 +194,5 @@ procedure main() R0, Gamma_R0 := 0bv64, true; return; } + + diff --git a/src/test/incorrect/basicassign1/clang/basicassign1.expected b/src/test/incorrect/basicassign1/clang/basicassign1.expected index bd0fa29fe..ab4a350ac 100644 --- a/src/test/incorrect/basicassign1/clang/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang/basicassign1.expected @@ -1,45 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -48,145 +76,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -217,3 +158,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected b/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected index 54cfefaed..9e29f7432 100644 --- a/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected @@ -1,39 +1,61 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -42,143 +64,56 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -193,3 +128,5 @@ procedure main() assume {:captureState "%000002de"} true; return; } + + diff --git a/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected b/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected index 05e7e5e2f..9e9f4a2b7 100644 --- a/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected @@ -1,45 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -48,145 +76,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -217,3 +158,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected b/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected index dc205cce6..680541986 100644 --- a/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected @@ -1,53 +1,78 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -56,193 +81,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); free requires (memory_load8_le(mem, 1967bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 52bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 56bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1964bv64) == 1bv8); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -277,3 +173,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign1/gcc/basicassign1.expected b/src/test/incorrect/basicassign1/gcc/basicassign1.expected index ea9681d89..f46bd5aa1 100644 --- a/src/test/incorrect/basicassign1/gcc/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc/basicassign1.expected @@ -1,41 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -44,145 +68,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -219,3 +156,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected b/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected index 0414017cb..36a46a0f1 100644 --- a/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected @@ -1,39 +1,61 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -42,143 +64,56 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -193,3 +128,5 @@ procedure main() assume {:captureState "%000001c5"} true; return; } + + diff --git a/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected b/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected index fdcbd7147..50635b482 100644 --- a/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected @@ -1,41 +1,65 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -44,145 +68,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -219,3 +156,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected b/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected index 91a64b3f4..6e89734bd 100644 --- a/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected @@ -1,49 +1,70 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -52,193 +73,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1981bv64) == 0bv8); free ensures (memory_load8_le(mem, 1982bv64) == 2bv8); free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1980bv64) == 1bv8); free requires (memory_load8_le(mem, 1981bv64) == 0bv8); free requires (memory_load8_le(mem, 1982bv64) == 2bv8); free requires (memory_load8_le(mem, 1983bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 24bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1980bv64) == 1bv8); free ensures (memory_load8_le(mem, 1981bv64) == 0bv8); free ensures (memory_load8_le(mem, 1982bv64) == 2bv8); free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -279,3 +171,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign2/clang/basicassign2.expected b/src/test/incorrect/basicassign2/clang/basicassign2.expected index 471ecc76c..b7f3b26d4 100644 --- a/src/test/incorrect/basicassign2/clang/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang/basicassign2.expected @@ -1,46 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69696bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -49,145 +72,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -218,3 +154,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected b/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected index 1443e9789..ebdf9987b 100644 --- a/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected @@ -1,40 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69696bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -43,143 +60,56 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -194,3 +124,5 @@ procedure main() assume {:captureState "%000002de"} true; return; } + + diff --git a/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected b/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected index 911ce67bd..61784c6b5 100644 --- a/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected @@ -1,46 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69696bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -49,145 +72,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -218,3 +154,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected b/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected index bb901dc08..f24dd8328 100644 --- a/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected @@ -1,46 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69696bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -49,193 +72,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); free requires (memory_load8_le(mem, 1967bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 56bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 64bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69696bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1964bv64) == 1bv8); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 64bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69696bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -270,3 +164,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign2/gcc/basicassign2.expected b/src/test/incorrect/basicassign2/gcc/basicassign2.expected index 95f92fbdc..2a4c93323 100644 --- a/src/test/incorrect/basicassign2/gcc/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc/basicassign2.expected @@ -1,42 +1,61 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69664bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -45,145 +64,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -220,3 +152,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected b/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected index 2116e0774..b08eeaeb9 100644 --- a/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected @@ -1,40 +1,57 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69664bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -43,143 +60,56 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -194,3 +124,5 @@ procedure main() assume {:captureState "%000001c5"} true; return; } + + diff --git a/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected b/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected index 190af2f08..93dcfc30d 100644 --- a/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected @@ -1,42 +1,61 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69664bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -45,145 +64,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -220,3 +152,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected b/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected index 1c35793fc..4472e5532 100644 --- a/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected @@ -1,42 +1,61 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69664bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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)); @@ -45,193 +64,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1981bv64) == 0bv8); free ensures (memory_load8_le(mem, 1982bv64) == 2bv8); free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 32bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1980bv64) == 1bv8); free requires (memory_load8_le(mem, 1981bv64) == 0bv8); free requires (memory_load8_le(mem, 1982bv64) == 2bv8); free requires (memory_load8_le(mem, 1983bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 32bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 24bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69664bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1980bv64) == 1bv8); free ensures (memory_load8_le(mem, 1981bv64) == 0bv8); free ensures (memory_load8_le(mem, 1982bv64) == 2bv8); free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 32bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69664bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -272,3 +162,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign3/clang/basicassign3.expected b/src/test/incorrect/basicassign3/clang/basicassign3.expected index 75800d54a..9597a91a8 100644 --- a/src/test/incorrect/basicassign3/clang/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang/basicassign3.expected @@ -1,43 +1,71 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69681bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69682bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } + 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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +74,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -215,3 +156,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected b/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected index 96cc417da..496e9fdd1 100644 --- a/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected @@ -1,37 +1,59 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } + 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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,143 +62,56 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1856bv64) == 1bv8); free requires (memory_load8_le(mem, 1857bv64) == 0bv8); free requires (memory_load8_le(mem, 1858bv64) == 2bv8); free requires (memory_load8_le(mem, 1859bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (memory_load8_le(mem, 1856bv64) == 1bv8); free ensures (memory_load8_le(mem, 1857bv64) == 0bv8); free ensures (memory_load8_le(mem, 1858bv64) == 2bv8); free ensures (memory_load8_le(mem, 1859bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -191,3 +126,5 @@ procedure main() assume {:captureState "%000002de"} true; return; } + + diff --git a/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected b/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected index 75b959513..d8ac21d5a 100644 --- a/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected @@ -1,43 +1,71 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69681bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69682bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } + 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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +74,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1892bv64) == 1bv8); free requires (memory_load8_le(mem, 1893bv64) == 0bv8); free requires (memory_load8_le(mem, 1894bv64) == 2bv8); free requires (memory_load8_le(mem, 1895bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1892bv64) == 1bv8); free ensures (memory_load8_le(mem, 1893bv64) == 0bv8); free ensures (memory_load8_le(mem, 1894bv64) == 2bv8); free ensures (memory_load8_le(mem, 1895bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -215,3 +156,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected b/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected index 7a4df88f4..b4aada9b1 100644 --- a/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected @@ -1,51 +1,76 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R10: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R10: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69681bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69682bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -54,193 +79,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 49bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 50bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69681bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69682bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1964bv64) == 1bv8); free requires (memory_load8_le(mem, 1965bv64) == 0bv8); free requires (memory_load8_le(mem, 1966bv64) == 2bv8); free requires (memory_load8_le(mem, 1967bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69584bv64) == 49bv8); - free requires (memory_load8_le(mem, 69585bv64) == 16bv8); - free requires (memory_load8_le(mem, 69586bv64) == 1bv8); - free requires (memory_load8_le(mem, 69587bv64) == 0bv8); - free requires (memory_load8_le(mem, 69588bv64) == 0bv8); - free requires (memory_load8_le(mem, 69589bv64) == 0bv8); - free requires (memory_load8_le(mem, 69590bv64) == 0bv8); - free requires (memory_load8_le(mem, 69591bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 50bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69584bv64) == 69681bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69682bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1964bv64) == 1bv8); free ensures (memory_load8_le(mem, 1965bv64) == 0bv8); free ensures (memory_load8_le(mem, 1966bv64) == 2bv8); free ensures (memory_load8_le(mem, 1967bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69584bv64) == 49bv8); - free ensures (memory_load8_le(mem, 69585bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69586bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69587bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69588bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69589bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69590bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69591bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 50bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69584bv64) == 69681bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69682bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -275,3 +171,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign3/gcc/basicassign3.expected b/src/test/incorrect/basicassign3/gcc/basicassign3.expected index a3c547bb3..661e32b5d 100644 --- a/src/test/incorrect/basicassign3/gcc/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc/basicassign3.expected @@ -1,39 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69650bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69649bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } + 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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -42,145 +66,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -217,3 +154,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected b/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected index 62c8377ad..cbcf197f8 100644 --- a/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected @@ -1,37 +1,59 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R2: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R2: bv64; + var {:extern} mem: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69650bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69649bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } + 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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,143 +62,56 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 80bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 0bv8); - free requires (memory_load8_le(mem, 69025bv64) == 7bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 0bv8); - free requires (memory_load8_le(mem, 69617bv64) == 6bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1536bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -191,3 +126,5 @@ procedure main() assume {:captureState "%000001c5"} true; return; } + + diff --git a/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected b/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected index ea6ea1a7b..43b16ff36 100644 --- a/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected @@ -1,39 +1,63 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69650bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69649bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } + 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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -42,145 +66,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1916bv64) == 1bv8); free requires (memory_load8_le(mem, 1917bv64) == 0bv8); free requires (memory_load8_le(mem, 1918bv64) == 2bv8); free requires (memory_load8_le(mem, 1919bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1916bv64) == 1bv8); free ensures (memory_load8_le(mem, 1917bv64) == 0bv8); free ensures (memory_load8_le(mem, 1918bv64) == 2bv8); free ensures (memory_load8_le(mem, 1919bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -217,3 +154,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected b/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected index 7e6204c20..6f525fcf7 100644 --- a/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected @@ -1,47 +1,68 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69650bv64); + const {:extern} $z_addr: bv64; axiom ($z_addr == 69649bv64); + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + 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]))))))) + (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_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]))))))) + (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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } + function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -50,193 +71,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1981bv64) == 0bv8); free ensures (memory_load8_le(mem, 1982bv64) == 2bv8); free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 18bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 17bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69608bv64) == 69650bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69649bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1980bv64) == 1bv8); free requires (memory_load8_le(mem, 1981bv64) == 0bv8); free requires (memory_load8_le(mem, 1982bv64) == 2bv8); free requires (memory_load8_le(mem, 1983bv64) == 0bv8); - free requires (memory_load8_le(mem, 69608bv64) == 18bv8); - free requires (memory_load8_le(mem, 69609bv64) == 16bv8); - free requires (memory_load8_le(mem, 69610bv64) == 1bv8); - free requires (memory_load8_le(mem, 69611bv64) == 0bv8); - free requires (memory_load8_le(mem, 69612bv64) == 0bv8); - free requires (memory_load8_le(mem, 69613bv64) == 0bv8); - free requires (memory_load8_le(mem, 69614bv64) == 0bv8); - free requires (memory_load8_le(mem, 69615bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 17bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69608bv64) == 69650bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69649bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1980bv64) == 1bv8); free ensures (memory_load8_le(mem, 1981bv64) == 0bv8); free ensures (memory_load8_le(mem, 1982bv64) == 2bv8); free ensures (memory_load8_le(mem, 1983bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69608bv64) == 18bv8); - free ensures (memory_load8_le(mem, 69609bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69610bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69611bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69612bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69613bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69614bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69615bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 17bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69608bv64) == 69650bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69649bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { lmain: assume {:captureState "lmain"} true; @@ -277,3 +169,5 @@ procedure main() R31, Gamma_R31 := bvadd64(R31, 16bv64), Gamma_R31; return; } + + diff --git a/src/test/incorrect/iflocal/clang/iflocal.expected b/src/test/incorrect/iflocal/clang/iflocal.expected index f90233011..2923c7e88 100644 --- a/src/test/incorrect/iflocal/clang/iflocal.expected +++ b/src/test/incorrect/iflocal/clang/iflocal.expected @@ -1,43 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +76,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -247,7 +190,7 @@ procedure main() goto l00000334; lmain_goto_l00000337: assume {:captureState "lmain_goto_l00000337"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000337; l0000033a_goto_l00000342: assume {:captureState "l0000033a_goto_l00000342"} true; @@ -255,6 +198,8 @@ procedure main() goto l00000342; l0000033a_goto_l00000359: assume {:captureState "l0000033a_goto_l00000359"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000359; } + + diff --git a/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected b/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected index 72e0f9841..1b13c1089 100644 --- a/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected @@ -1,43 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +76,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -247,7 +190,7 @@ procedure main() goto l00000956; lmain_goto_l00000959: assume {:captureState "lmain_goto_l00000959"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000959; l0000095c_goto_l00000964: assume {:captureState "l0000095c_goto_l00000964"} true; @@ -255,6 +198,8 @@ procedure main() goto l00000964; l0000095c_goto_l0000097b: assume {:captureState "l0000095c_goto_l0000097b"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000097b; } + + diff --git a/src/test/incorrect/iflocal/clang_pic/iflocal.expected b/src/test/incorrect/iflocal/clang_pic/iflocal.expected index 72e0f9841..1b13c1089 100644 --- a/src/test/incorrect/iflocal/clang_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/clang_pic/iflocal.expected @@ -1,43 +1,73 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -46,145 +76,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1896bv64) == 1bv8); free requires (memory_load8_le(mem, 1897bv64) == 0bv8); free requires (memory_load8_le(mem, 1898bv64) == 2bv8); free requires (memory_load8_le(mem, 1899bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1896bv64) == 1bv8); free ensures (memory_load8_le(mem, 1897bv64) == 0bv8); free ensures (memory_load8_le(mem, 1898bv64) == 2bv8); free ensures (memory_load8_le(mem, 1899bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -247,7 +190,7 @@ procedure main() goto l00000956; lmain_goto_l00000959: assume {:captureState "lmain_goto_l00000959"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000959; l0000095c_goto_l00000964: assume {:captureState "l0000095c_goto_l00000964"} true; @@ -255,6 +198,8 @@ procedure main() goto l00000964; l0000095c_goto_l0000097b: assume {:captureState "l0000095c_goto_l0000097b"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000097b; } + + diff --git a/src/test/incorrect/iflocal/gcc/iflocal.expected b/src/test/incorrect/iflocal/gcc/iflocal.expected index 448aac10d..4d79ba51d 100644 --- a/src/test/incorrect/iflocal/gcc/iflocal.expected +++ b/src/test/incorrect/iflocal/gcc/iflocal.expected @@ -1,41 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -44,145 +72,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1881bv64) == 0bv8); free ensures (memory_load8_le(mem, 1882bv64) == 2bv8); free ensures (memory_load8_le(mem, 1883bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1880bv64) == 1bv8); free requires (memory_load8_le(mem, 1881bv64) == 0bv8); free requires (memory_load8_le(mem, 1882bv64) == 2bv8); free requires (memory_load8_le(mem, 1883bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1880bv64) == 1bv8); free ensures (memory_load8_le(mem, 1881bv64) == 0bv8); free ensures (memory_load8_le(mem, 1882bv64) == 2bv8); free ensures (memory_load8_le(mem, 1883bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -227,6 +168,8 @@ procedure main() goto l00000318; lmain_goto_l0000032d: assume {:captureState "lmain_goto_l0000032d"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000032d; } + + diff --git a/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected b/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected index 2eb140e57..c634cd4db 100644 --- a/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected @@ -1,41 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -44,145 +72,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1881bv64) == 0bv8); free ensures (memory_load8_le(mem, 1882bv64) == 2bv8); free ensures (memory_load8_le(mem, 1883bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1880bv64) == 1bv8); free requires (memory_load8_le(mem, 1881bv64) == 0bv8); free requires (memory_load8_le(mem, 1882bv64) == 2bv8); free requires (memory_load8_le(mem, 1883bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1880bv64) == 1bv8); free ensures (memory_load8_le(mem, 1881bv64) == 0bv8); free ensures (memory_load8_le(mem, 1882bv64) == 2bv8); free ensures (memory_load8_le(mem, 1883bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -227,6 +168,8 @@ procedure main() goto l000008ff; lmain_goto_l00000914: assume {:captureState "lmain_goto_l00000914"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000914; } + + diff --git a/src/test/incorrect/iflocal/gcc_pic/iflocal.expected b/src/test/incorrect/iflocal/gcc_pic/iflocal.expected index 2eb140e57..c634cd4db 100644 --- a/src/test/incorrect/iflocal/gcc_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/gcc_pic/iflocal.expected @@ -1,41 +1,69 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) +} + + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -44,145 +72,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1881bv64) == 0bv8); free ensures (memory_load8_le(mem, 1882bv64) == 2bv8); free ensures (memory_load8_le(mem, 1883bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1880bv64) == 1bv8); free requires (memory_load8_le(mem, 1881bv64) == 0bv8); free requires (memory_load8_le(mem, 1882bv64) == 2bv8); free requires (memory_load8_le(mem, 1883bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1880bv64) == 1bv8); free ensures (memory_load8_le(mem, 1881bv64) == 0bv8); free ensures (memory_load8_le(mem, 1882bv64) == 2bv8); free ensures (memory_load8_le(mem, 1883bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var CF: bv1; @@ -227,6 +168,8 @@ procedure main() goto l000008ff; lmain_goto_l00000914: assume {:captureState "lmain_goto_l00000914"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000914; } + + diff --git a/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected index 87cfa4dab..aabbb9475 100644 --- a/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected @@ -1,49 +1,82 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -52,145 +85,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1976bv64) == 1bv8); free requires (memory_load8_le(mem, 1977bv64) == 0bv8); free requires (memory_load8_le(mem, 1978bv64) == 2bv8); free requires (memory_load8_le(mem, 1979bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1976bv64) == 1bv8); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -331,7 +277,7 @@ procedure main() goto l00000390; lmain_goto_l00000393: assume {:captureState "lmain_goto_l00000393"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000393; l00000396_goto_l0000039e: assume {:captureState "l00000396_goto_l0000039e"} true; @@ -339,7 +285,7 @@ procedure main() goto l0000039e; l00000396_goto_l0000045d: assume {:captureState "l00000396_goto_l0000045d"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000045d; l0000039e_goto_l000003ce: assume {:captureState "l0000039e_goto_l000003ce"} true; @@ -347,7 +293,7 @@ procedure main() goto l000003ce; l0000039e_goto_l000003d1: assume {:captureState "l0000039e_goto_l000003d1"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000003d1; l000003d4_goto_l000003dc: assume {:captureState "l000003d4_goto_l000003dc"} true; @@ -355,7 +301,7 @@ procedure main() goto l000003dc; l000003d4_goto_l00000448: assume {:captureState "l000003d4_goto_l00000448"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000448; l000003dc_goto_l00000407: assume {:captureState "l000003dc_goto_l00000407"} true; @@ -363,7 +309,7 @@ procedure main() goto l00000407; l000003dc_goto_l0000040a: assume {:captureState "l000003dc_goto_l0000040a"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l0000040a; l0000040d_goto_l00000415: assume {:captureState "l0000040d_goto_l00000415"} true; @@ -371,6 +317,8 @@ procedure main() goto l00000415; l0000040d_goto_l0000042c: assume {:captureState "l0000040d_goto_l0000042c"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000042c; } + + diff --git a/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected index bd4cadff9..3337c6e95 100644 --- a/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected @@ -1,49 +1,82 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -52,145 +85,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 1976bv64) == 1bv8); free requires (memory_load8_le(mem, 1977bv64) == 0bv8); free requires (memory_load8_le(mem, 1978bv64) == 2bv8); free requires (memory_load8_le(mem, 1979bv64) == 0bv8); - free requires (memory_load8_le(mem, 69064bv64) == 16bv8); - free requires (memory_load8_le(mem, 69065bv64) == 7bv8); - free requires (memory_load8_le(mem, 69066bv64) == 0bv8); - free requires (memory_load8_le(mem, 69067bv64) == 0bv8); - free requires (memory_load8_le(mem, 69068bv64) == 0bv8); - free requires (memory_load8_le(mem, 69069bv64) == 0bv8); - free requires (memory_load8_le(mem, 69070bv64) == 0bv8); - free requires (memory_load8_le(mem, 69071bv64) == 0bv8); - free requires (memory_load8_le(mem, 69072bv64) == 192bv8); - free requires (memory_load8_le(mem, 69073bv64) == 6bv8); - free requires (memory_load8_le(mem, 69074bv64) == 0bv8); - free requires (memory_load8_le(mem, 69075bv64) == 0bv8); - free requires (memory_load8_le(mem, 69076bv64) == 0bv8); - free requires (memory_load8_le(mem, 69077bv64) == 0bv8); - free requires (memory_load8_le(mem, 69078bv64) == 0bv8); - free requires (memory_load8_le(mem, 69079bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 20bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69064bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69072bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1976bv64) == 1bv8); free ensures (memory_load8_le(mem, 1977bv64) == 0bv8); free ensures (memory_load8_le(mem, 1978bv64) == 2bv8); free ensures (memory_load8_le(mem, 1979bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69064bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69065bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69066bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69067bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69068bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69069bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69070bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69071bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69072bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69073bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69074bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69075bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69076bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69077bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69078bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69079bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69064bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69072bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -331,7 +277,7 @@ procedure main() goto l00000ae0; lmain_goto_l00000ae3: assume {:captureState "lmain_goto_l00000ae3"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000ae3; l00000ae6_goto_l00000aee: assume {:captureState "l00000ae6_goto_l00000aee"} true; @@ -339,7 +285,7 @@ procedure main() goto l00000aee; l00000ae6_goto_l00000bad: assume {:captureState "l00000ae6_goto_l00000bad"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000bad; l00000aee_goto_l00000b1e: assume {:captureState "l00000aee_goto_l00000b1e"} true; @@ -347,7 +293,7 @@ procedure main() goto l00000b1e; l00000aee_goto_l00000b21: assume {:captureState "l00000aee_goto_l00000b21"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000b21; l00000b24_goto_l00000b2c: assume {:captureState "l00000b24_goto_l00000b2c"} true; @@ -355,7 +301,7 @@ procedure main() goto l00000b2c; l00000b24_goto_l00000b98: assume {:captureState "l00000b24_goto_l00000b98"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000b98; l00000b2c_goto_l00000b57: assume {:captureState "l00000b2c_goto_l00000b57"} true; @@ -363,7 +309,7 @@ procedure main() goto l00000b57; l00000b2c_goto_l00000b5a: assume {:captureState "l00000b2c_goto_l00000b5a"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000b5a; l00000b5d_goto_l00000b65: assume {:captureState "l00000b5d_goto_l00000b65"} true; @@ -371,6 +317,8 @@ procedure main() goto l00000b65; l00000b5d_goto_l00000b7c: assume {:captureState "l00000b5d_goto_l00000b7c"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000b7c; } + + diff --git a/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected index e3f54f47c..60d4ab371 100644 --- a/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected @@ -1,65 +1,97 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_R8: bool; + var {:extern} Gamma_R9: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R31: bv64; + var {:extern} R8: bv64; + var {:extern} R9: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -68,193 +100,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2053bv64) == 0bv8); free ensures (memory_load8_le(mem, 2054bv64) == 2bv8); free ensures (memory_load8_le(mem, 2055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; - free requires (memory_load8_le(mem, 69664bv64) == 0bv8); - free requires (memory_load8_le(mem, 69665bv64) == 0bv8); - free requires (memory_load8_le(mem, 69666bv64) == 0bv8); - free requires (memory_load8_le(mem, 69667bv64) == 0bv8); - free requires (memory_load8_le(mem, 69668bv64) == 0bv8); - free requires (memory_load8_le(mem, 69669bv64) == 0bv8); - free requires (memory_load8_le(mem, 69670bv64) == 0bv8); - free requires (memory_load8_le(mem, 69671bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); + free requires (memory_load64_le(mem, 69664bv64) == 0bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); free requires (memory_load8_le(mem, 2052bv64) == 1bv8); free requires (memory_load8_le(mem, 2053bv64) == 0bv8); free requires (memory_load8_le(mem, 2054bv64) == 2bv8); free requires (memory_load8_le(mem, 2055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69576bv64) == 52bv8); - free requires (memory_load8_le(mem, 69577bv64) == 16bv8); - free requires (memory_load8_le(mem, 69578bv64) == 1bv8); - free requires (memory_load8_le(mem, 69579bv64) == 0bv8); - free requires (memory_load8_le(mem, 69580bv64) == 0bv8); - free requires (memory_load8_le(mem, 69581bv64) == 0bv8); - free requires (memory_load8_le(mem, 69582bv64) == 0bv8); - free requires (memory_load8_le(mem, 69583bv64) == 0bv8); - free requires (memory_load8_le(mem, 69672bv64) == 40bv8); - free requires (memory_load8_le(mem, 69673bv64) == 16bv8); - free requires (memory_load8_le(mem, 69674bv64) == 1bv8); - free requires (memory_load8_le(mem, 69675bv64) == 0bv8); - free requires (memory_load8_le(mem, 69676bv64) == 0bv8); - free requires (memory_load8_le(mem, 69677bv64) == 0bv8); - free requires (memory_load8_le(mem, 69678bv64) == 0bv8); - free requires (memory_load8_le(mem, 69679bv64) == 0bv8); - free requires (memory_load8_le(mem, 69048bv64) == 80bv8); - free requires (memory_load8_le(mem, 69049bv64) == 7bv8); - free requires (memory_load8_le(mem, 69050bv64) == 0bv8); - free requires (memory_load8_le(mem, 69051bv64) == 0bv8); - free requires (memory_load8_le(mem, 69052bv64) == 0bv8); - free requires (memory_load8_le(mem, 69053bv64) == 0bv8); - free requires (memory_load8_le(mem, 69054bv64) == 0bv8); - free requires (memory_load8_le(mem, 69055bv64) == 0bv8); - free requires (memory_load8_le(mem, 69568bv64) == 56bv8); - free requires (memory_load8_le(mem, 69569bv64) == 16bv8); - free requires (memory_load8_le(mem, 69570bv64) == 1bv8); - free requires (memory_load8_le(mem, 69571bv64) == 0bv8); - free requires (memory_load8_le(mem, 69572bv64) == 0bv8); - free requires (memory_load8_le(mem, 69573bv64) == 0bv8); - free requires (memory_load8_le(mem, 69574bv64) == 0bv8); - free requires (memory_load8_le(mem, 69575bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 84bv8); - free requires (memory_load8_le(mem, 69593bv64) == 7bv8); - free requires (memory_load8_le(mem, 69594bv64) == 0bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69056bv64) == 0bv8); - free requires (memory_load8_le(mem, 69057bv64) == 7bv8); - free requires (memory_load8_le(mem, 69058bv64) == 0bv8); - free requires (memory_load8_le(mem, 69059bv64) == 0bv8); - free requires (memory_load8_le(mem, 69060bv64) == 0bv8); - free requires (memory_load8_le(mem, 69061bv64) == 0bv8); - free requires (memory_load8_le(mem, 69062bv64) == 0bv8); - free requires (memory_load8_le(mem, 69063bv64) == 0bv8); + free requires (memory_load64_le(mem, 69576bv64) == 69684bv64); + free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); + free requires (memory_load64_le(mem, 69048bv64) == 1872bv64); + free requires (memory_load64_le(mem, 69568bv64) == 69688bv64); + free requires (memory_load64_le(mem, 69592bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69056bv64) == 1792bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 2052bv64) == 1bv8); free ensures (memory_load8_le(mem, 2053bv64) == 0bv8); free ensures (memory_load8_le(mem, 2054bv64) == 2bv8); free ensures (memory_load8_le(mem, 2055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69576bv64) == 52bv8); - free ensures (memory_load8_le(mem, 69577bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69578bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69579bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69580bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69581bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69582bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69583bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69672bv64) == 40bv8); - free ensures (memory_load8_le(mem, 69673bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69674bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69675bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69676bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69677bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69678bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69679bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69048bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69049bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69050bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69051bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69052bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69053bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69054bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69055bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69568bv64) == 56bv8); - free ensures (memory_load8_le(mem, 69569bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69570bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69571bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69572bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69573bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69574bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69575bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69056bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69057bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69058bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69059bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69060bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69061bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69062bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69063bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69576bv64) == 69684bv64); + free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); + free ensures (memory_load64_le(mem, 69048bv64) == 1872bv64); + free ensures (memory_load64_le(mem, 69568bv64) == 69688bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -401,7 +304,7 @@ procedure main() goto l000003ab; lmain_goto_l000003ae: assume {:captureState "lmain_goto_l000003ae"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000003ae; l000003b1_goto_l000003b9: assume {:captureState "l000003b1_goto_l000003b9"} true; @@ -409,7 +312,7 @@ procedure main() goto l000003b9; l000003b1_goto_l00000481: assume {:captureState "l000003b1_goto_l00000481"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000481; l000003b9_goto_l000003eb: assume {:captureState "l000003b9_goto_l000003eb"} true; @@ -417,7 +320,7 @@ procedure main() goto l000003eb; l000003b9_goto_l000003ee: assume {:captureState "l000003b9_goto_l000003ee"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l000003ee; l000003f1_goto_l000003f9: assume {:captureState "l000003f1_goto_l000003f9"} true; @@ -425,7 +328,7 @@ procedure main() goto l000003f9; l000003f1_goto_l0000046c: assume {:captureState "l000003f1_goto_l0000046c"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l0000046c; l000003f9_goto_l00000424: assume {:captureState "l000003f9_goto_l00000424"} true; @@ -433,7 +336,7 @@ procedure main() goto l00000424; l000003f9_goto_l00000427: assume {:captureState "l000003f9_goto_l00000427"} true; - assume (bvcomp1(ZF, 1bv1) == 0bv1); + assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); goto l00000427; l0000042a_goto_l00000432: assume {:captureState "l0000042a_goto_l00000432"} true; @@ -441,6 +344,8 @@ procedure main() goto l00000432; l0000042a_goto_l00000449: assume {:captureState "l0000042a_goto_l00000449"} true; - assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); + assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); goto l00000449; } + + diff --git a/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected index fa0a032fa..5bb1b4eeb 100644 --- a/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected @@ -1,47 +1,78 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -50,145 +81,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1956bv64) == 1bv8); free requires (memory_load8_le(mem, 1957bv64) == 0bv8); free requires (memory_load8_le(mem, 1958bv64) == 2bv8); free requires (memory_load8_le(mem, 1959bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1956bv64) == 1bv8); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -284,7 +228,7 @@ procedure main() goto l00000381; lmain_goto_l00000414: assume {:captureState "lmain_goto_l00000414"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000414; l00000381_goto_l000003b2: assume {:captureState "l00000381_goto_l000003b2"} true; @@ -292,7 +236,7 @@ procedure main() goto l000003b2; l00000381_goto_l00000407: assume {:captureState "l00000381_goto_l00000407"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000407; l000003b2_goto_l000003d8: assume {:captureState "l000003b2_goto_l000003d8"} true; @@ -300,6 +244,8 @@ procedure main() goto l000003d8; l000003b2_goto_l000003ed: assume {:captureState "l000003b2_goto_l000003ed"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000003ed; } + + diff --git a/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected index ccd235a1c..526812505 100644 --- a/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected @@ -1,47 +1,78 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (gammaMap[bvadd64(index, 3bv64)]&&(gammaMap[bvadd64(index, 2bv64)]&&(gammaMap[bvadd64(index, 1bv64)]&&gammaMap[index]))) } + function {:extern} gamma_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + +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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -50,145 +81,58 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 1956bv64) == 1bv8); free requires (memory_load8_le(mem, 1957bv64) == 0bv8); free requires (memory_load8_le(mem, 1958bv64) == 2bv8); free requires (memory_load8_le(mem, 1959bv64) == 0bv8); - free requires (memory_load8_le(mem, 69016bv64) == 16bv8); - free requires (memory_load8_le(mem, 69017bv64) == 7bv8); - free requires (memory_load8_le(mem, 69018bv64) == 0bv8); - free requires (memory_load8_le(mem, 69019bv64) == 0bv8); - free requires (memory_load8_le(mem, 69020bv64) == 0bv8); - free requires (memory_load8_le(mem, 69021bv64) == 0bv8); - free requires (memory_load8_le(mem, 69022bv64) == 0bv8); - free requires (memory_load8_le(mem, 69023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69024bv64) == 192bv8); - free requires (memory_load8_le(mem, 69025bv64) == 6bv8); - free requires (memory_load8_le(mem, 69026bv64) == 0bv8); - free requires (memory_load8_le(mem, 69027bv64) == 0bv8); - free requires (memory_load8_le(mem, 69028bv64) == 0bv8); - free requires (memory_load8_le(mem, 69029bv64) == 0bv8); - free requires (memory_load8_le(mem, 69030bv64) == 0bv8); - free requires (memory_load8_le(mem, 69031bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 20bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69016bv64) == 1808bv64); + free requires (memory_load64_le(mem, 69024bv64) == 1728bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1812bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 1956bv64) == 1bv8); free ensures (memory_load8_le(mem, 1957bv64) == 0bv8); free ensures (memory_load8_le(mem, 1958bv64) == 2bv8); free ensures (memory_load8_le(mem, 1959bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69016bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69017bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69018bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69024bv64) == 192bv8); - free ensures (memory_load8_le(mem, 69025bv64) == 6bv8); - free ensures (memory_load8_le(mem, 69026bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69016bv64) == 1808bv64); + free ensures (memory_load64_le(mem, 69024bv64) == 1728bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -284,7 +228,7 @@ procedure main() goto l00000a79; lmain_goto_l00000b0c: assume {:captureState "lmain_goto_l00000b0c"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000b0c; l00000a79_goto_l00000aaa: assume {:captureState "l00000a79_goto_l00000aaa"} true; @@ -292,7 +236,7 @@ procedure main() goto l00000aaa; l00000a79_goto_l00000aff: assume {:captureState "l00000a79_goto_l00000aff"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000aff; l00000aaa_goto_l00000ad0: assume {:captureState "l00000aaa_goto_l00000ad0"} true; @@ -300,6 +244,8 @@ procedure main() goto l00000ad0; l00000aaa_goto_l00000ae5: assume {:captureState "l00000aaa_goto_l00000ae5"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000ae5; } + + diff --git a/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected index f2b82be6a..705cdf81b 100644 --- a/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected @@ -1,55 +1,83 @@ var {:extern} Gamma_R0: bool; + var {:extern} Gamma_R1: bool; + var {:extern} Gamma_R31: bool; + var {:extern} Gamma_mem: [bv64]bool; + var {:extern} Gamma_stack: [bv64]bool; + var {:extern} R0: bv64; + var {:extern} R1: bv64; + var {:extern} R31: bv64; + var {:extern} mem: [bv64]bv8; + var {:extern} stack: [bv64]bv8; + function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } + function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); + function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); + function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); + function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); + function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); + 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]))) + (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]))))))) + (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_store32(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] } + function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) + (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) } + 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } + function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); + function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); + procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -58,193 +86,64 @@ procedure {:extern} rely(); free ensures (memory_load8_le(mem, 2021bv64) == 0bv8); free ensures (memory_load8_le(mem, 2022bv64) == 2bv8); free ensures (memory_load8_le(mem, 2023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); - -procedure {:extern} rely_transitive() + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + + + +procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); ensures (Gamma_mem == old(Gamma_mem)); + +implementation {:extern} rely_transitive() { call rely(); call rely(); } + procedure {:extern} rely_reflexive(); + + procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; -procedure main() + + +procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; - free requires (memory_load8_le(mem, 69632bv64) == 0bv8); - free requires (memory_load8_le(mem, 69633bv64) == 0bv8); - free requires (memory_load8_le(mem, 69634bv64) == 0bv8); - free requires (memory_load8_le(mem, 69635bv64) == 0bv8); - free requires (memory_load8_le(mem, 69636bv64) == 0bv8); - free requires (memory_load8_le(mem, 69637bv64) == 0bv8); - free requires (memory_load8_le(mem, 69638bv64) == 0bv8); - free requires (memory_load8_le(mem, 69639bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); + free requires (memory_load64_le(mem, 69632bv64) == 0bv64); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); free requires (memory_load8_le(mem, 2020bv64) == 1bv8); free requires (memory_load8_le(mem, 2021bv64) == 0bv8); free requires (memory_load8_le(mem, 2022bv64) == 2bv8); free requires (memory_load8_le(mem, 2023bv64) == 0bv8); - free requires (memory_load8_le(mem, 69640bv64) == 8bv8); - free requires (memory_load8_le(mem, 69641bv64) == 16bv8); - free requires (memory_load8_le(mem, 69642bv64) == 1bv8); - free requires (memory_load8_le(mem, 69643bv64) == 0bv8); - free requires (memory_load8_le(mem, 69644bv64) == 0bv8); - free requires (memory_load8_le(mem, 69645bv64) == 0bv8); - free requires (memory_load8_le(mem, 69646bv64) == 0bv8); - free requires (memory_load8_le(mem, 69647bv64) == 0bv8); - free requires (memory_load8_le(mem, 69616bv64) == 84bv8); - free requires (memory_load8_le(mem, 69617bv64) == 7bv8); - free requires (memory_load8_le(mem, 69618bv64) == 0bv8); - free requires (memory_load8_le(mem, 69619bv64) == 0bv8); - free requires (memory_load8_le(mem, 69620bv64) == 0bv8); - free requires (memory_load8_le(mem, 69621bv64) == 0bv8); - free requires (memory_load8_le(mem, 69622bv64) == 0bv8); - free requires (memory_load8_le(mem, 69623bv64) == 0bv8); - free requires (memory_load8_le(mem, 69600bv64) == 20bv8); - free requires (memory_load8_le(mem, 69601bv64) == 16bv8); - free requires (memory_load8_le(mem, 69602bv64) == 1bv8); - free requires (memory_load8_le(mem, 69603bv64) == 0bv8); - free requires (memory_load8_le(mem, 69604bv64) == 0bv8); - free requires (memory_load8_le(mem, 69605bv64) == 0bv8); - free requires (memory_load8_le(mem, 69606bv64) == 0bv8); - free requires (memory_load8_le(mem, 69607bv64) == 0bv8); - free requires (memory_load8_le(mem, 69008bv64) == 0bv8); - free requires (memory_load8_le(mem, 69009bv64) == 7bv8); - free requires (memory_load8_le(mem, 69010bv64) == 0bv8); - free requires (memory_load8_le(mem, 69011bv64) == 0bv8); - free requires (memory_load8_le(mem, 69012bv64) == 0bv8); - free requires (memory_load8_le(mem, 69013bv64) == 0bv8); - free requires (memory_load8_le(mem, 69014bv64) == 0bv8); - free requires (memory_load8_le(mem, 69015bv64) == 0bv8); - free requires (memory_load8_le(mem, 69592bv64) == 24bv8); - free requires (memory_load8_le(mem, 69593bv64) == 16bv8); - free requires (memory_load8_le(mem, 69594bv64) == 1bv8); - free requires (memory_load8_le(mem, 69595bv64) == 0bv8); - free requires (memory_load8_le(mem, 69596bv64) == 0bv8); - free requires (memory_load8_le(mem, 69597bv64) == 0bv8); - free requires (memory_load8_le(mem, 69598bv64) == 0bv8); - free requires (memory_load8_le(mem, 69599bv64) == 0bv8); - free requires (memory_load8_le(mem, 69000bv64) == 80bv8); - free requires (memory_load8_le(mem, 69001bv64) == 7bv8); - free requires (memory_load8_le(mem, 69002bv64) == 0bv8); - free requires (memory_load8_le(mem, 69003bv64) == 0bv8); - free requires (memory_load8_le(mem, 69004bv64) == 0bv8); - free requires (memory_load8_le(mem, 69005bv64) == 0bv8); - free requires (memory_load8_le(mem, 69006bv64) == 0bv8); - free requires (memory_load8_le(mem, 69007bv64) == 0bv8); + free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); + free requires (memory_load64_le(mem, 69616bv64) == 1876bv64); + free requires (memory_load64_le(mem, 69600bv64) == 69652bv64); + free requires (memory_load64_le(mem, 69008bv64) == 1792bv64); + free requires (memory_load64_le(mem, 69592bv64) == 69656bv64); + free requires (memory_load64_le(mem, 69000bv64) == 1872bv64); free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R31 == old(R31)); free ensures (memory_load8_le(mem, 2020bv64) == 1bv8); free ensures (memory_load8_le(mem, 2021bv64) == 0bv8); free ensures (memory_load8_le(mem, 2022bv64) == 2bv8); free ensures (memory_load8_le(mem, 2023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69640bv64) == 8bv8); - free ensures (memory_load8_le(mem, 69641bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69642bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69643bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69644bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69645bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69646bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69647bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69616bv64) == 84bv8); - free ensures (memory_load8_le(mem, 69617bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69618bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69619bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69620bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69621bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69622bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69623bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69600bv64) == 20bv8); - free ensures (memory_load8_le(mem, 69601bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69602bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69603bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69604bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69605bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69606bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69607bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69008bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69009bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69010bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69011bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69012bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69013bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69014bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69015bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69592bv64) == 24bv8); - free ensures (memory_load8_le(mem, 69593bv64) == 16bv8); - free ensures (memory_load8_le(mem, 69594bv64) == 1bv8); - free ensures (memory_load8_le(mem, 69595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69596bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69597bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69598bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69599bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69000bv64) == 80bv8); - free ensures (memory_load8_le(mem, 69001bv64) == 7bv8); - free ensures (memory_load8_le(mem, 69002bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69003bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69004bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69005bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69006bv64) == 0bv8); - free ensures (memory_load8_le(mem, 69007bv64) == 0bv8); + free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); + free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); + free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); + free ensures (memory_load64_le(mem, 69008bv64) == 1792bv64); + free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); + free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); + +implementation main() { var #4: bv32; var #5: bv32; @@ -344,7 +243,7 @@ procedure main() goto l00000383; lmain_goto_l00000418: assume {:captureState "lmain_goto_l00000418"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l00000418; l00000383_goto_l000003b5: assume {:captureState "l00000383_goto_l000003b5"} true; @@ -352,7 +251,7 @@ procedure main() goto l000003b5; l00000383_goto_l0000040b: assume {:captureState "l00000383_goto_l0000040b"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l0000040b; l000003b5_goto_l000003db: assume {:captureState "l000003b5_goto_l000003db"} true; @@ -360,6 +259,8 @@ procedure main() goto l000003db; l000003b5_goto_l000003f0: assume {:captureState "l000003b5_goto_l000003f0"} true; - assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); + assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); goto l000003f0; } + + From bd1e0055549355cf79ab90eb0bd12f6d2502a969 Mon Sep 17 00:00:00 2001 From: l-kent Date: Thu, 11 Jan 2024 13:46:13 +1000 Subject: [PATCH 21/36] fix not putting spaces before/after infix operators --- src/main/scala/boogie/BExpr.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/boogie/BExpr.scala b/src/main/scala/boogie/BExpr.scala index f0116be7c..d9ff756b5 100644 --- a/src/main/scala/boogie/BExpr.scala +++ b/src/main/scala/boogie/BExpr.scala @@ -337,7 +337,7 @@ case class BinaryBExpr(op: BinOp, arg1: BExpr, arg2: BExpr) extends BExpr { while (traversalQueue.nonEmpty) { val next = traversalQueue.pop() - def infix(b: BinaryBExpr): Unit = traversalQueue.pushAll(Seq("(", b.arg1, b.op, b.arg2, ")").reverse) + def infix(b: BinaryBExpr): Unit = traversalQueue.pushAll(Seq("(", b.arg1, s" ${b.op} ", b.arg2, ")").reverse) def prefix(b: BinaryBExpr): Unit = traversalQueue.pushAll(Seq(s"bv${b.op}${b.inSize}(", b.arg1, ",", b.arg2, ")").reverse) next match From ec98020b7daf84223e2ea7d0a0551cffa934ee94 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Fri, 12 Jan 2024 11:28:45 +1000 Subject: [PATCH 22/36] fix verify and defaults --- src/main/scala/Main.scala | 2 +- src/test/make/lift-directories.mk | 4 ++-- src/test/make/lift.mk | 18 ++++++++++++------ 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/scala/Main.scala b/src/main/scala/Main.scala index c26c789bb..3fb3f0139 100644 --- a/src/main/scala/Main.scala +++ b/src/main/scala/Main.scala @@ -42,7 +42,7 @@ object Main { analysisResultsDot: Option[String] ) - def main(args: Iterable[String]): Unit = { + def main(args: Array[String]): Unit = { val parser = ParserForClass[Config] val parsed = parser.constructEither(args.toSeq) diff --git a/src/test/make/lift-directories.mk b/src/test/make/lift-directories.mk index 53fd2971a..939d40fa4 100644 --- a/src/test/make/lift-directories.mk +++ b/src/test/make/lift-directories.mk @@ -9,7 +9,7 @@ NAME=$(notdir $(shell pwd)) GIT_ROOT?=$(realpath ../../../../) GCC ?= aarch64-linux-gnu-gcc -CLANG ?= clang +CLANG ?= clang-15 CC ?= $(GCC) #CFLAGS=-fno-pic -fno-plt TARGET=aarch64-linux-gnu @@ -21,7 +21,7 @@ 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-use-lambda-stores +BASIL_FLAGS ?= #BOOGIE_FLAGS=/proverOpt:O:smt.array.extensional=false BOOGIE_FLAGS ?= /useArrayAxioms diff --git a/src/test/make/lift.mk b/src/test/make/lift.mk index ef0392496..cf1044268 100644 --- a/src/test/make/lift.mk +++ b/src/test/make/lift.mk @@ -5,10 +5,14 @@ $(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) - echo $(BASIL) - java -jar $(BASIL) $(BASIL_FLAGS) --adt $(NAME).adt --relf $(NAME).relf -o $(NAME).bpl --spec $(SPEC) + java -jar $(BASIL) $(BASIL_FLAGS) --adt $(NAME).adt --relf $(NAME).relf -o $(NAME).bpl $(BASIL_SPECARG) .PHONY=$(BASIL) $(BASIL): @@ -27,14 +31,16 @@ 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 +cleanall: clean cleanlift cleanbin cleantest + +cleantest: + rm -rf $(NAME).bpl + rm -rf $(NAME)_result.txt cleanbin: rm -rf a.out -clean: cleanbin - rm -rf $(NAME).bpl - rm -rf $(NAME)_result.txt +clean: cleanlift cleanbin cleanlift: rm -rf $(NAME).adt From 7e04ec84288248f8c9e09dc8893d8ff4420dcee2 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Fri, 12 Jan 2024 11:59:07 +1000 Subject: [PATCH 23/36] fix extra whitespace --- src/main/scala/boogie/BProgram.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/scala/boogie/BProgram.scala b/src/main/scala/boogie/BProgram.scala index 07827e864..2df7a1f8e 100644 --- a/src/main/scala/boogie/BProgram.scala +++ b/src/main/scala/boogie/BProgram.scala @@ -7,7 +7,6 @@ case class BProgram(declarations: List[BDeclaration]) { def writeToString(w: Writer): Unit = { declarations.foreach(x => { x.writeToString(w) - w.append(System.lineSeparator()) }) } } From 897b10f08f8f1800c7026111dcc0424960a86775 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Fri, 12 Jan 2024 12:08:35 +1000 Subject: [PATCH 24/36] update expected --- .../clang/arrays_simple.expected | 30 +--------- .../clang_O2/arrays_simple.expected | 15 +---- .../arrays_simple.expected | 30 +--------- .../clang_pic/arrays_simple.expected | 30 +--------- .../gcc_O2/arrays_simple.expected | 15 +---- .../clang/basic_arrays_read.expected | 31 +--------- .../clang_O2/basic_arrays_read.expected | 23 +------ .../basic_arrays_read.expected | 31 +--------- .../clang_pic/basic_arrays_read.expected | 34 ++--------- .../gcc/basic_arrays_read.expected | 25 +------- .../gcc_O2/basic_arrays_read.expected | 23 +------ .../basic_arrays_read.expected | 25 +------- .../gcc_pic/basic_arrays_read.expected | 28 ++------- .../clang/basic_arrays_write.expected | 33 +--------- .../clang_O2/basic_arrays_write.expected | 26 +------- .../basic_arrays_write.expected | 33 +--------- .../clang_pic/basic_arrays_write.expected | 36 ++--------- .../gcc/basic_arrays_write.expected | 31 +--------- .../gcc_O2/basic_arrays_write.expected | 26 +------- .../basic_arrays_write.expected | 31 +--------- .../gcc_pic/basic_arrays_write.expected | 34 ++--------- .../clang/basic_assign_assign.expected | 25 +------- .../clang_O2/basic_assign_assign.expected | 25 +------- .../basic_assign_assign.expected | 25 +------- .../clang_pic/basic_assign_assign.expected | 28 +-------- .../gcc/basic_assign_assign.expected | 23 +------ .../gcc_O2/basic_assign_assign.expected | 25 +------- .../basic_assign_assign.expected | 23 +------ .../gcc_pic/basic_assign_assign.expected | 26 +------- .../clang/basic_assign_increment.expected | 30 +--------- .../clang_O2/basic_assign_increment.expected | 30 +--------- .../basic_assign_increment.expected | 30 +--------- .../clang_pic/basic_assign_increment.expected | 33 ++-------- .../gcc/basic_assign_increment.expected | 28 +-------- .../gcc_O2/basic_assign_increment.expected | 30 +--------- .../basic_assign_increment.expected | 28 +-------- .../gcc_pic/basic_assign_increment.expected | 31 ++-------- .../clang/basic_function_call_caller.expected | 44 ++------------ .../basic_function_call_caller.expected | 32 +--------- .../basic_function_call_caller.expected | 44 ++------------ .../basic_function_call_caller.expected | 44 ++------------ .../gcc/basic_function_call_caller.expected | 42 ++----------- .../basic_function_call_caller.expected | 32 +--------- .../basic_function_call_caller.expected | 42 ++----------- .../basic_function_call_caller.expected | 42 ++----------- .../clang/basic_function_call_reader.expected | 40 +------------ .../basic_function_call_reader.expected | 36 +---------- .../basic_function_call_reader.expected | 40 +------------ .../basic_function_call_reader.expected | 43 ++----------- .../gcc/basic_function_call_reader.expected | 38 +----------- .../basic_function_call_reader.expected | 27 +-------- .../basic_function_call_reader.expected | 38 +----------- .../basic_function_call_reader.expected | 41 ++----------- .../clang/basic_lock_read.expected | 40 +------------ .../clang_O2/basic_lock_read.expected | 29 +-------- .../basic_lock_read.expected | 40 +------------ .../clang_pic/basic_lock_read.expected | 43 ++----------- .../gcc/basic_lock_read.expected | 38 +----------- .../gcc_O2/basic_lock_read.expected | 30 +--------- .../basic_lock_read.expected | 38 +----------- .../gcc_pic/basic_lock_read.expected | 41 ++----------- .../clang/basic_lock_security_read.expected | 40 +------------ .../basic_lock_security_read.expected | 36 +---------- .../basic_lock_security_read.expected | 40 +------------ .../basic_lock_security_read.expected | 43 ++----------- .../gcc/basic_lock_security_read.expected | 38 +----------- .../gcc_O2/basic_lock_security_read.expected | 30 +--------- .../basic_lock_security_read.expected | 38 +----------- .../gcc_pic/basic_lock_security_read.expected | 41 ++----------- .../clang/basic_lock_security_write.expected | 36 +---------- .../basic_lock_security_write.expected | 29 +-------- .../basic_lock_security_write.expected | 36 +---------- .../basic_lock_security_write.expected | 39 ++---------- .../gcc/basic_lock_security_write.expected | 32 +--------- .../gcc_O2/basic_lock_security_write.expected | 29 +-------- .../basic_lock_security_write.expected | 32 +--------- .../basic_lock_security_write.expected | 35 ++--------- .../clang/basic_lock_unlock.expected | 26 +------- .../clang_O2/basic_lock_unlock.expected | 28 +-------- .../basic_lock_unlock.expected | 26 +------- .../clang_pic/basic_lock_unlock.expected | 29 +-------- .../gcc/basic_lock_unlock.expected | 24 +------- .../gcc_O2/basic_lock_unlock.expected | 28 +-------- .../basic_lock_unlock.expected | 24 +------- .../gcc_pic/basic_lock_unlock.expected | 27 +-------- .../clang/basic_loop_assign.expected | 27 +-------- .../clang_O2/basic_loop_assign.expected | 27 +-------- .../basic_loop_assign.expected | 27 +-------- .../clang_pic/basic_loop_assign.expected | 30 +--------- .../gcc/basic_loop_assign.expected | 25 +------- .../gcc_O2/basic_loop_assign.expected | 27 +-------- .../basic_loop_assign.expected | 25 +------- .../gcc_pic/basic_loop_assign.expected | 28 +-------- .../clang/basic_operation_evaluation.expected | 50 +--------------- .../basic_operation_evaluation.expected | 15 +---- .../basic_operation_evaluation.expected | 50 +--------------- .../basic_operation_evaluation.expected | 50 +--------------- .../gcc/basic_operation_evaluation.expected | 42 +------------ .../basic_operation_evaluation.expected | 15 +---- .../basic_operation_evaluation.expected | 42 +------------ .../basic_operation_evaluation.expected | 42 +------------ .../clang/basic_sec_policy_read.expected | 40 +------------ .../clang_O2/basic_sec_policy_read.expected | 36 +---------- .../basic_sec_policy_read.expected | 40 +------------ .../clang_pic/basic_sec_policy_read.expected | 43 ++----------- .../gcc/basic_sec_policy_read.expected | 38 +----------- .../gcc_O2/basic_sec_policy_read.expected | 30 +--------- .../basic_sec_policy_read.expected | 38 +----------- .../gcc_pic/basic_sec_policy_read.expected | 41 ++----------- .../clang/basic_sec_policy_write.expected | 36 +---------- .../clang_O2/basic_sec_policy_write.expected | 31 +--------- .../basic_sec_policy_write.expected | 36 +---------- .../clang_pic/basic_sec_policy_write.expected | 39 ++---------- .../gcc/basic_sec_policy_write.expected | 32 +--------- .../gcc_O2/basic_sec_policy_write.expected | 31 +--------- .../basic_sec_policy_write.expected | 32 +--------- .../gcc_pic/basic_sec_policy_write.expected | 35 ++--------- .../clang/basicassign_gamma0.expected | 30 +--------- .../clang_O2/basicassign_gamma0.expected | 30 +--------- .../basicassign_gamma0.expected | 30 +--------- .../clang_pic/basicassign_gamma0.expected | 33 ++-------- .../gcc/basicassign_gamma0.expected | 28 +-------- .../gcc_O2/basicassign_gamma0.expected | 30 +--------- .../basicassign_gamma0.expected | 28 +-------- .../gcc_pic/basicassign_gamma0.expected | 31 ++-------- .../basicfree/clang/basicfree.expected | 41 +------------ .../basicfree/clang_O2/basicfree.expected | 13 +--- .../clang_no_plt_no_pic/basicfree.expected | 41 +------------ .../basicfree/clang_pic/basicfree.expected | 41 +------------ .../correct/basicfree/gcc/basicfree.expected | 39 +----------- .../basicfree/gcc_O2/basicfree.expected | 13 +--- .../gcc_no_plt_no_pic/basicfree.expected | 39 +----------- .../basicfree/gcc_pic/basicfree.expected | 39 +----------- src/test/correct/cjump/clang/cjump.expected | 42 +------------ .../correct/cjump/clang_O2/cjump.expected | 30 +--------- .../cjump/clang_no_plt_no_pic/cjump.expected | 42 +------------ .../correct/cjump/clang_pic/cjump.expected | 45 ++------------ src/test/correct/cjump/gcc/cjump.expected | 36 +---------- src/test/correct/cjump/gcc_O2/cjump.expected | 28 +-------- .../cjump/gcc_no_plt_no_pic/cjump.expected | 36 +---------- src/test/correct/cjump/gcc_pic/cjump.expected | 39 ++---------- .../correct/function/clang/function.expected | 40 +------------ .../function/clang_O2/function.expected | 30 +--------- .../clang_no_plt_no_pic/function.expected | 40 +------------ .../function/clang_pic/function.expected | 40 +------------ .../correct/function/gcc/function.expected | 39 +----------- .../correct/function/gcc_O2/function.expected | 28 +-------- .../gcc_no_plt_no_pic/function.expected | 39 +----------- .../function/gcc_pic/function.expected | 39 +----------- .../function1/clang/function1.expected | 60 ++----------------- .../function1/clang_O2/function1.expected | 48 +-------------- .../clang_no_plt_no_pic/function1.expected | 60 ++----------------- .../function1/clang_pic/function1.expected | 60 ++----------------- .../correct/function1/gcc/function1.expected | 55 ++--------------- .../function1/gcc_O2/function1.expected | 45 +------------- .../gcc_no_plt_no_pic/function1.expected | 55 ++--------------- .../function1/gcc_pic/function1.expected | 55 ++--------------- .../clang/functions_with_params.expected | 41 ++----------- .../clang_O2/functions_with_params.expected | 15 +---- .../functions_with_params.expected | 41 ++----------- .../clang_pic/functions_with_params.expected | 41 ++----------- .../gcc/functions_with_params.expected | 39 ++---------- .../gcc_O2/functions_with_params.expected | 15 +---- .../functions_with_params.expected | 39 ++---------- .../gcc_pic/functions_with_params.expected | 39 ++---------- .../ifbranches/clang/ifbranches.expected | 41 +------------ .../ifbranches/clang_O2/ifbranches.expected | 25 +------- .../clang_no_plt_no_pic/ifbranches.expected | 41 +------------ .../ifbranches/clang_pic/ifbranches.expected | 41 +------------ .../ifbranches/gcc/ifbranches.expected | 39 +----------- .../ifbranches/gcc_O2/ifbranches.expected | 23 +------ .../gcc_no_plt_no_pic/ifbranches.expected | 39 +----------- .../ifbranches/gcc_pic/ifbranches.expected | 39 +----------- .../correct/ifglobal/clang/ifglobal.expected | 41 +------------ .../ifglobal/clang_O2/ifglobal.expected | 30 +--------- .../clang_no_plt_no_pic/ifglobal.expected | 41 +------------ .../ifglobal/clang_pic/ifglobal.expected | 44 ++------------ .../correct/ifglobal/gcc/ifglobal.expected | 35 +---------- .../correct/ifglobal/gcc_O2/ifglobal.expected | 29 +-------- .../gcc_no_plt_no_pic/ifglobal.expected | 35 +---------- .../ifglobal/gcc_pic/ifglobal.expected | 38 ++---------- .../clang_O2/indirect_call.expected | 33 +--------- .../gcc_O2/indirect_call.expected | 34 +---------- .../clang/initialisation.expected | 52 ++-------------- .../clang_O2/initialisation.expected | 54 ++--------------- .../initialisation.expected | 52 ++-------------- .../clang_pic/initialisation.expected | 50 ++-------------- .../gcc/initialisation.expected | 40 ++----------- .../gcc_O2/initialisation.expected | 50 ++-------------- .../gcc_no_plt_no_pic/initialisation.expected | 40 ++----------- .../gcc_pic/initialisation.expected | 40 ++----------- .../jumptable/clang_O2/jumptable.expected | 31 +--------- .../jumptable/gcc_O2/jumptable.expected | 45 ++------------ .../jumptable3/gcc/jumptable3.expected | 51 ++-------------- .../jumptable3/gcc_O2/jumptable3.expected | 35 +---------- .../gcc_no_plt_no_pic/jumptable3.expected | 51 ++-------------- .../jumptable3/gcc_pic/jumptable3.expected | 51 ++-------------- .../clang/malloc_with_local.expected | 55 ++--------------- .../clang_O2/malloc_with_local.expected | 35 +---------- .../malloc_with_local.expected | 55 ++--------------- .../clang_pic/malloc_with_local.expected | 55 ++--------------- .../gcc/malloc_with_local.expected | 51 ++-------------- .../gcc_O2/malloc_with_local.expected | 37 +----------- .../malloc_with_local.expected | 51 ++-------------- .../gcc_pic/malloc_with_local.expected | 51 ++-------------- .../clang/malloc_with_local2.expected | 55 ++--------------- .../clang_O2/malloc_with_local2.expected | 35 +---------- .../malloc_with_local2.expected | 55 ++--------------- .../clang_pic/malloc_with_local2.expected | 55 ++--------------- .../gcc/malloc_with_local2.expected | 51 ++-------------- .../gcc_O2/malloc_with_local2.expected | 37 +----------- .../malloc_with_local2.expected | 51 ++-------------- .../gcc_pic/malloc_with_local2.expected | 51 ++-------------- .../clang/malloc_with_local3.expected | 57 ++---------------- .../clang_O2/malloc_with_local3.expected | 35 +---------- .../malloc_with_local3.expected | 57 ++---------------- .../clang_pic/malloc_with_local3.expected | 57 ++---------------- .../gcc/malloc_with_local3.expected | 53 ++-------------- .../gcc_O2/malloc_with_local3.expected | 51 +--------------- .../malloc_with_local3.expected | 53 ++-------------- .../gcc_pic/malloc_with_local3.expected | 53 ++-------------- .../multi_malloc/clang/multi_malloc.expected | 55 ++--------------- .../clang_O2/multi_malloc.expected | 35 +---------- .../clang_no_plt_no_pic/multi_malloc.expected | 55 ++--------------- .../clang_pic/multi_malloc.expected | 55 ++--------------- .../multi_malloc/gcc/multi_malloc.expected | 51 ++-------------- .../multi_malloc/gcc_O2/multi_malloc.expected | 36 +---------- .../gcc_no_plt_no_pic/multi_malloc.expected | 51 ++-------------- .../gcc_pic/multi_malloc.expected | 51 ++-------------- .../correct/nestedif/clang/nestedif.expected | 38 +----------- .../nestedif/clang_O2/nestedif.expected | 15 +---- .../clang_no_plt_no_pic/nestedif.expected | 38 +----------- .../nestedif/clang_pic/nestedif.expected | 38 +----------- .../correct/nestedif/gcc/nestedif.expected | 36 +---------- .../correct/nestedif/gcc_O2/nestedif.expected | 15 +---- .../gcc_no_plt_no_pic/nestedif.expected | 36 +---------- .../nestedif/gcc_pic/nestedif.expected | 36 +---------- .../clang/no_interference_update_x.expected | 26 +------- .../no_interference_update_x.expected | 26 +------- .../no_interference_update_x.expected | 26 +------- .../no_interference_update_x.expected | 29 +-------- .../gcc/no_interference_update_x.expected | 24 +------- .../gcc_O2/no_interference_update_x.expected | 26 +------- .../no_interference_update_x.expected | 24 +------- .../gcc_pic/no_interference_update_x.expected | 27 +-------- .../clang/no_interference_update_y.expected | 26 +------- .../no_interference_update_y.expected | 26 +------- .../no_interference_update_y.expected | 26 +------- .../no_interference_update_y.expected | 29 +-------- .../gcc/no_interference_update_y.expected | 24 +------- .../gcc_O2/no_interference_update_y.expected | 26 +------- .../no_interference_update_y.expected | 24 +------- .../gcc_pic/no_interference_update_y.expected | 27 +-------- .../secret_write/clang/secret_write.expected | 36 +---------- .../clang_O2/secret_write.expected | 34 +---------- .../clang_no_plt_no_pic/secret_write.expected | 36 +---------- .../clang_pic/secret_write.expected | 39 ++---------- .../secret_write/gcc/secret_write.expected | 32 +--------- .../secret_write/gcc_O2/secret_write.expected | 34 +---------- .../gcc_no_plt_no_pic/secret_write.expected | 32 +--------- .../gcc_pic/secret_write.expected | 35 ++--------- .../simple_jump/clang/simple_jump.expected | 38 +----------- .../simple_jump/clang_O2/simple_jump.expected | 15 +---- .../clang_no_plt_no_pic/simple_jump.expected | 38 +----------- .../clang_pic/simple_jump.expected | 38 +----------- .../simple_jump/gcc/simple_jump.expected | 36 +---------- .../simple_jump/gcc_O2/simple_jump.expected | 15 +---- .../gcc_no_plt_no_pic/simple_jump.expected | 36 +---------- .../simple_jump/gcc_pic/simple_jump.expected | 36 +---------- src/test/correct/switch/clang/switch.expected | 36 +---------- .../correct/switch/clang_O2/switch.expected | 13 +--- .../clang_no_plt_no_pic/switch.expected | 36 +---------- .../correct/switch/clang_pic/switch.expected | 36 +---------- src/test/correct/switch/gcc/switch.expected | 36 +---------- .../correct/switch/gcc_O2/switch.expected | 13 +--- .../switch/gcc_no_plt_no_pic/switch.expected | 36 +---------- .../correct/switch/gcc_pic/switch.expected | 36 +---------- .../correct/switch2/clang_O2/switch2.expected | 13 +--- src/test/correct/switch2/gcc/switch2.expected | 48 ++------------- .../correct/switch2/gcc_O2/switch2.expected | 13 +--- .../gcc_no_plt_no_pic/switch2.expected | 48 ++------------- .../correct/switch2/gcc_pic/switch2.expected | 48 ++------------- .../correct/syscall/clang/syscall.expected | 44 ++------------ .../clang_no_plt_no_pic/syscall.expected | 44 ++------------ .../syscall/clang_pic/syscall.expected | 44 ++------------ src/test/correct/syscall/gcc/syscall.expected | 44 ++------------ .../correct/syscall/gcc_O2/syscall.expected | 17 +----- .../gcc_no_plt_no_pic/syscall.expected | 44 ++------------ .../correct/syscall/gcc_pic/syscall.expected | 44 ++------------ .../clang/using_gamma_conditional.expected | 40 +------------ .../clang_O2/using_gamma_conditional.expected | 34 +---------- .../using_gamma_conditional.expected | 40 +------------ .../using_gamma_conditional.expected | 43 ++----------- .../gcc/using_gamma_conditional.expected | 32 +--------- .../gcc_O2/using_gamma_conditional.expected | 32 +--------- .../using_gamma_conditional.expected | 32 +--------- .../gcc_pic/using_gamma_conditional.expected | 35 ++--------- .../clang/using_gamma_write_z.expected | 29 +-------- .../clang_O2/using_gamma_write_z.expected | 29 +-------- .../using_gamma_write_z.expected | 29 +-------- .../clang_pic/using_gamma_write_z.expected | 32 ++-------- .../gcc/using_gamma_write_z.expected | 27 +-------- .../gcc_O2/using_gamma_write_z.expected | 29 +-------- .../using_gamma_write_z.expected | 27 +-------- .../gcc_pic/using_gamma_write_z.expected | 30 ++-------- .../basicassign/clang/basicassign.expected | 35 +---------- .../basicassign/clang_O2/basicassign.expected | 33 +--------- .../clang_no_plt_no_pic/basicassign.expected | 35 +---------- .../clang_pic/basicassign.expected | 38 ++---------- .../basicassign/gcc/basicassign.expected | 29 +-------- .../basicassign/gcc_O2/basicassign.expected | 31 +--------- .../gcc_no_plt_no_pic/basicassign.expected | 29 +-------- .../basicassign/gcc_pic/basicassign.expected | 32 ++-------- .../basicassign1/clang/basicassign1.expected | 35 +---------- .../clang_O2/basicassign1.expected | 29 +-------- .../clang_no_plt_no_pic/basicassign1.expected | 35 +---------- .../clang_pic/basicassign1.expected | 38 ++---------- .../basicassign1/gcc/basicassign1.expected | 31 +--------- .../basicassign1/gcc_O2/basicassign1.expected | 29 +-------- .../gcc_no_plt_no_pic/basicassign1.expected | 31 +--------- .../gcc_pic/basicassign1.expected | 34 ++--------- .../basicassign2/clang/basicassign2.expected | 32 +--------- .../clang_O2/basicassign2.expected | 26 +------- .../clang_no_plt_no_pic/basicassign2.expected | 32 +--------- .../clang_pic/basicassign2.expected | 32 +--------- .../basicassign2/gcc/basicassign2.expected | 28 +-------- .../basicassign2/gcc_O2/basicassign2.expected | 26 +------- .../gcc_no_plt_no_pic/basicassign2.expected | 28 +-------- .../gcc_pic/basicassign2.expected | 28 +-------- .../basicassign3/clang/basicassign3.expected | 31 +--------- .../clang_O2/basicassign3.expected | 25 +------- .../clang_no_plt_no_pic/basicassign3.expected | 31 +--------- .../clang_pic/basicassign3.expected | 34 +---------- .../basicassign3/gcc/basicassign3.expected | 27 +-------- .../basicassign3/gcc_O2/basicassign3.expected | 25 +------- .../gcc_no_plt_no_pic/basicassign3.expected | 27 +-------- .../gcc_pic/basicassign3.expected | 30 +--------- .../incorrect/iflocal/clang/iflocal.expected | 37 +----------- .../clang_no_plt_no_pic/iflocal.expected | 37 +----------- .../iflocal/clang_pic/iflocal.expected | 37 +----------- .../incorrect/iflocal/gcc/iflocal.expected | 35 +---------- .../gcc_no_plt_no_pic/iflocal.expected | 35 +---------- .../iflocal/gcc_pic/iflocal.expected | 35 +---------- .../clang/nestedifglobal.expected | 40 +------------ .../nestedifglobal.expected | 40 +------------ .../clang_pic/nestedifglobal.expected | 45 ++------------ .../gcc/nestedifglobal.expected | 38 +----------- .../gcc_no_plt_no_pic/nestedifglobal.expected | 38 +----------- .../gcc_pic/nestedifglobal.expected | 41 ++----------- 349 files changed, 1030 insertions(+), 11347 deletions(-) diff --git a/src/test/correct/arrays_simple/clang/arrays_simple.expected b/src/test/correct/arrays_simple/clang/arrays_simple.expected index 12465e95f..6519320eb 100644 --- a/src/test/correct/arrays_simple/clang/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang/arrays_simple.expected @@ -1,60 +1,41 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1872bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,16 +61,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -133,4 +110,3 @@ implementation main() return; } - diff --git a/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected b/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected index 37b720b0f..7d1470198 100644 --- a/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected @@ -1,26 +1,18 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1840bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -35,7 +27,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,16 +38,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -86,4 +74,3 @@ implementation main() return; } - diff --git a/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected b/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected index 12465e95f..6519320eb 100644 --- a/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected @@ -1,60 +1,41 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1872bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,16 +61,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -133,4 +110,3 @@ implementation main() return; } - diff --git a/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected b/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected index 12465e95f..6519320eb 100644 --- a/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected @@ -1,60 +1,41 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1872bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,16 +61,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -133,4 +110,3 @@ implementation main() return; } - diff --git a/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected b/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected index 69a6690ea..b4a6fbd45 100644 --- a/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected +++ b/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected @@ -1,26 +1,18 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -35,7 +27,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,16 +38,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -86,4 +74,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected index 8c35ba349..688e5846c 100644 --- a/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected @@ -1,65 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -74,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); @@ -85,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -93,7 +71,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -102,7 +79,6 @@ implementation {:extern} guarantee_reflexive() assert true; } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -145,4 +121,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected index 96f76e4c9..6f71629d4 100644 --- a/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected @@ -1,50 +1,36 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -59,7 +45,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); @@ -70,7 +55,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -78,7 +62,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -87,7 +70,6 @@ implementation {:extern} guarantee_reflexive() assert true; } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_mem, R0, R8, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -123,4 +105,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected index 230cb1c94..d334e0aa7 100644 --- a/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected @@ -1,65 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -74,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); @@ -85,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -93,7 +71,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -102,7 +79,6 @@ implementation {:extern} guarantee_reflexive() assert true; } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -145,4 +121,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected index 85faf4501..d703c41d6 100644 --- a/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected @@ -1,70 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -80,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69684bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); @@ -91,7 +69,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -99,7 +76,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -108,7 +84,6 @@ implementation {:extern} guarantee_reflexive() assert true; } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -155,4 +130,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected index b868d96ff..a0ad6e8a6 100644 --- a/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected @@ -1,53 +1,39 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); @@ -73,7 +58,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -81,7 +65,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -90,7 +73,6 @@ implementation {:extern} guarantee_reflexive() assert true; } - procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -130,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected index d1980b408..f77333b4d 100644 --- a/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected @@ -1,50 +1,36 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -59,7 +45,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); @@ -70,7 +55,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -78,7 +62,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -87,7 +70,6 @@ implementation {:extern} guarantee_reflexive() assert true; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -123,4 +105,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected index dda1ca7b7..467458368 100644 --- a/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected @@ -1,53 +1,39 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); @@ -73,7 +58,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -81,7 +65,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -90,7 +73,6 @@ implementation {:extern} guarantee_reflexive() assert true; } - procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -130,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected index f0ce44631..67d95f41a 100644 --- a/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected @@ -1,58 +1,43 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -68,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); @@ -79,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -87,7 +70,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -96,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert true; } - procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -140,4 +121,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected index 5f60576fa..e7d8c3853 100644 --- a/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected @@ -1,69 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -78,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; @@ -89,7 +66,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -97,7 +73,6 @@ implementation {:extern} rely_reflexive() assert true; } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -106,7 +81,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); @@ -153,4 +127,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected index 858d5cfbc..a1d33d615 100644 --- a/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected @@ -1,56 +1,39 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -65,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; @@ -76,7 +58,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -84,7 +65,6 @@ implementation {:extern} rely_reflexive() assert true; } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -93,7 +73,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (Gamma_R0 == false); @@ -133,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected index 03de2c6de..76fe93491 100644 --- a/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected @@ -1,69 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -78,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; @@ -89,7 +66,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -97,7 +73,6 @@ implementation {:extern} rely_reflexive() assert true; } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -106,7 +81,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); @@ -153,4 +127,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected index ae5b0fbdf..40238cf96 100644 --- a/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected @@ -1,74 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -84,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69684bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; @@ -95,7 +71,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -103,7 +78,6 @@ implementation {:extern} rely_reflexive() assert true; } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -112,7 +86,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); @@ -162,4 +135,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected index 07a72632f..d6633d277 100644 --- a/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected @@ -1,65 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -74,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; @@ -85,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -93,7 +71,6 @@ implementation {:extern} rely_reflexive() assert true; } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -102,7 +79,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); @@ -149,4 +125,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected index 4cf800bec..619c4f90f 100644 --- a/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected @@ -1,56 +1,39 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -65,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; @@ -76,7 +58,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -84,7 +65,6 @@ implementation {:extern} rely_reflexive() assert true; } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -93,7 +73,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (Gamma_R0 == false); @@ -133,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected index f3cb20481..d866dcdf3 100644 --- a/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected @@ -1,65 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -74,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; @@ -85,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -93,7 +71,6 @@ implementation {:extern} rely_reflexive() assert true; } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -102,7 +79,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); @@ -149,4 +125,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected index 69fe351f8..4fdd20285 100644 --- a/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected @@ -1,70 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $arr_addr: bv64; axiom ($arr_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if ((index == bvadd64($arr_addr, 4bv64)) || (index == bvadd64($arr_addr, 0bv64))) then false else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -80,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; @@ -91,7 +69,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -99,7 +76,6 @@ implementation {:extern} rely_reflexive() assert true; } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -108,7 +84,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, bvadd64($arr_addr, 0bv64)) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); @@ -158,4 +133,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected index f7c86e0c4..aae4353b4 100644 --- a/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected @@ -1,54 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -63,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); @@ -74,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -82,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -91,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -132,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected index 215644ba6..2db530be9 100644 --- a/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected @@ -1,54 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -63,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); @@ -74,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -82,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -91,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -132,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected index 0edd9791e..520238b61 100644 --- a/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected @@ -1,54 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -63,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); @@ -74,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -82,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -91,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -132,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected index 009cb92b2..74d648446 100644 --- a/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected @@ -1,59 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -69,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); @@ -80,7 +62,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -88,7 +69,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -97,7 +77,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -142,4 +121,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected index 11639cc6b..fdbb6dfb6 100644 --- a/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected @@ -1,50 +1,36 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -59,7 +45,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); @@ -70,7 +55,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -78,7 +62,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -87,7 +70,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -129,4 +111,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected index 50f5f35a8..64e514c4e 100644 --- a/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected @@ -1,54 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -63,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); @@ -74,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -82,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -91,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -132,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected index 0aa1cbcf1..cd1a048d2 100644 --- a/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected @@ -1,50 +1,36 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -59,7 +45,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); @@ -70,7 +55,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -78,7 +62,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -87,7 +70,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -129,4 +111,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected index 6a2f6e3ec..91aa7c9d2 100644 --- a/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected @@ -1,55 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -65,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); @@ -76,7 +60,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -84,7 +67,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -93,7 +75,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -138,4 +119,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected index fc63066b2..a75c04bf7 100644 --- a/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected @@ -1,63 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -72,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); @@ -83,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -91,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -100,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -143,4 +120,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected index c9f71c555..4bcb43c38 100644 --- a/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected @@ -1,63 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -72,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); @@ -83,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -91,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -100,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -143,4 +120,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected index 9b61474b2..77005f479 100644 --- a/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected @@ -1,63 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -72,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); @@ -83,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -91,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -100,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -143,4 +120,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected index 46a60c7d6..e1aca9e62 100644 --- a/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected @@ -1,68 +1,48 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -78,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); @@ -89,7 +68,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -97,7 +75,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -106,7 +83,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -153,4 +129,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected index 2d6d99ea5..ae3b573ec 100644 --- a/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected @@ -1,59 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -68,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); @@ -79,7 +61,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -87,7 +68,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -96,7 +76,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -142,4 +121,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected index 3e4170ab5..7fc05ac42 100644 --- a/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected @@ -1,63 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -72,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); @@ -83,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -91,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -100,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -143,4 +120,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected index 47d8849ad..78d6d608a 100644 --- a/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected @@ -1,59 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -68,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); @@ -79,7 +61,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -87,7 +68,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -96,7 +76,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -142,4 +121,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected index 19dd0890f..17c17625b 100644 --- a/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected @@ -1,64 +1,46 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -74,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); @@ -85,7 +66,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -93,7 +73,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 5bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -102,7 +81,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -152,4 +130,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected index 233c4aebc..fbb43dfc6 100644 --- a/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected @@ -1,95 +1,65 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -105,7 +75,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -117,7 +86,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -126,7 +94,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -136,7 +103,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); @@ -216,7 +182,6 @@ implementation main() return; } - procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1896bv64) == 1bv8); @@ -245,4 +210,3 @@ implementation zero() return; } - diff --git a/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected index a760a6837..410584511 100644 --- a/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected @@ -1,68 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -78,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -90,7 +68,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -99,7 +76,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -109,7 +85,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (Gamma_R0 == false); @@ -163,4 +138,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected index c62e7f782..7ca15c00f 100644 --- a/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected @@ -1,95 +1,65 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -105,7 +75,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -117,7 +86,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -126,7 +94,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -136,7 +103,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); @@ -216,7 +182,6 @@ implementation main() return; } - procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1896bv64) == 1bv8); @@ -245,4 +210,3 @@ implementation zero() return; } - diff --git a/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected index a0c19c8a6..8e06b4b43 100644 --- a/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected @@ -1,95 +1,65 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -107,7 +77,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -119,7 +88,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -128,7 +96,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -138,7 +105,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); @@ -226,7 +192,6 @@ implementation main() return; } - procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1968bv64) == 1bv8); @@ -259,4 +224,3 @@ implementation zero() return; } - diff --git a/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected index 488fafd5b..47db4c798 100644 --- a/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected @@ -1,91 +1,63 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -101,7 +73,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -113,7 +84,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -122,7 +92,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -132,7 +101,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == false); @@ -212,7 +180,6 @@ implementation main() return; } - procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1900bv64) == 1bv8); @@ -241,4 +208,3 @@ implementation zero() return; } - diff --git a/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected index 3b197b348..318cda26e 100644 --- a/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected @@ -1,68 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R3: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} R3: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -78,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -90,7 +68,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -99,7 +76,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -109,7 +85,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (Gamma_R0 == false); @@ -163,4 +138,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected index 6df1f935e..5acb3dee0 100644 --- a/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected @@ -1,91 +1,63 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -101,7 +73,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -113,7 +84,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -122,7 +92,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -132,7 +101,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == false); @@ -212,7 +180,6 @@ implementation main() return; } - procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1900bv64) == 1bv8); @@ -241,4 +208,3 @@ implementation zero() return; } - diff --git a/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected index 1c14ce915..822e01649 100644 --- a/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected @@ -1,91 +1,63 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -103,7 +75,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -115,7 +86,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -124,7 +94,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -134,7 +103,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == false); @@ -220,7 +188,6 @@ implementation main() return; } - procedure zero(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1964bv64) == 1bv8); @@ -253,4 +220,3 @@ implementation zero() return; } - diff --git a/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected index 0d690be23..f80714c0a 100644 --- a/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected @@ -1,84 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -94,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -106,7 +76,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -115,7 +84,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -125,7 +93,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -231,4 +198,3 @@ implementation main() goto l0000037a; } - diff --git a/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected index 8f91a71a4..6ffb7e4da 100644 --- a/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected @@ -1,70 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -80,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -92,7 +66,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -101,7 +74,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -111,7 +83,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -181,4 +152,3 @@ implementation main() goto l000002fd; } - diff --git a/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected index a43e397ee..3830d0d33 100644 --- a/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected @@ -1,84 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -94,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -106,7 +76,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -115,7 +84,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -125,7 +93,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -231,4 +198,3 @@ implementation main() goto l000009bd; } - diff --git a/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected index d786dee05..da4b86392 100644 --- a/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected @@ -1,89 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -101,7 +71,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -113,7 +82,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -122,7 +90,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -132,7 +99,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -246,4 +212,3 @@ implementation main() goto l00000390; } - diff --git a/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected index b2fd1e97e..d97b87f85 100644 --- a/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected @@ -1,80 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -90,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -102,7 +74,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -111,7 +82,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -121,7 +91,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -199,4 +168,3 @@ implementation main() goto l00000349; } - diff --git a/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected index cd2568642..748d6427d 100644 --- a/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected @@ -1,52 +1,36 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -74,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -83,7 +65,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -93,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -143,4 +123,3 @@ implementation main() goto l00000398; } - diff --git a/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected index c5c2855aa..14e489dca 100644 --- a/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected @@ -1,80 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -90,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -102,7 +74,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -111,7 +82,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -121,7 +91,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -199,4 +168,3 @@ implementation main() goto l0000094e; } - diff --git a/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected index 6259a4616..b2a10bf48 100644 --- a/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected @@ -1,85 +1,57 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then (memory_load32_le(memory, $x_addr) == 1bv32) else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -97,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -109,7 +80,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -118,7 +88,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $y_addr) ==> ((memory_load32_le(mem, $x_addr) == 0bv32) || gamma_load32(Gamma_mem, $y_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -128,7 +97,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -212,4 +180,3 @@ implementation main() goto l0000034b; } - diff --git a/src/test/correct/basic_lock_read/clang/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang/basic_lock_read.expected index f745e34a2..ec68a1c35 100644 --- a/src/test/correct/basic_lock_read/clang/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang/basic_lock_read.expected @@ -1,84 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -93,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -104,7 +74,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -112,7 +81,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -121,7 +89,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -229,4 +196,3 @@ implementation main() goto l00000352; } - diff --git a/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected index 762b92ce7..58d897dbe 100644 --- a/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected @@ -1,62 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -71,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -82,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -90,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -99,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_mem, R0, R8, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -157,4 +135,3 @@ implementation main() goto l000002f7; } - diff --git a/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected index dbda022fa..76479184f 100644 --- a/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected @@ -1,84 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -93,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -104,7 +74,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -112,7 +81,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -121,7 +89,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -229,4 +196,3 @@ implementation main() goto l0000097d; } - diff --git a/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected index f191f5764..58b70d4a2 100644 --- a/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected @@ -1,89 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -100,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -111,7 +80,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -119,7 +87,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -128,7 +95,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -244,4 +210,3 @@ implementation main() goto l00000361; } - diff --git a/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected index 8f1678d7d..03ecc62e0 100644 --- a/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected @@ -1,80 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -89,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -100,7 +72,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -108,7 +79,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -117,7 +87,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -203,4 +172,3 @@ implementation main() goto l0000033e; } - diff --git a/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected index 0409be947..4b24dfb86 100644 --- a/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected @@ -1,64 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -73,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -84,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -92,7 +71,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -101,7 +79,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -158,4 +135,3 @@ implementation main() goto l0000039c; } - diff --git a/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected index dfa99cd61..d34a41d8f 100644 --- a/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected @@ -1,80 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -89,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -100,7 +72,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -108,7 +79,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -117,7 +87,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -203,4 +172,3 @@ implementation main() goto l0000095f; } - diff --git a/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected index e38ffc55b..9109177b9 100644 --- a/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected @@ -1,85 +1,57 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -96,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -107,7 +78,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -115,7 +85,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -124,7 +93,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -217,4 +185,3 @@ implementation main() goto l0000033f; } - diff --git a/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected index a73dd8abc..ca2f8782a 100644 --- a/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected @@ -1,84 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -93,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -104,7 +74,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -112,7 +81,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -121,7 +89,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -221,4 +188,3 @@ implementation main() goto l0000034e; } - diff --git a/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected index 33c3d9776..6a449d5f4 100644 --- a/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected @@ -1,70 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -79,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -90,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -98,7 +71,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -107,7 +79,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -177,4 +148,3 @@ implementation main() goto l000002fd; } - diff --git a/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected index 83f3447d7..2480a5290 100644 --- a/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected @@ -1,84 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -93,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -104,7 +74,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -112,7 +81,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -121,7 +89,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -221,4 +188,3 @@ implementation main() goto l0000096c; } - diff --git a/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected index 52dfa944e..96e5c0c44 100644 --- a/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected @@ -1,89 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -100,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -111,7 +80,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -119,7 +87,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -128,7 +95,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -236,4 +202,3 @@ implementation main() goto l0000035d; } - diff --git a/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected index a0af0f055..262956154 100644 --- a/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected @@ -1,80 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -89,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -100,7 +72,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -108,7 +79,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -117,7 +87,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -193,4 +162,3 @@ implementation main() goto l00000332; } - diff --git a/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected index 4cd245df7..c3b223413 100644 --- a/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected @@ -1,58 +1,39 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -78,7 +58,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -86,7 +65,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -95,7 +73,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -146,4 +123,3 @@ implementation main() goto l0000039c; } - diff --git a/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected index 83ed62450..4ab8c53b9 100644 --- a/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected @@ -1,80 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -89,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -100,7 +72,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -108,7 +79,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -117,7 +87,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -193,4 +162,3 @@ implementation main() goto l0000092f; } - diff --git a/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected index 80d7f3031..7d030338f 100644 --- a/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected @@ -1,85 +1,57 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -96,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -107,7 +78,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -115,7 +85,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -124,7 +93,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -206,4 +174,3 @@ implementation main() goto l00000333; } - diff --git a/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected index 40e856fd5..ce4836bb3 100644 --- a/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected @@ -1,76 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -85,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); @@ -96,7 +70,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -104,7 +77,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -113,7 +85,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); @@ -194,4 +165,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected index 9883c8b19..8ff20f764 100644 --- a/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected @@ -1,62 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -71,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); @@ -82,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -90,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -99,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $z_addr) != 0bv32); @@ -154,4 +132,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected index 50e0c9303..a7c1aa3e0 100644 --- a/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected @@ -1,76 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -85,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); @@ -96,7 +70,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -104,7 +77,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -113,7 +85,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); @@ -194,4 +165,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected index 6fb692a58..b4af36685 100644 --- a/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected @@ -1,81 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -92,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); @@ -103,7 +76,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -111,7 +83,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -120,7 +91,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); @@ -209,4 +179,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected index adf21c4a2..7d4bd39b1 100644 --- a/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected @@ -1,68 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -77,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); @@ -88,7 +66,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -96,7 +73,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -105,7 +81,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); @@ -192,4 +167,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected index 8c1b393cb..da1b5e9fb 100644 --- a/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected @@ -1,62 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -71,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); @@ -82,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -90,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -99,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (memory_load32_le(mem, $z_addr) != 0bv32); @@ -154,4 +132,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected index fa4c6c647..ea4643970 100644 --- a/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected @@ -1,68 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -77,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); @@ -88,7 +66,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -96,7 +73,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -105,7 +81,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); @@ -192,4 +167,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected index ff437f2ea..c5f6d2c4a 100644 --- a/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected @@ -1,73 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -84,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); @@ -95,7 +72,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -103,7 +79,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)) && (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -112,7 +87,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (memory_load32_le(mem, $z_addr) != 0bv32); @@ -207,4 +181,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected index 19468d72d..0a1affbad 100644 --- a/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -77,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -85,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -94,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); @@ -144,4 +123,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected index 7757c16f7..b134c4c8e 100644 --- a/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected @@ -1,61 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -70,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -81,7 +61,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -89,7 +68,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -98,7 +76,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); @@ -148,4 +125,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected index b40fb521c..0b74a489e 100644 --- a/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -77,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -85,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -94,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); @@ -144,4 +123,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected index 67c83f919..d90f011cd 100644 --- a/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected @@ -1,62 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -73,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -84,7 +65,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -92,7 +72,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -101,7 +80,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); @@ -159,4 +137,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected index d5900c857..371821300 100644 --- a/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected @@ -1,53 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -73,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -81,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -90,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); @@ -142,4 +123,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected index 2939f21a1..3b7abf38b 100644 --- a/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected @@ -1,61 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R3: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} R3: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -70,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -81,7 +61,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -89,7 +68,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -98,7 +76,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); @@ -148,4 +125,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected index fc568717c..359a299cd 100644 --- a/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected @@ -1,53 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -73,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -81,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -90,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); @@ -142,4 +123,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected index 520ea186a..15c04443e 100644 --- a/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected @@ -1,58 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -69,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -80,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -88,7 +70,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -97,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $z_addr) == 1bv32); @@ -155,4 +135,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected index 02d680b8c..0eb4bee8c 100644 --- a/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected @@ -1,58 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); @@ -78,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -86,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -95,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -136,4 +114,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected index c44f02db2..3e2a4e64e 100644 --- a/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected @@ -1,58 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); @@ -78,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -86,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -95,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -136,4 +114,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected index 9d0d1ef68..b731ea8a7 100644 --- a/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected @@ -1,58 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); @@ -78,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -86,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -95,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -136,4 +114,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected index 8c6ec002a..47177ea35 100644 --- a/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected @@ -1,63 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); - 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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -73,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); @@ -84,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -92,7 +71,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -101,7 +79,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -146,4 +123,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected index 0eff402b1..3172825c1 100644 --- a/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected @@ -1,54 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -63,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); @@ -74,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -82,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -91,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -133,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected index 4ed4cb62d..b15e26d4b 100644 --- a/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected @@ -1,58 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); @@ -78,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -86,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -95,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -136,4 +114,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected index be033658c..7786d0566 100644 --- a/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected @@ -1,54 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -63,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); @@ -74,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -82,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -91,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -133,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected index 65482492b..38edf10a2 100644 --- a/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected @@ -1,59 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsle"} bvsle32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvslt"} bvslt32(bv32, bv32) returns (bool); - 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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -69,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); @@ -80,7 +62,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -88,7 +69,6 @@ implementation {:extern} rely_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(memory_load32_le(mem, $x_addr), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (memory_load32_le(mem, $x_addr) == 20bv32))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -97,7 +77,6 @@ implementation {:extern} guarantee_reflexive() assert (((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) || ((memory_load32_le(mem, $x_addr) == 20bv32) && (memory_load32_le(mem, $x_addr) == 0bv32))) || ((memory_load32_le(mem, $x_addr) == 20bv32) && bvsle32(memory_load32_le(mem, $x_addr), 10bv32))); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (memory_load32_le(mem, $x_addr) == 0bv32); @@ -142,4 +121,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected index 7d2acf54f..954436770 100644 --- a/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected @@ -1,106 +1,67 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1952bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -115,7 +76,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -127,16 +87,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R10, R31, R8, R9, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -243,4 +200,3 @@ implementation main() goto l000003ce; } - diff --git a/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected index 37b720b0f..7d1470198 100644 --- a/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected @@ -1,26 +1,18 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1840bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -35,7 +27,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,16 +38,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -86,4 +74,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected index 6c5d9fbdc..e812b55a3 100644 --- a/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected @@ -1,106 +1,67 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1952bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -115,7 +76,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -127,16 +87,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R10, R31, R8, R9, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -243,4 +200,3 @@ implementation main() goto l00000ab1; } - diff --git a/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected index 6c5d9fbdc..e812b55a3 100644 --- a/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected @@ -1,106 +1,67 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1952bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -115,7 +76,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -127,16 +87,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R10, R31, R8, R9, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -243,4 +200,3 @@ implementation main() goto l00000ab1; } - diff --git a/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected index e9f3d911a..76c81a0e3 100644 --- a/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected @@ -1,90 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1948bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -99,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -111,16 +79,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R31, Gamma_stack, R0, R1, R2, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -207,4 +172,3 @@ implementation main() goto l000003b8; } - diff --git a/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected index 69a6690ea..b4a6fbd45 100644 --- a/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected @@ -1,26 +1,18 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -35,7 +27,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,16 +38,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -86,4 +74,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected index 66da8ad40..3b2859068 100644 --- a/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected @@ -1,90 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1948bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -99,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -111,16 +79,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R31, Gamma_stack, R0, R1, R2, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -207,4 +172,3 @@ implementation main() goto l00000a73; } - diff --git a/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected index 66da8ad40..3b2859068 100644 --- a/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected @@ -1,90 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1948bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvmul"} bvmul64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvnot"} bvnot32(bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvor"} bvor32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvsdiv"} bvsdiv33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvxor"} bvxor32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -99,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -111,16 +79,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R31, Gamma_stack, R0, R1, R2, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -207,4 +172,3 @@ implementation main() goto l00000a73; } - diff --git a/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected index 12eb71698..f75ace2cd 100644 --- a/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected @@ -1,84 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -93,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -104,7 +74,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -112,7 +81,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -121,7 +89,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -221,4 +188,3 @@ implementation main() goto l0000035b; } - diff --git a/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected index 4aac66538..5e4ab4b97 100644 --- a/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected @@ -1,70 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -79,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -90,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -98,7 +71,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -107,7 +79,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -177,4 +148,3 @@ implementation main() goto l000002fd; } - diff --git a/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected index 56dd3067e..8e69310c6 100644 --- a/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected @@ -1,84 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -93,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -104,7 +74,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -112,7 +81,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -121,7 +89,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -221,4 +188,3 @@ implementation main() goto l00000979; } - diff --git a/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected index 09b6ce832..ffbf2dec1 100644 --- a/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected @@ -1,89 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -100,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -111,7 +80,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -119,7 +87,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -128,7 +95,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -236,4 +202,3 @@ implementation main() goto l00000371; } - diff --git a/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected index 5a7002acc..9a8321a04 100644 --- a/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected @@ -1,80 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -89,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -100,7 +72,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -108,7 +79,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -117,7 +87,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -193,4 +162,3 @@ implementation main() goto l00000345; } - diff --git a/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected index e8e71e0e2..a9f73b069 100644 --- a/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected @@ -1,58 +1,39 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -78,7 +58,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -86,7 +65,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -95,7 +73,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -146,4 +123,3 @@ implementation main() goto l0000039c; } - diff --git a/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected index a6a2108f1..fed77bb6f 100644 --- a/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected @@ -1,80 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -89,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -100,7 +72,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -108,7 +79,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -117,7 +87,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -193,4 +162,3 @@ implementation main() goto l00000942; } - diff --git a/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected index b858d14c1..c8207c9e3 100644 --- a/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected @@ -1,85 +1,57 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -96,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -107,7 +78,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -115,7 +85,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -124,7 +93,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_mem, Gamma_stack, R0, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -206,4 +174,3 @@ implementation main() goto l00000347; } - diff --git a/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected index fbfee1069..d2b7bdabc 100644 --- a/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected @@ -1,76 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -85,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); @@ -96,7 +70,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -104,7 +77,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -113,7 +85,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); @@ -189,4 +160,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected index 224120d96..dcfb1a0c0 100644 --- a/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected @@ -1,66 +1,46 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -75,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); @@ -86,7 +65,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -94,7 +72,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -103,7 +80,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (Gamma_R0 == false); @@ -155,4 +131,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected index 2bc00fa6f..a02d25dca 100644 --- a/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected @@ -1,76 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -85,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); @@ -96,7 +70,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -104,7 +77,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -113,7 +85,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); @@ -189,4 +160,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected index df5988147..188abcb7f 100644 --- a/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected @@ -1,81 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -92,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); @@ -103,7 +76,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -111,7 +83,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -120,7 +91,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; requires (Gamma_R0 == false); @@ -204,4 +174,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected index a5c453f12..a478ed19c 100644 --- a/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected @@ -1,68 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -77,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); @@ -88,7 +66,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -96,7 +73,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -105,7 +81,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); @@ -187,4 +162,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected index d1b0e7589..9c14ddf53 100644 --- a/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected @@ -1,66 +1,46 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R3: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} R3: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -75,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); @@ -86,7 +65,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -94,7 +72,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -103,7 +80,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (Gamma_R0 == false); @@ -155,4 +131,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected index 5fcffcb3f..d7e5884b4 100644 --- a/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected @@ -1,68 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -77,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); @@ -88,7 +66,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -96,7 +73,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -105,7 +81,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); @@ -187,4 +162,3 @@ implementation main() return; } - diff --git a/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected index 58892a5bb..421369949 100644 --- a/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected @@ -1,73 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -84,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); @@ -95,7 +72,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -103,7 +79,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -112,7 +87,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $z_addr) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; requires (Gamma_R0 == false); @@ -202,4 +176,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected index 01662569f..54fa4c9ad 100644 --- a/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected @@ -1,64 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -73,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -84,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -92,12 +71,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); @@ -136,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected index 9e968d230..76ffa0fbf 100644 --- a/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected @@ -1,64 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -73,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -84,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -92,12 +71,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); @@ -136,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected index fe8cfa4a0..d33a4fdf1 100644 --- a/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected @@ -1,64 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -73,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -84,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -92,12 +71,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); @@ -136,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected index 3fcc543b1..ed8f7a6e7 100644 --- a/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected @@ -1,69 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -80,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -91,7 +70,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -99,12 +77,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); @@ -151,4 +127,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected index 384a447b3..c7ff3c06d 100644 --- a/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected @@ -1,60 +1,43 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69656bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -69,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -80,7 +62,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -88,12 +69,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); @@ -134,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected index 1f41bcccb..c1192859a 100644 --- a/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected @@ -1,64 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69656bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -73,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -84,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -92,12 +71,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); @@ -136,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected index 15896a499..8b4b94966 100644 --- a/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected @@ -1,60 +1,43 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69656bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -69,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -80,7 +62,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -88,12 +69,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); @@ -134,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected index 1e2a755a4..8899a0bb0 100644 --- a/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected @@ -1,65 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69656bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -76,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -87,7 +68,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -95,12 +75,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $secret_addr) == memory_load32_le(mem, $secret_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); @@ -147,4 +125,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicfree/clang/basicfree.expected b/src/test/correct/basicfree/clang/basicfree.expected index 34a22986c..1b0fcdb39 100644 --- a/src/test/correct/basicfree/clang/basicfree.expected +++ b/src/test/correct/basicfree/clang/basicfree.expected @@ -1,88 +1,58 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R16: bv64; - var {:extern} R17: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2080bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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)); @@ -97,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,16 +78,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); @@ -139,7 +105,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69680bv64) == 0bv64); @@ -207,7 +172,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); @@ -228,4 +192,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - diff --git a/src/test/correct/basicfree/clang_O2/basicfree.expected b/src/test/correct/basicfree/clang_O2/basicfree.expected index 950c0b6b7..732a8ca19 100644 --- a/src/test/correct/basicfree/clang_O2/basicfree.expected +++ b/src/test/correct/basicfree/clang_O2/basicfree.expected @@ -1,22 +1,16 @@ var {:extern} Gamma_mem: [bv64]bool; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1836bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -31,7 +25,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -43,16 +36,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); free requires (memory_load64_le(mem, 69664bv64) == 0bv64); free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); @@ -80,4 +70,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected b/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected index 3317ca7cc..6794ac87c 100644 --- a/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected +++ b/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected @@ -1,88 +1,58 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R16: bv64; - var {:extern} R17: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2080bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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)); @@ -97,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,16 +78,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); @@ -139,7 +105,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69680bv64) == 0bv64); @@ -207,7 +172,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); @@ -228,4 +192,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - diff --git a/src/test/correct/basicfree/clang_pic/basicfree.expected b/src/test/correct/basicfree/clang_pic/basicfree.expected index 3317ca7cc..6794ac87c 100644 --- a/src/test/correct/basicfree/clang_pic/basicfree.expected +++ b/src/test/correct/basicfree/clang_pic/basicfree.expected @@ -1,88 +1,58 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R16: bv64; - var {:extern} R17: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2080bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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)); @@ -97,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,16 +78,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); @@ -139,7 +105,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69680bv64) == 0bv64); @@ -207,7 +172,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); @@ -228,4 +192,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - diff --git a/src/test/correct/basicfree/gcc/basicfree.expected b/src/test/correct/basicfree/gcc/basicfree.expected index cefd3a295..ea34ecf75 100644 --- a/src/test/correct/basicfree/gcc/basicfree.expected +++ b/src/test/correct/basicfree/gcc/basicfree.expected @@ -1,84 +1,56 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2076bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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)); @@ -93,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -105,16 +76,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); @@ -135,7 +103,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -200,7 +167,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); @@ -221,4 +187,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/basicfree/gcc_O2/basicfree.expected b/src/test/correct/basicfree/gcc_O2/basicfree.expected index 4e913a701..1f67f99ba 100644 --- a/src/test/correct/basicfree/gcc_O2/basicfree.expected +++ b/src/test/correct/basicfree/gcc_O2/basicfree.expected @@ -1,22 +1,16 @@ var {:extern} Gamma_mem: [bv64]bool; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -31,7 +25,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -43,16 +36,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); free requires (memory_load64_le(mem, 69632bv64) == 0bv64); free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); @@ -80,4 +70,3 @@ implementation main() return; } - diff --git a/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected b/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected index 9215d349a..dbd70504d 100644 --- a/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected +++ b/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected @@ -1,84 +1,56 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2076bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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)); @@ -93,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -105,16 +76,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); @@ -135,7 +103,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -200,7 +167,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); @@ -221,4 +187,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/basicfree/gcc_pic/basicfree.expected b/src/test/correct/basicfree/gcc_pic/basicfree.expected index 9215d349a..dbd70504d 100644 --- a/src/test/correct/basicfree/gcc_pic/basicfree.expected +++ b/src/test/correct/basicfree/gcc_pic/basicfree.expected @@ -1,84 +1,56 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2076bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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)); @@ -93,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -105,16 +76,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); @@ -135,7 +103,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -200,7 +167,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); @@ -221,4 +187,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/cjump/clang/cjump.expected b/src/test/correct/cjump/clang/cjump.expected index fa5e06ede..1526a5feb 100644 --- a/src/test/correct/cjump/clang/cjump.expected +++ b/src/test/correct/cjump/clang/cjump.expected @@ -1,88 +1,57 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,16 +77,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -233,4 +198,3 @@ implementation main() goto l0000037e; } - diff --git a/src/test/correct/cjump/clang_O2/cjump.expected b/src/test/correct/cjump/clang_O2/cjump.expected index e067fe6a6..84db87cab 100644 --- a/src/test/correct/cjump/clang_O2/cjump.expected +++ b/src/test/correct/cjump/clang_O2/cjump.expected @@ -1,65 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R11: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R11: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -74,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -86,16 +64,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -139,4 +114,3 @@ implementation main() return; } - diff --git a/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected b/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected index 3b4398c7c..875b5c02b 100644 --- a/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected +++ b/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected @@ -1,88 +1,57 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,16 +77,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -233,4 +198,3 @@ implementation main() goto l000009d4; } - diff --git a/src/test/correct/cjump/clang_pic/cjump.expected b/src/test/correct/cjump/clang_pic/cjump.expected index b1863f0c0..657d2607c 100644 --- a/src/test/correct/cjump/clang_pic/cjump.expected +++ b/src/test/correct/cjump/clang_pic/cjump.expected @@ -1,93 +1,61 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -104,7 +72,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -116,16 +83,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -250,4 +214,3 @@ implementation main() goto l00000398; } - diff --git a/src/test/correct/cjump/gcc/cjump.expected b/src/test/correct/cjump/gcc/cjump.expected index feb947330..0f2148bff 100644 --- a/src/test/correct/cjump/gcc/cjump.expected +++ b/src/test/correct/cjump/gcc/cjump.expected @@ -1,76 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -85,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,16 +71,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -196,4 +167,3 @@ implementation main() goto l00000365; } - diff --git a/src/test/correct/cjump/gcc_O2/cjump.expected b/src/test/correct/cjump/gcc_O2/cjump.expected index ab383ef3d..289288701 100644 --- a/src/test/correct/cjump/gcc_O2/cjump.expected +++ b/src/test/correct/cjump/gcc_O2/cjump.expected @@ -1,61 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R3: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} R3: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -70,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,16 +62,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -135,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected b/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected index 7a36e8cb0..21387d5c2 100644 --- a/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected +++ b/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected @@ -1,76 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -85,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,16 +71,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -196,4 +167,3 @@ implementation main() goto l000009a3; } - diff --git a/src/test/correct/cjump/gcc_pic/cjump.expected b/src/test/correct/cjump/gcc_pic/cjump.expected index 86121cbf4..d1201f840 100644 --- a/src/test/correct/cjump/gcc_pic/cjump.expected +++ b/src/test/correct/cjump/gcc_pic/cjump.expected @@ -1,81 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -92,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -104,16 +77,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -211,4 +181,3 @@ implementation main() goto l00000368; } - diff --git a/src/test/correct/function/clang/function.expected b/src/test/correct/function/clang/function.expected index 19395b846..72def10b6 100644 --- a/src/test/correct/function/clang/function.expected +++ b/src/test/correct/function/clang/function.expected @@ -1,88 +1,60 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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)); @@ -97,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,16 +80,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1884bv64) == 1bv8); @@ -147,7 +115,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -211,4 +178,3 @@ implementation main() return; } - diff --git a/src/test/correct/function/clang_O2/function.expected b/src/test/correct/function/clang_O2/function.expected index 0fb854c82..b72a24362 100644 --- a/src/test/correct/function/clang_O2/function.expected +++ b/src/test/correct/function/clang_O2/function.expected @@ -1,65 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R11: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R11: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -74,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -86,16 +64,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -139,4 +114,3 @@ implementation main() return; } - diff --git a/src/test/correct/function/clang_no_plt_no_pic/function.expected b/src/test/correct/function/clang_no_plt_no_pic/function.expected index 19395b846..72def10b6 100644 --- a/src/test/correct/function/clang_no_plt_no_pic/function.expected +++ b/src/test/correct/function/clang_no_plt_no_pic/function.expected @@ -1,88 +1,60 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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)); @@ -97,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,16 +80,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1884bv64) == 1bv8); @@ -147,7 +115,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -211,4 +178,3 @@ implementation main() return; } - diff --git a/src/test/correct/function/clang_pic/function.expected b/src/test/correct/function/clang_pic/function.expected index 6b467ad4f..a45707202 100644 --- a/src/test/correct/function/clang_pic/function.expected +++ b/src/test/correct/function/clang_pic/function.expected @@ -1,88 +1,60 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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)); @@ -99,7 +71,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -111,16 +82,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1956bv64) == 1bv8); @@ -153,7 +121,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R29, R30, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -225,4 +192,3 @@ implementation main() return; } - diff --git a/src/test/correct/function/gcc/function.expected b/src/test/correct/function/gcc/function.expected index 970ea2e3b..32243ac4d 100644 --- a/src/test/correct/function/gcc/function.expected +++ b/src/test/correct/function/gcc/function.expected @@ -1,86 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -95,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -107,16 +79,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1896bv64) == 1bv8); @@ -145,7 +114,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -212,4 +180,3 @@ implementation main() return; } - diff --git a/src/test/correct/function/gcc_O2/function.expected b/src/test/correct/function/gcc_O2/function.expected index 29bc38542..ad3ebb2ee 100644 --- a/src/test/correct/function/gcc_O2/function.expected +++ b/src/test/correct/function/gcc_O2/function.expected @@ -1,61 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R3: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} R3: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -70,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,16 +62,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -135,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/function/gcc_no_plt_no_pic/function.expected b/src/test/correct/function/gcc_no_plt_no_pic/function.expected index 970ea2e3b..32243ac4d 100644 --- a/src/test/correct/function/gcc_no_plt_no_pic/function.expected +++ b/src/test/correct/function/gcc_no_plt_no_pic/function.expected @@ -1,86 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -95,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -107,16 +79,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1896bv64) == 1bv8); @@ -145,7 +114,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -212,4 +180,3 @@ implementation main() return; } - diff --git a/src/test/correct/function/gcc_pic/function.expected b/src/test/correct/function/gcc_pic/function.expected index 03c3eec57..f39fc9907 100644 --- a/src/test/correct/function/gcc_pic/function.expected +++ b/src/test/correct/function/gcc_pic/function.expected @@ -1,86 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,16 +81,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1960bv64) == 1bv8); @@ -151,7 +120,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -224,4 +192,3 @@ implementation main() return; } - diff --git a/src/test/correct/function1/clang/function1.expected b/src/test/correct/function1/clang/function1.expected index 159ada63c..2b689b5ca 100644 --- a/src/test/correct/function1/clang/function1.expected +++ b/src/test/correct/function1/clang/function1.expected @@ -1,135 +1,90 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R2: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2024bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69696bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "sign_extend 32"} sign_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -141,7 +96,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -153,16 +107,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R31, R8, R9, stack; free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); @@ -199,7 +150,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -269,7 +219,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); @@ -284,4 +233,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/function1/clang_O2/function1.expected b/src/test/correct/function1/clang_O2/function1.expected index 413ffac62..243bb10cd 100644 --- a/src/test/correct/function1/clang_O2/function1.expected +++ b/src/test/correct/function1/clang_O2/function1.expected @@ -1,103 +1,65 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R11: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R10: bv64; - var {:extern} R11: bv64; - var {:extern} R16: bv64; - var {:extern} R17: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1976bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69696bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,7 +71,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -121,16 +82,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R10, Gamma_R11, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R10, R11, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -192,7 +150,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 1976bv64) == 2924859843805185bv64); @@ -207,4 +164,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/function1/clang_no_plt_no_pic/function1.expected b/src/test/correct/function1/clang_no_plt_no_pic/function1.expected index f67b29f59..c4b908e10 100644 --- a/src/test/correct/function1/clang_no_plt_no_pic/function1.expected +++ b/src/test/correct/function1/clang_no_plt_no_pic/function1.expected @@ -1,135 +1,90 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R2: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2024bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69696bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "sign_extend 32"} sign_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -141,7 +96,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -153,16 +107,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R31, R8, R9, stack; free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); @@ -199,7 +150,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -269,7 +219,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); @@ -284,4 +233,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/function1/clang_pic/function1.expected b/src/test/correct/function1/clang_pic/function1.expected index 1ec59b27f..ee6ca80af 100644 --- a/src/test/correct/function1/clang_pic/function1.expected +++ b/src/test/correct/function1/clang_pic/function1.expected @@ -1,135 +1,90 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R2: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2096bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69696bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "sign_extend 32"} sign_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -143,7 +98,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69584bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -155,16 +109,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R31, R8, R9, stack; free requires (memory_load64_le(mem, 2096bv64) == 2924859843805185bv64); @@ -205,7 +156,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -283,7 +233,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2096bv64) == 2924859843805185bv64); @@ -302,4 +251,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69584bv64) == 69696bv64); - diff --git a/src/test/correct/function1/gcc/function1.expected b/src/test/correct/function1/gcc/function1.expected index d754ffd91..2ea91dac0 100644 --- a/src/test/correct/function1/gcc/function1.expected +++ b/src/test/correct/function1/gcc/function1.expected @@ -1,125 +1,85 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R2: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2048bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -142,7 +102,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -154,16 +113,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_stack, R0, R1, R31, stack; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -222,7 +178,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -320,7 +275,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -357,4 +311,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/function1/gcc_O2/function1.expected b/src/test/correct/function1/gcc_O2/function1.expected index 7d831c426..0cffed688 100644 --- a/src/test/correct/function1/gcc_O2/function1.expected +++ b/src/test/correct/function1/gcc_O2/function1.expected @@ -1,100 +1,65 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R3: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R2: bv64; - var {:extern} R29: bv64; - var {:extern} R3: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2048bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -117,7 +82,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -129,16 +93,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -175,7 +136,6 @@ procedure __printf_chk(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R3, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R3, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -257,4 +217,3 @@ implementation main() return; } - diff --git a/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected b/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected index 60cb7ea30..9fbbe5e2f 100644 --- a/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected +++ b/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected @@ -1,125 +1,85 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R2: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2048bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -142,7 +102,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -154,16 +113,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_stack, R0, R1, R31, stack; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -222,7 +178,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -320,7 +275,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -357,4 +311,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/function1/gcc_pic/function1.expected b/src/test/correct/function1/gcc_pic/function1.expected index 9ecf76efe..481f26446 100644 --- a/src/test/correct/function1/gcc_pic/function1.expected +++ b/src/test/correct/function1/gcc_pic/function1.expected @@ -1,125 +1,85 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R2: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2112bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -144,7 +104,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 68992bv64) == 1936bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -156,16 +115,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_stack, R0, R1, R31, stack; free requires (memory_load8_le(mem, 2112bv64) == 1bv8); @@ -228,7 +184,6 @@ implementation get_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -333,7 +288,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2112bv64) == 1bv8); @@ -374,4 +328,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 68992bv64) == 1936bv64); - diff --git a/src/test/correct/functions_with_params/clang/functions_with_params.expected b/src/test/correct/functions_with_params/clang/functions_with_params.expected index c2403f1b2..90410d9c0 100644 --- a/src/test/correct/functions_with_params/clang/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang/functions_with_params.expected @@ -1,85 +1,58 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1912bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -106,16 +78,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_stack, R0, R29, R30, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -178,7 +147,6 @@ implementation main() return; } - procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load8_le(mem, 1912bv64) == 1bv8); @@ -213,4 +181,3 @@ implementation plus_one() return; } - diff --git a/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected b/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected index f444aac68..3924a0aa8 100644 --- a/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected @@ -1,26 +1,18 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1848bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -35,7 +27,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,16 +38,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -86,4 +74,3 @@ implementation main() return; } - diff --git a/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected b/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected index 38183a912..f275cc3c0 100644 --- a/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected @@ -1,85 +1,58 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1912bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -106,16 +78,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_stack, R0, R29, R30, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -178,7 +147,6 @@ implementation main() return; } - procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load8_le(mem, 1912bv64) == 1bv8); @@ -213,4 +181,3 @@ implementation plus_one() return; } - diff --git a/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected b/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected index 38183a912..f275cc3c0 100644 --- a/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected @@ -1,85 +1,58 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1912bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -106,16 +78,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_stack, R0, R29, R30, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -178,7 +147,6 @@ implementation main() return; } - procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load8_le(mem, 1912bv64) == 1bv8); @@ -213,4 +181,3 @@ implementation plus_one() return; } - diff --git a/src/test/correct/functions_with_params/gcc/functions_with_params.expected b/src/test/correct/functions_with_params/gcc/functions_with_params.expected index f06412bb7..2f62d07aa 100644 --- a/src/test/correct/functions_with_params/gcc/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc/functions_with_params.expected @@ -1,81 +1,56 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1904bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -102,16 +76,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -171,7 +142,6 @@ implementation main() return; } - procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load8_le(mem, 1904bv64) == 1bv8); @@ -206,4 +176,3 @@ implementation plus_one() return; } - diff --git a/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected b/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected index 12da93fb9..5cc0cddd1 100644 --- a/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected @@ -1,26 +1,18 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1916bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -35,7 +27,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,16 +38,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -86,4 +74,3 @@ implementation main() return; } - diff --git a/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected b/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected index 16e0ad0fc..e2bcc3d4a 100644 --- a/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected @@ -1,81 +1,56 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1904bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -102,16 +76,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -171,7 +142,6 @@ implementation main() return; } - procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load8_le(mem, 1904bv64) == 1bv8); @@ -206,4 +176,3 @@ implementation plus_one() return; } - diff --git a/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected b/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected index 16e0ad0fc..e2bcc3d4a 100644 --- a/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected @@ -1,81 +1,56 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1904bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -102,16 +76,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -171,7 +142,6 @@ implementation main() return; } - procedure plus_one(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load8_le(mem, 1904bv64) == 1bv8); @@ -206,4 +176,3 @@ implementation plus_one() return; } - diff --git a/src/test/correct/ifbranches/clang/ifbranches.expected b/src/test/correct/ifbranches/clang/ifbranches.expected index 3611b27d4..be1710c86 100644 --- a/src/test/correct/ifbranches/clang/ifbranches.expected +++ b/src/test/correct/ifbranches/clang/ifbranches.expected @@ -1,87 +1,57 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -96,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -108,16 +77,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; requires (Gamma_R0 == true); @@ -228,4 +194,3 @@ implementation main() goto l00000397; } - diff --git a/src/test/correct/ifbranches/clang_O2/ifbranches.expected b/src/test/correct/ifbranches/clang_O2/ifbranches.expected index 612ea9149..854466976 100644 --- a/src/test/correct/ifbranches/clang_O2/ifbranches.expected +++ b/src/test/correct/ifbranches/clang_O2/ifbranches.expected @@ -1,45 +1,27 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -54,7 +36,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -66,16 +47,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, R0, R8; requires (Gamma_R0 == true); @@ -141,4 +119,3 @@ implementation main() goto l000002df; } - diff --git a/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected b/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected index d436b4aea..2e69ad709 100644 --- a/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected @@ -1,87 +1,57 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -96,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -108,16 +77,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; requires (Gamma_R0 == true); @@ -228,4 +194,3 @@ implementation main() goto l00000a03; } - diff --git a/src/test/correct/ifbranches/clang_pic/ifbranches.expected b/src/test/correct/ifbranches/clang_pic/ifbranches.expected index d436b4aea..2e69ad709 100644 --- a/src/test/correct/ifbranches/clang_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/clang_pic/ifbranches.expected @@ -1,87 +1,57 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -96,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -108,16 +77,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; requires (Gamma_R0 == true); @@ -228,4 +194,3 @@ implementation main() goto l00000a03; } - diff --git a/src/test/correct/ifbranches/gcc/ifbranches.expected b/src/test/correct/ifbranches/gcc/ifbranches.expected index 4c3fa92a9..07eeb619d 100644 --- a/src/test/correct/ifbranches/gcc/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc/ifbranches.expected @@ -1,83 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -92,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -104,16 +75,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; requires (Gamma_R0 == true); @@ -198,4 +166,3 @@ implementation main() goto l00000369; } - diff --git a/src/test/correct/ifbranches/gcc_O2/ifbranches.expected b/src/test/correct/ifbranches/gcc_O2/ifbranches.expected index 1158eab11..8e9b0b9ee 100644 --- a/src/test/correct/ifbranches/gcc_O2/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc_O2/ifbranches.expected @@ -1,41 +1,25 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -50,7 +34,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -62,16 +45,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; requires (Gamma_R0 == true); @@ -137,4 +117,3 @@ implementation main() goto l000001c6; } - diff --git a/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected b/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected index 664e7d49d..06bb0c0fc 100644 --- a/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected @@ -1,83 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -92,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -104,16 +75,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; requires (Gamma_R0 == true); @@ -198,4 +166,3 @@ implementation main() goto l0000099c; } - diff --git a/src/test/correct/ifbranches/gcc_pic/ifbranches.expected b/src/test/correct/ifbranches/gcc_pic/ifbranches.expected index 664e7d49d..06bb0c0fc 100644 --- a/src/test/correct/ifbranches/gcc_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc_pic/ifbranches.expected @@ -1,83 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -92,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -104,16 +75,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; requires (Gamma_R0 == true); @@ -198,4 +166,3 @@ implementation main() goto l0000099c; } - diff --git a/src/test/correct/ifglobal/clang/ifglobal.expected b/src/test/correct/ifglobal/clang/ifglobal.expected index 86e9dd627..dfaaee566 100644 --- a/src/test/correct/ifglobal/clang/ifglobal.expected +++ b/src/test/correct/ifglobal/clang/ifglobal.expected @@ -1,85 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -106,16 +75,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -214,4 +180,3 @@ implementation main() goto l00000343; } - diff --git a/src/test/correct/ifglobal/clang_O2/ifglobal.expected b/src/test/correct/ifglobal/clang_O2/ifglobal.expected index 998c3150b..aff563392 100644 --- a/src/test/correct/ifglobal/clang_O2/ifglobal.expected +++ b/src/test/correct/ifglobal/clang_O2/ifglobal.expected @@ -1,63 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -72,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -84,16 +64,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -147,4 +124,3 @@ implementation main() goto l000002f8; } - diff --git a/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected b/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected index fcdee18ee..1ab1be788 100644 --- a/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected @@ -1,85 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -106,16 +75,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -214,4 +180,3 @@ implementation main() goto l00000952; } - diff --git a/src/test/correct/ifglobal/clang_pic/ifglobal.expected b/src/test/correct/ifglobal/clang_pic/ifglobal.expected index 786dbed28..934ec8298 100644 --- a/src/test/correct/ifglobal/clang_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/clang_pic/ifglobal.expected @@ -1,90 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -100,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -112,16 +80,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -226,4 +191,3 @@ implementation main() goto l00000352; } - diff --git a/src/test/correct/ifglobal/gcc/ifglobal.expected b/src/test/correct/ifglobal/gcc/ifglobal.expected index 1fcb21719..6dc6cf1e2 100644 --- a/src/test/correct/ifglobal/gcc/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc/ifglobal.expected @@ -1,73 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -174,4 +146,3 @@ implementation main() goto l00000311; } - diff --git a/src/test/correct/ifglobal/gcc_O2/ifglobal.expected b/src/test/correct/ifglobal/gcc_O2/ifglobal.expected index 6dcab0b9a..625a66c0a 100644 --- a/src/test/correct/ifglobal/gcc_O2/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc_O2/ifglobal.expected @@ -1,61 +1,43 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -70,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,16 +63,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -144,4 +122,3 @@ implementation main() goto l00000396; } - diff --git a/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected b/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected index 0007e6442..f373d2f38 100644 --- a/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected @@ -1,73 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -174,4 +146,3 @@ implementation main() goto l000008e5; } - diff --git a/src/test/correct/ifglobal/gcc_pic/ifglobal.expected b/src/test/correct/ifglobal/gcc_pic/ifglobal.expected index 48308d4fc..ce71dd848 100644 --- a/src/test/correct/ifglobal/gcc_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc_pic/ifglobal.expected @@ -1,78 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $x_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -88,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -100,16 +74,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -184,4 +155,3 @@ implementation main() goto l00000312; } - diff --git a/src/test/correct/indirect_call/clang_O2/indirect_call.expected b/src/test/correct/indirect_call/clang_O2/indirect_call.expected index 146af610a..d519b4a91 100644 --- a/src/test/correct/indirect_call/clang_O2/indirect_call.expected +++ b/src/test/correct/indirect_call/clang_O2/indirect_call.expected @@ -1,65 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R16: bv64; - var {:extern} R17: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1952bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -116,7 +93,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -128,16 +104,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -281,7 +254,6 @@ implementation main() return; } - procedure puts(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1952bv64) == 1bv8); @@ -386,4 +358,3 @@ procedure puts(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/indirect_call/gcc_O2/indirect_call.expected b/src/test/correct/indirect_call/gcc_O2/indirect_call.expected index c7c0873ff..56656d9b2 100644 --- a/src/test/correct/indirect_call/gcc_O2/indirect_call.expected +++ b/src/test/correct/indirect_call/gcc_O2/indirect_call.expected @@ -1,65 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R16: bv64; - var {:extern} R17: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1984bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -122,7 +99,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -134,16 +110,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure greet(); modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; free requires (memory_load8_le(mem, 1984bv64) == 1bv8); @@ -270,7 +243,6 @@ implementation greet() assume false; } - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -424,7 +396,6 @@ implementation main() return; } - procedure puts(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1984bv64) == 1bv8); @@ -541,4 +512,3 @@ procedure puts(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/initialisation/clang/initialisation.expected b/src/test/correct/initialisation/clang/initialisation.expected index eb2577831..c482f936b 100644 --- a/src/test/correct/initialisation/clang/initialisation.expected +++ b/src/test/correct/initialisation/clang/initialisation.expected @@ -1,124 +1,85 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R11: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R11: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $a_addr: bv64; axiom ($a_addr == 69696bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69680bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd65(bv65, bv65) returns (bv65); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp64(bv64, bv64) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp65(bv65, bv65) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_64(bv64) returns (bv65); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_64(bv64) returns (bv65); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -133,7 +94,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -145,16 +105,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -239,4 +196,3 @@ implementation main() return; } - diff --git a/src/test/correct/initialisation/clang_O2/initialisation.expected b/src/test/correct/initialisation/clang_O2/initialisation.expected index 4ab3a4b4e..a3553338b 100644 --- a/src/test/correct/initialisation/clang_O2/initialisation.expected +++ b/src/test/correct/initialisation/clang_O2/initialisation.expected @@ -1,128 +1,87 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R11: bool; - var {:extern} Gamma_R12: bool; - var {:extern} Gamma_R13: bool; - var {:extern} Gamma_R14: bool; - var {:extern} Gamma_R15: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R11: bv64; - var {:extern} R12: bv64; - var {:extern} R13: bv64; - var {:extern} R14: bv64; - var {:extern} R15: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $a_addr: bv64; axiom ($a_addr == 69696bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69680bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -137,7 +96,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -149,16 +107,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R12, Gamma_R13, Gamma_R14, Gamma_R15, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R12, R13, R14, R15, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -227,4 +182,3 @@ implementation main() return; } - diff --git a/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected b/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected index 8ceb6039a..ee5891e79 100644 --- a/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected +++ b/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected @@ -1,124 +1,85 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R11: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R11: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $a_addr: bv64; axiom ($a_addr == 69696bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69680bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd65(bv65, bv65) returns (bv65); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp64(bv64, bv64) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp65(bv65, bv65) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_64(bv64) returns (bv65); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_64(bv64) returns (bv65); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -133,7 +94,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -145,16 +105,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -239,4 +196,3 @@ implementation main() return; } - diff --git a/src/test/correct/initialisation/clang_pic/initialisation.expected b/src/test/correct/initialisation/clang_pic/initialisation.expected index 18140d188..9aca6524d 100644 --- a/src/test/correct/initialisation/clang_pic/initialisation.expected +++ b/src/test/correct/initialisation/clang_pic/initialisation.expected @@ -1,120 +1,83 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $a_addr: bv64; axiom ($a_addr == 69696bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69680bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd65(bv65, bv65) returns (bv65); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp64(bv64, bv64) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp65(bv65, bv65) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_64(bv64) returns (bv65); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_64(bv64) returns (bv65); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -133,7 +96,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69560bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -145,16 +107,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -253,4 +212,3 @@ implementation main() return; } - diff --git a/src/test/correct/initialisation/gcc/initialisation.expected b/src/test/correct/initialisation/gcc/initialisation.expected index deaf09322..06313b836 100644 --- a/src/test/correct/initialisation/gcc/initialisation.expected +++ b/src/test/correct/initialisation/gcc/initialisation.expected @@ -1,100 +1,73 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $a_addr: bv64; axiom ($a_addr == 69664bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69648bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,7 +82,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -121,16 +93,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -211,4 +180,3 @@ implementation main() return; } - diff --git a/src/test/correct/initialisation/gcc_O2/initialisation.expected b/src/test/correct/initialisation/gcc_O2/initialisation.expected index a40f21e6a..c5e35d67f 100644 --- a/src/test/correct/initialisation/gcc_O2/initialisation.expected +++ b/src/test/correct/initialisation/gcc_O2/initialisation.expected @@ -1,120 +1,83 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R3: bool; - var {:extern} Gamma_R4: bool; - var {:extern} Gamma_R5: bool; - var {:extern} Gamma_R6: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} R3: bv64; - var {:extern} R4: bv64; - var {:extern} R5: bv64; - var {:extern} R6: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $a_addr: bv64; axiom ($a_addr == 69664bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69648bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69672bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -129,7 +92,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -141,16 +103,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_R4, Gamma_R5, Gamma_R6, Gamma_mem, R0, R1, R2, R3, R4, R5, R6, mem; free requires (memory_load8_le(mem, 69632bv64) == 0bv8); @@ -252,4 +211,3 @@ implementation main() return; } - diff --git a/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected b/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected index 0b4898f84..fcfe6c37d 100644 --- a/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected +++ b/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected @@ -1,100 +1,73 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $a_addr: bv64; axiom ($a_addr == 69664bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69648bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,7 +82,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -121,16 +93,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -211,4 +180,3 @@ implementation main() return; } - diff --git a/src/test/correct/initialisation/gcc_pic/initialisation.expected b/src/test/correct/initialisation/gcc_pic/initialisation.expected index 9a523382b..89ed5289b 100644 --- a/src/test/correct/initialisation/gcc_pic/initialisation.expected +++ b/src/test/correct/initialisation/gcc_pic/initialisation.expected @@ -1,100 +1,73 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $a_addr: bv64; axiom ($a_addr == 69664bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69648bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -113,7 +86,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 68992bv64) == 1856bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -125,16 +97,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -231,4 +200,3 @@ implementation main() return; } - diff --git a/src/test/correct/jumptable/clang_O2/jumptable.expected b/src/test/correct/jumptable/clang_O2/jumptable.expected index 5b17bb4d8..1b2a48cb5 100644 --- a/src/test/correct/jumptable/clang_O2/jumptable.expected +++ b/src/test/correct/jumptable/clang_O2/jumptable.expected @@ -1,66 +1,46 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1916bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69680bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -75,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -87,16 +66,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load8_le(mem, 69664bv64) == 0bv8); @@ -152,4 +128,3 @@ implementation main() return; } - diff --git a/src/test/correct/jumptable/gcc_O2/jumptable.expected b/src/test/correct/jumptable/gcc_O2/jumptable.expected index fcf229103..0dd4e3e8b 100644 --- a/src/test/correct/jumptable/gcc_O2/jumptable.expected +++ b/src/test/correct/jumptable/gcc_O2/jumptable.expected @@ -1,93 +1,64 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1976bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69648bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -102,7 +73,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -114,16 +84,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 1976bv64) == 1bv8); @@ -158,7 +125,6 @@ implementation add_six() return; } - procedure add_two(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 1976bv64) == 1bv8); @@ -193,7 +159,6 @@ implementation add_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 69632bv64) == 0bv8); @@ -272,7 +237,6 @@ implementation main() return; } - procedure sub_seven(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 1976bv64) == 1bv8); @@ -307,4 +271,3 @@ implementation sub_seven() return; } - diff --git a/src/test/correct/jumptable3/gcc/jumptable3.expected b/src/test/correct/jumptable3/gcc/jumptable3.expected index 97f28a717..5609952b9 100644 --- a/src/test/correct/jumptable3/gcc/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc/jumptable3.expected @@ -1,103 +1,68 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -112,7 +77,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -124,16 +88,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); @@ -171,7 +132,6 @@ implementation add_six() return; } - procedure add_two(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); @@ -209,7 +169,6 @@ implementation add_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == true); @@ -855,7 +814,6 @@ implementation main() goto l000009a1; } - procedure sub_seven(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); @@ -893,4 +851,3 @@ implementation sub_seven() return; } - diff --git a/src/test/correct/jumptable3/gcc_O2/jumptable3.expected b/src/test/correct/jumptable3/gcc_O2/jumptable3.expected index 7b6ee449c..5a134c88a 100644 --- a/src/test/correct/jumptable3/gcc_O2/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc_O2/jumptable3.expected @@ -1,72 +1,48 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +68,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (Gamma_R0 == true); @@ -526,4 +498,3 @@ implementation main() goto l000005a3; } - diff --git a/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected b/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected index 5cc10fa90..58f1bf766 100644 --- a/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected @@ -1,103 +1,68 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -112,7 +77,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -124,16 +88,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); @@ -171,7 +132,6 @@ implementation add_six() return; } - procedure add_two(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); @@ -209,7 +169,6 @@ implementation add_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == true); @@ -855,7 +814,6 @@ implementation main() goto l000016fc; } - procedure sub_seven(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); @@ -893,4 +851,3 @@ implementation sub_seven() return; } - diff --git a/src/test/correct/jumptable3/gcc_pic/jumptable3.expected b/src/test/correct/jumptable3/gcc_pic/jumptable3.expected index a078fbfb4..ef47d4eb1 100644 --- a/src/test/correct/jumptable3/gcc_pic/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc_pic/jumptable3.expected @@ -1,103 +1,68 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -113,7 +78,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -125,16 +89,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2420bv64) == 1bv8); @@ -176,7 +137,6 @@ implementation add_six() return; } - procedure add_two(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2420bv64) == 1bv8); @@ -218,7 +178,6 @@ implementation add_two() return; } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R29, R30, R31, mem, stack; requires (Gamma_R0 == true); @@ -867,7 +826,6 @@ implementation main() goto l000009a8; } - procedure sub_seven(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2420bv64) == 1bv8); @@ -909,4 +867,3 @@ implementation sub_seven() return; } - diff --git a/src/test/correct/malloc_with_local/clang/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang/malloc_with_local.expected index 578485945..e37d6f809 100644 --- a/src/test/correct/malloc_with_local/clang/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang/malloc_with_local.expected @@ -1,121 +1,82 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2256bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -134,7 +95,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -146,16 +106,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -184,7 +141,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -317,7 +273,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -346,7 +301,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -375,4 +329,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected index bd9edd86d..905dc605f 100644 --- a/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected @@ -1,69 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1964bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -138,7 +113,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -150,16 +124,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -349,7 +320,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1964bv64) == 1bv8); @@ -490,4 +460,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected index ec305e0f2..a4b21b617 100644 --- a/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected @@ -1,121 +1,82 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2256bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -134,7 +95,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -146,16 +106,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -184,7 +141,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -317,7 +273,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -346,7 +301,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -375,4 +329,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected index ec305e0f2..a4b21b617 100644 --- a/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected @@ -1,121 +1,82 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2256bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -134,7 +95,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -146,16 +106,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -184,7 +141,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -317,7 +273,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -346,7 +301,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -375,4 +329,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected index cdae10f99..57d2244d6 100644 --- a/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected @@ -1,113 +1,78 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2248bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -193,7 +158,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -205,16 +169,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -377,7 +338,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -638,7 +598,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -801,7 +760,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -964,4 +922,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected index 8183571ec..52831d8f6 100644 --- a/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected @@ -1,73 +1,46 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R2: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2088bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -153,7 +126,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -165,16 +137,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2088bv64) == 1bv8); @@ -337,7 +306,6 @@ procedure __printf_chk(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -552,4 +520,3 @@ implementation main() return; } - diff --git a/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected index 66996aab1..bcb561623 100644 --- a/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected @@ -1,113 +1,78 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2248bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -193,7 +158,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -205,16 +169,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -377,7 +338,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -638,7 +598,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -801,7 +760,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -964,4 +922,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected index 66996aab1..bcb561623 100644 --- a/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected @@ -1,113 +1,78 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2248bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -193,7 +158,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -205,16 +169,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -377,7 +338,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -638,7 +598,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -801,7 +760,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -964,4 +922,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected index d3787536d..62ba87cba 100644 --- a/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected @@ -1,121 +1,82 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2292bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -190,7 +151,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -202,16 +162,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -352,7 +309,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -614,7 +570,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -755,7 +710,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -896,4 +850,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected index bd9edd86d..905dc605f 100644 --- a/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected @@ -1,69 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1964bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -138,7 +113,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -150,16 +124,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -349,7 +320,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1964bv64) == 1bv8); @@ -490,4 +460,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected index 6cb98b8c0..79c20e967 100644 --- a/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected @@ -1,121 +1,82 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2292bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -190,7 +151,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -202,16 +162,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -352,7 +309,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -614,7 +570,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -755,7 +710,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -896,4 +850,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected index 6cb98b8c0..79c20e967 100644 --- a/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected @@ -1,121 +1,82 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2292bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -190,7 +151,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -202,16 +162,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -352,7 +309,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -614,7 +570,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -755,7 +710,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -896,4 +850,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected index 2cf8f9710..64c85aefc 100644 --- a/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected @@ -1,113 +1,78 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2272bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -193,7 +158,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -205,16 +169,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -377,7 +338,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -652,7 +612,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -815,7 +774,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -978,4 +936,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected index 8183571ec..52831d8f6 100644 --- a/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected @@ -1,73 +1,46 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R2: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2088bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -153,7 +126,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -165,16 +137,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2088bv64) == 1bv8); @@ -337,7 +306,6 @@ procedure __printf_chk(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -552,4 +520,3 @@ implementation main() return; } - diff --git a/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected index adf40c74b..e6f8add2e 100644 --- a/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected @@ -1,113 +1,78 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2272bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -193,7 +158,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -205,16 +169,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -377,7 +338,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -652,7 +612,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -815,7 +774,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -978,4 +936,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected index adf40c74b..e6f8add2e 100644 --- a/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected @@ -1,113 +1,78 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2272bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -193,7 +158,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -205,16 +169,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -377,7 +338,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -652,7 +612,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -815,7 +774,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -978,4 +936,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected index e68576cd3..8af22db26 100644 --- a/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected @@ -1,123 +1,83 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2344bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -198,7 +158,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -210,16 +169,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -372,7 +328,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -642,7 +597,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -795,7 +749,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -993,7 +946,6 @@ implementation printCharValue() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -1146,4 +1098,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected index 303803cd3..ae4429bc4 100644 --- a/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected @@ -1,69 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1996bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -144,7 +119,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -156,16 +130,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -367,7 +338,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1996bv64) == 1bv8); @@ -520,4 +490,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected index 4df4fa8c2..8136ce634 100644 --- a/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected @@ -1,123 +1,83 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2344bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -198,7 +158,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -210,16 +169,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -372,7 +328,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -642,7 +597,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -795,7 +749,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -993,7 +946,6 @@ implementation printCharValue() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -1146,4 +1098,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected index 4df4fa8c2..8136ce634 100644 --- a/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected @@ -1,123 +1,83 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2344bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -198,7 +158,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -210,16 +169,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -372,7 +328,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -642,7 +597,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -795,7 +749,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -993,7 +946,6 @@ implementation printCharValue() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -1146,4 +1098,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected index 84faf1f55..9997cf87f 100644 --- a/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected @@ -1,115 +1,79 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2328bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -199,7 +163,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -211,16 +174,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -391,7 +351,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -669,7 +628,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -840,7 +798,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1056,7 +1013,6 @@ implementation printCharValue() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1227,4 +1183,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected index cbb78d053..b8f08d178 100644 --- a/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected @@ -1,107 +1,69 @@ 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_R29: bool; - var {:extern} Gamma_R3: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R3: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2264bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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]))))))) + (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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -187,7 +149,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -199,16 +160,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2264bv64) == 1bv8); @@ -371,7 +329,6 @@ procedure __printf_chk(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2264bv64) == 1bv8); @@ -534,7 +491,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, Gamma_R29, Gamma_R3, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, R29, R3, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -768,7 +724,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2264bv64) == 1bv8); @@ -931,7 +886,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R16, R17, R2, R3, mem; free requires (memory_load8_le(mem, 2264bv64) == 1bv8); @@ -1114,4 +1068,3 @@ implementation printCharValue() assume false; } - diff --git a/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected index 20b14e248..5178b957b 100644 --- a/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected @@ -1,115 +1,79 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2328bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -199,7 +163,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -211,16 +174,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -391,7 +351,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -669,7 +628,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -840,7 +798,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1056,7 +1013,6 @@ implementation printCharValue() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1227,4 +1183,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected index 20b14e248..5178b957b 100644 --- a/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected @@ -1,115 +1,79 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2328bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -199,7 +163,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -211,16 +174,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -391,7 +351,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -669,7 +628,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -840,7 +798,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1056,7 +1013,6 @@ implementation printCharValue() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1227,4 +1183,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/multi_malloc/clang/multi_malloc.expected b/src/test/correct/multi_malloc/clang/multi_malloc.expected index 6b041a2ab..433489fc8 100644 --- a/src/test/correct/multi_malloc/clang/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang/multi_malloc.expected @@ -1,121 +1,82 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2232bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -163,7 +124,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -175,16 +135,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -271,7 +228,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -451,7 +407,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -538,7 +493,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -625,4 +579,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected b/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected index 5a20c63cc..5ade3f4f8 100644 --- a/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected @@ -1,69 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1948bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -111,7 +86,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -123,16 +97,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -260,7 +231,6 @@ implementation main() return; } - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1948bv64) == 1bv8); @@ -347,4 +317,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected b/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected index d62a57bb3..e2cbb9341 100644 --- a/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected @@ -1,121 +1,82 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2232bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -163,7 +124,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -175,16 +135,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -271,7 +228,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -451,7 +407,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -538,7 +493,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -625,4 +579,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected b/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected index d62a57bb3..e2cbb9341 100644 --- a/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected @@ -1,121 +1,82 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2232bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -163,7 +124,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -175,16 +135,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -271,7 +228,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -451,7 +407,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -538,7 +493,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -625,4 +579,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/multi_malloc/gcc/multi_malloc.expected b/src/test/correct/multi_malloc/gcc/multi_malloc.expected index a31d53957..3a3e473f1 100644 --- a/src/test/correct/multi_malloc/gcc/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc/multi_malloc.expected @@ -1,113 +1,78 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2224bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -124,7 +89,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -136,16 +100,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -170,7 +131,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -282,7 +242,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -307,7 +266,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -332,4 +290,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected b/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected index 53057ea6e..fc88b066a 100644 --- a/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected @@ -1,68 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R2: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2024bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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_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)); @@ -79,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -91,16 +64,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2024bv64) == 131073bv64); @@ -125,7 +95,6 @@ procedure __printf_chk(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -193,4 +162,3 @@ implementation main() return; } - diff --git a/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected b/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected index 1d6a5af20..66d6f45d4 100644 --- a/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected @@ -1,113 +1,78 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2224bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -124,7 +89,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -136,16 +100,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -170,7 +131,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -282,7 +242,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -307,7 +266,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -332,4 +290,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected b/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected index 1d6a5af20..66d6f45d4 100644 --- a/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected @@ -1,113 +1,78 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 2224bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -124,7 +89,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -136,16 +100,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -170,7 +131,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -282,7 +242,6 @@ implementation main() return; } - procedure malloc(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -307,7 +266,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -332,4 +290,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/nestedif/clang/nestedif.expected b/src/test/correct/nestedif/clang/nestedif.expected index cf814c928..3f329d862 100644 --- a/src/test/correct/nestedif/clang/nestedif.expected +++ b/src/test/correct/nestedif/clang/nestedif.expected @@ -1,76 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1968bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -85,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -311,4 +280,3 @@ implementation main() goto l00000418; } - diff --git a/src/test/correct/nestedif/clang_O2/nestedif.expected b/src/test/correct/nestedif/clang_O2/nestedif.expected index 37b720b0f..7d1470198 100644 --- a/src/test/correct/nestedif/clang_O2/nestedif.expected +++ b/src/test/correct/nestedif/clang_O2/nestedif.expected @@ -1,26 +1,18 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1840bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -35,7 +27,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,16 +38,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -86,4 +74,3 @@ implementation main() return; } - diff --git a/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected b/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected index 8229d82be..3a17f6a2f 100644 --- a/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected +++ b/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected @@ -1,76 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1968bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -85,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -311,4 +280,3 @@ implementation main() goto l00000b49; } - diff --git a/src/test/correct/nestedif/clang_pic/nestedif.expected b/src/test/correct/nestedif/clang_pic/nestedif.expected index 8229d82be..3a17f6a2f 100644 --- a/src/test/correct/nestedif/clang_pic/nestedif.expected +++ b/src/test/correct/nestedif/clang_pic/nestedif.expected @@ -1,76 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1968bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -85,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -311,4 +280,3 @@ implementation main() goto l00000b49; } - diff --git a/src/test/correct/nestedif/gcc/nestedif.expected b/src/test/correct/nestedif/gcc/nestedif.expected index fc7f4a877..a17aa96bc 100644 --- a/src/test/correct/nestedif/gcc/nestedif.expected +++ b/src/test/correct/nestedif/gcc/nestedif.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1928bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -227,4 +198,3 @@ implementation main() goto l000003a6; } - diff --git a/src/test/correct/nestedif/gcc_O2/nestedif.expected b/src/test/correct/nestedif/gcc_O2/nestedif.expected index 69a6690ea..b4a6fbd45 100644 --- a/src/test/correct/nestedif/gcc_O2/nestedif.expected +++ b/src/test/correct/nestedif/gcc_O2/nestedif.expected @@ -1,26 +1,18 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -35,7 +27,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,16 +38,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -86,4 +74,3 @@ implementation main() return; } - diff --git a/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected b/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected index 5812fc3ac..545e50eda 100644 --- a/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected +++ b/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1928bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -227,4 +198,3 @@ implementation main() goto l00000a42; } - diff --git a/src/test/correct/nestedif/gcc_pic/nestedif.expected b/src/test/correct/nestedif/gcc_pic/nestedif.expected index 5812fc3ac..545e50eda 100644 --- a/src/test/correct/nestedif/gcc_pic/nestedif.expected +++ b/src/test/correct/nestedif/gcc_pic/nestedif.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1928bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -227,4 +198,3 @@ implementation main() goto l00000a42; } - diff --git a/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected index 855a50922..525fdd1f2 100644 --- a/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -77,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -85,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -94,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -134,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected index 481fa6140..1fc387f0c 100644 --- a/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -77,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -85,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -94,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -134,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected index 0721b9b19..1daebd0d8 100644 --- a/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -77,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -85,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -94,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -134,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected index f440ff664..c6073f617 100644 --- a/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected @@ -1,62 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -72,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -83,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -91,7 +71,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -100,7 +79,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -144,4 +122,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected index 7c780737c..f5dffb2ac 100644 --- a/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected @@ -1,53 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -73,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -81,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -90,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -131,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected index bdd5d1900..df1a3fe0e 100644 --- a/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -77,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -85,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -94,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -134,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected index 58e374101..f483553cd 100644 --- a/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected @@ -1,53 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -73,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -81,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -90,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -131,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected index a9a4eece4..62473c555 100644 --- a/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected @@ -1,58 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -68,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -79,7 +62,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -87,7 +69,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -96,7 +77,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -140,4 +120,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected index fbb66cfdf..072b9d9d4 100644 --- a/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); @@ -77,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -85,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -94,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -134,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected index ca0b790b2..42ee73fa7 100644 --- a/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); @@ -77,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -85,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -94,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -134,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected index 5f18311ad..dadac5eba 100644 --- a/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); @@ -77,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -85,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -94,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -134,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected index 5dbbbcf36..e69a7cf79 100644 --- a/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected @@ -1,62 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -72,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); @@ -83,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -91,7 +71,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -100,7 +79,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -144,4 +122,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected index ea54b06d5..03683bf99 100644 --- a/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected @@ -1,53 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); @@ -73,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -81,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -90,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -131,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected index 07e6010b9..af3ed023b 100644 --- a/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); @@ -77,7 +59,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -85,7 +66,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -94,7 +74,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -134,4 +113,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected index 53531d162..45c1b9b9c 100644 --- a/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected @@ -1,53 +1,38 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -62,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); @@ -73,7 +57,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -81,7 +64,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -90,7 +72,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -131,4 +112,3 @@ implementation main() return; } - diff --git a/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected index 6cded0856..b3c428e79 100644 --- a/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected @@ -1,58 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $y_addr: bv64; axiom ($y_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $y_addr) then true else (if (index == $x_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -68,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); @@ -79,7 +62,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -87,7 +69,6 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $y_addr) == memory_load32_le(mem, $y_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -96,7 +77,6 @@ implementation {:extern} guarantee_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -140,4 +120,3 @@ implementation main() return; } - diff --git a/src/test/correct/secret_write/clang/secret_write.expected b/src/test/correct/secret_write/clang/secret_write.expected index 20b761539..37552ea83 100644 --- a/src/test/correct/secret_write/clang/secret_write.expected +++ b/src/test/correct/secret_write/clang/secret_write.expected @@ -1,77 +1,52 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -87,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -99,7 +73,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -108,7 +81,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -117,7 +89,6 @@ implementation {:extern} guarantee_reflexive() assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -204,4 +175,3 @@ implementation main() return; } - diff --git a/src/test/correct/secret_write/clang_O2/secret_write.expected b/src/test/correct/secret_write/clang_O2/secret_write.expected index 78e1e2e73..bb9ba84c8 100644 --- a/src/test/correct/secret_write/clang_O2/secret_write.expected +++ b/src/test/correct/secret_write/clang_O2/secret_write.expected @@ -1,73 +1,50 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -83,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -95,7 +71,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -104,7 +79,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -113,7 +87,6 @@ implementation {:extern} guarantee_reflexive() assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -168,4 +141,3 @@ implementation main() return; } - diff --git a/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected b/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected index 09e7fa742..a4863b2d8 100644 --- a/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected +++ b/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected @@ -1,77 +1,52 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -87,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -99,7 +73,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -108,7 +81,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -117,7 +89,6 @@ implementation {:extern} guarantee_reflexive() assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -204,4 +175,3 @@ implementation main() return; } - diff --git a/src/test/correct/secret_write/clang_pic/secret_write.expected b/src/test/correct/secret_write/clang_pic/secret_write.expected index cc11c9742..16d7d4d2f 100644 --- a/src/test/correct/secret_write/clang_pic/secret_write.expected +++ b/src/test/correct/secret_write/clang_pic/secret_write.expected @@ -1,82 +1,56 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69692bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -95,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69560bv64) == 69684bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -107,7 +80,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -116,7 +88,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -125,7 +96,6 @@ implementation {:extern} guarantee_reflexive() assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -224,4 +194,3 @@ implementation main() return; } - diff --git a/src/test/correct/secret_write/gcc/secret_write.expected b/src/test/correct/secret_write/gcc/secret_write.expected index 2e26dcd88..2ebf18ad7 100644 --- a/src/test/correct/secret_write/gcc/secret_write.expected +++ b/src/test/correct/secret_write/gcc/secret_write.expected @@ -1,69 +1,48 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -79,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -91,7 +69,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -100,7 +77,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -109,7 +85,6 @@ implementation {:extern} guarantee_reflexive() assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -209,4 +184,3 @@ implementation main() return; } - diff --git a/src/test/correct/secret_write/gcc_O2/secret_write.expected b/src/test/correct/secret_write/gcc_O2/secret_write.expected index 9253c1f5c..fba8ecdab 100644 --- a/src/test/correct/secret_write/gcc_O2/secret_write.expected +++ b/src/test/correct/secret_write/gcc_O2/secret_write.expected @@ -1,73 +1,50 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_R3: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} R3: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -83,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -95,7 +71,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -104,7 +79,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -113,7 +87,6 @@ implementation {:extern} guarantee_reflexive() assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -168,4 +141,3 @@ implementation main() return; } - diff --git a/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected b/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected index c60a4ad31..a77ac4549 100644 --- a/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected +++ b/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected @@ -1,69 +1,48 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -79,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -91,7 +69,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -100,7 +77,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -109,7 +85,6 @@ implementation {:extern} guarantee_reflexive() assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -209,4 +184,3 @@ implementation main() return; } - diff --git a/src/test/correct/secret_write/gcc_pic/secret_write.expected b/src/test/correct/secret_write/gcc_pic/secret_write.expected index 2f32e3a43..dc3a71e02 100644 --- a/src/test/correct/secret_write/gcc_pic/secret_write.expected +++ b/src/test/correct/secret_write/gcc_pic/secret_write.expected @@ -1,74 +1,52 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $x_addr) then (bvsmod32(memory_load32_le(memory, $z_addr), 2bv32) == 0bv32) else (if (index == $z_addr) then true else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvsge"} bvsge32(bv32, bv32) returns (bool); - function {:extern} {:bvbuiltin "bvsmod"} bvsmod32(bv32, bv32) returns (bv32); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -87,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 68992bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); @@ -99,7 +76,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -108,7 +84,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -117,7 +92,6 @@ implementation {:extern} guarantee_reflexive() assert bvsge32(memory_load32_le(mem, $z_addr), memory_load32_le(mem, $z_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -231,4 +205,3 @@ implementation main() return; } - diff --git a/src/test/correct/simple_jump/clang/simple_jump.expected b/src/test/correct/simple_jump/clang/simple_jump.expected index 54a8897b1..c13247726 100644 --- a/src/test/correct/simple_jump/clang/simple_jump.expected +++ b/src/test/correct/simple_jump/clang/simple_jump.expected @@ -1,76 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1892bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -85,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -203,4 +172,3 @@ implementation main() goto l0000034b; } - diff --git a/src/test/correct/simple_jump/clang_O2/simple_jump.expected b/src/test/correct/simple_jump/clang_O2/simple_jump.expected index 37b720b0f..7d1470198 100644 --- a/src/test/correct/simple_jump/clang_O2/simple_jump.expected +++ b/src/test/correct/simple_jump/clang_O2/simple_jump.expected @@ -1,26 +1,18 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1840bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -35,7 +27,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,16 +38,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -86,4 +74,3 @@ implementation main() return; } - diff --git a/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected b/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected index 0cc0f3e97..551d072fa 100644 --- a/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected @@ -1,76 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1892bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -85,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -203,4 +172,3 @@ implementation main() goto l0000095d; } - diff --git a/src/test/correct/simple_jump/clang_pic/simple_jump.expected b/src/test/correct/simple_jump/clang_pic/simple_jump.expected index 0cc0f3e97..551d072fa 100644 --- a/src/test/correct/simple_jump/clang_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/clang_pic/simple_jump.expected @@ -1,76 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1892bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -85,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -97,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -203,4 +172,3 @@ implementation main() goto l0000095d; } - diff --git a/src/test/correct/simple_jump/gcc/simple_jump.expected b/src/test/correct/simple_jump/gcc/simple_jump.expected index 9b6e9d550..997c74768 100644 --- a/src/test/correct/simple_jump/gcc/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc/simple_jump.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1876bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -173,4 +144,3 @@ implementation main() goto l0000031f; } - diff --git a/src/test/correct/simple_jump/gcc_O2/simple_jump.expected b/src/test/correct/simple_jump/gcc_O2/simple_jump.expected index 69a6690ea..b4a6fbd45 100644 --- a/src/test/correct/simple_jump/gcc_O2/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc_O2/simple_jump.expected @@ -1,26 +1,18 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -35,7 +27,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,16 +38,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -86,4 +74,3 @@ implementation main() return; } - diff --git a/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected b/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected index b340c6bdc..bde5b3446 100644 --- a/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1876bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -173,4 +144,3 @@ implementation main() goto l000008f6; } - diff --git a/src/test/correct/simple_jump/gcc_pic/simple_jump.expected b/src/test/correct/simple_jump/gcc_pic/simple_jump.expected index b340c6bdc..bde5b3446 100644 --- a/src/test/correct/simple_jump/gcc_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc_pic/simple_jump.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1876bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -173,4 +144,3 @@ implementation main() goto l000008f6; } - diff --git a/src/test/correct/switch/clang/switch.expected b/src/test/correct/switch/clang/switch.expected index 8d555cf74..7cf81b32f 100644 --- a/src/test/correct/switch/clang/switch.expected +++ b/src/test/correct/switch/clang/switch.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1936bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R31, Gamma_R8, Gamma_stack, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -256,4 +227,3 @@ implementation main() goto l000003d7; } - diff --git a/src/test/correct/switch/clang_O2/switch.expected b/src/test/correct/switch/clang_O2/switch.expected index 950c0b6b7..732a8ca19 100644 --- a/src/test/correct/switch/clang_O2/switch.expected +++ b/src/test/correct/switch/clang_O2/switch.expected @@ -1,22 +1,16 @@ var {:extern} Gamma_mem: [bv64]bool; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1836bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -31,7 +25,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -43,16 +36,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); free requires (memory_load64_le(mem, 69664bv64) == 0bv64); free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); @@ -80,4 +70,3 @@ implementation main() return; } - diff --git a/src/test/correct/switch/clang_no_plt_no_pic/switch.expected b/src/test/correct/switch/clang_no_plt_no_pic/switch.expected index 16869f2b4..780086db6 100644 --- a/src/test/correct/switch/clang_no_plt_no_pic/switch.expected +++ b/src/test/correct/switch/clang_no_plt_no_pic/switch.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1936bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R31, Gamma_R8, Gamma_stack, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -256,4 +227,3 @@ implementation main() goto l00000a8c; } - diff --git a/src/test/correct/switch/clang_pic/switch.expected b/src/test/correct/switch/clang_pic/switch.expected index 16869f2b4..780086db6 100644 --- a/src/test/correct/switch/clang_pic/switch.expected +++ b/src/test/correct/switch/clang_pic/switch.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1936bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R31, Gamma_R8, Gamma_stack, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -256,4 +227,3 @@ implementation main() goto l00000a8c; } - diff --git a/src/test/correct/switch/gcc/switch.expected b/src/test/correct/switch/gcc/switch.expected index 5c92a9293..8551cd47c 100644 --- a/src/test/correct/switch/gcc/switch.expected +++ b/src/test/correct/switch/gcc/switch.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1916bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -206,4 +177,3 @@ implementation main() goto l00000391; } - diff --git a/src/test/correct/switch/gcc_O2/switch.expected b/src/test/correct/switch/gcc_O2/switch.expected index 4e913a701..1f67f99ba 100644 --- a/src/test/correct/switch/gcc_O2/switch.expected +++ b/src/test/correct/switch/gcc_O2/switch.expected @@ -1,22 +1,16 @@ var {:extern} Gamma_mem: [bv64]bool; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1896bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -31,7 +25,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -43,16 +36,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); free requires (memory_load64_le(mem, 69632bv64) == 0bv64); free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); @@ -80,4 +70,3 @@ implementation main() return; } - diff --git a/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected b/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected index 2f1d23918..df3aef469 100644 --- a/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected +++ b/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1916bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -206,4 +177,3 @@ implementation main() goto l000009f0; } - diff --git a/src/test/correct/switch/gcc_pic/switch.expected b/src/test/correct/switch/gcc_pic/switch.expected index 2f1d23918..df3aef469 100644 --- a/src/test/correct/switch/gcc_pic/switch.expected +++ b/src/test/correct/switch/gcc_pic/switch.expected @@ -1,72 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1916bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -206,4 +177,3 @@ implementation main() goto l000009f0; } - diff --git a/src/test/correct/switch2/clang_O2/switch2.expected b/src/test/correct/switch2/clang_O2/switch2.expected index 814de1d48..85e3ff4c3 100644 --- a/src/test/correct/switch2/clang_O2/switch2.expected +++ b/src/test/correct/switch2/clang_O2/switch2.expected @@ -1,21 +1,15 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} mem: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -30,7 +24,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -42,16 +35,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); requires (Gamma_R0 == true); free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -80,4 +70,3 @@ implementation main() return; } - diff --git a/src/test/correct/switch2/gcc/switch2.expected b/src/test/correct/switch2/gcc/switch2.expected index f9c319e2d..c82a7b6e5 100644 --- a/src/test/correct/switch2/gcc/switch2.expected +++ b/src/test/correct/switch2/gcc/switch2.expected @@ -1,98 +1,64 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -107,7 +73,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -119,16 +84,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; requires (Gamma_R0 == true); @@ -391,7 +353,6 @@ implementation main() goto l00000556; } - procedure r(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 2032bv64) == 1bv8); @@ -419,4 +380,3 @@ implementation r() return; } - diff --git a/src/test/correct/switch2/gcc_O2/switch2.expected b/src/test/correct/switch2/gcc_O2/switch2.expected index 8b1ebc1f2..29a8392ee 100644 --- a/src/test/correct/switch2/gcc_O2/switch2.expected +++ b/src/test/correct/switch2/gcc_O2/switch2.expected @@ -1,21 +1,15 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} mem: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -30,7 +24,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -42,16 +35,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); requires (Gamma_R0 == true); free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -80,4 +70,3 @@ implementation main() return; } - diff --git a/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected b/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected index 463dce49e..a031ba2c4 100644 --- a/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected +++ b/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected @@ -1,98 +1,64 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -107,7 +73,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -119,16 +84,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; requires (Gamma_R0 == true); @@ -391,7 +353,6 @@ implementation main() goto l00000db5; } - procedure r(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 2032bv64) == 1bv8); @@ -419,4 +380,3 @@ implementation r() return; } - diff --git a/src/test/correct/switch2/gcc_pic/switch2.expected b/src/test/correct/switch2/gcc_pic/switch2.expected index 463dce49e..a031ba2c4 100644 --- a/src/test/correct/switch2/gcc_pic/switch2.expected +++ b/src/test/correct/switch2/gcc_pic/switch2.expected @@ -1,98 +1,64 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvand"} bvand1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -107,7 +73,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -119,16 +84,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; requires (Gamma_R0 == true); @@ -391,7 +353,6 @@ implementation main() goto l00000db5; } - procedure r(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 2032bv64) == 1bv8); @@ -419,4 +380,3 @@ implementation r() return; } - diff --git a/src/test/correct/syscall/clang/syscall.expected b/src/test/correct/syscall/clang/syscall.expected index 3b37899d3..f3b6a3778 100644 --- a/src/test/correct/syscall/clang/syscall.expected +++ b/src/test/correct/syscall/clang/syscall.expected @@ -1,91 +1,61 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1944bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -100,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -112,16 +81,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1944bv64) == 1bv8); @@ -142,7 +108,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -204,4 +169,3 @@ implementation main() return; } - diff --git a/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected b/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected index da545fa06..a1f90b56f 100644 --- a/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected +++ b/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected @@ -1,91 +1,61 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1944bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -100,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -112,16 +81,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1944bv64) == 1bv8); @@ -142,7 +108,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -204,4 +169,3 @@ implementation main() return; } - diff --git a/src/test/correct/syscall/clang_pic/syscall.expected b/src/test/correct/syscall/clang_pic/syscall.expected index da545fa06..a1f90b56f 100644 --- a/src/test/correct/syscall/clang_pic/syscall.expected +++ b/src/test/correct/syscall/clang_pic/syscall.expected @@ -1,91 +1,61 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1944bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -100,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -112,16 +81,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1944bv64) == 1bv8); @@ -142,7 +108,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -204,4 +169,3 @@ implementation main() return; } - diff --git a/src/test/correct/syscall/gcc/syscall.expected b/src/test/correct/syscall/gcc/syscall.expected index 1b8025136..6f67c7e89 100644 --- a/src/test/correct/syscall/gcc/syscall.expected +++ b/src/test/correct/syscall/gcc/syscall.expected @@ -1,91 +1,61 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1932bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -100,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -112,16 +81,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1932bv64) == 1bv8); @@ -142,7 +108,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -199,4 +164,3 @@ implementation main() return; } - diff --git a/src/test/correct/syscall/gcc_O2/syscall.expected b/src/test/correct/syscall/gcc_O2/syscall.expected index ccab5d71a..b59eaae8b 100644 --- a/src/test/correct/syscall/gcc_O2/syscall.expected +++ b/src/test/correct/syscall/gcc_O2/syscall.expected @@ -1,30 +1,20 @@ var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R16: bv64; - var {:extern} R17: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1960bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -39,7 +29,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -51,16 +40,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -83,4 +69,3 @@ procedure fork(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected b/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected index 0701ee358..a7d62f43d 100644 --- a/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected +++ b/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected @@ -1,91 +1,61 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1932bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -100,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -112,16 +81,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1932bv64) == 1bv8); @@ -142,7 +108,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -199,4 +164,3 @@ implementation main() return; } - diff --git a/src/test/correct/syscall/gcc_pic/syscall.expected b/src/test/correct/syscall/gcc_pic/syscall.expected index 0701ee358..a7d62f43d 100644 --- a/src/test/correct/syscall/gcc_pic/syscall.expected +++ b/src/test/correct/syscall/gcc_pic/syscall.expected @@ -1,91 +1,61 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R16: bool; - var {:extern} Gamma_R17: bool; - var {:extern} Gamma_R29: bool; - var {:extern} Gamma_R30: bool; - var {:extern} Gamma_R31: 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} R29: bv64; - var {:extern} R30: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $_IO_stdin_used_addr: bv64; axiom ($_IO_stdin_used_addr == 1932bv64); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -100,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -112,16 +81,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1932bv64) == 1bv8); @@ -142,7 +108,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -199,4 +164,3 @@ implementation main() return; } - diff --git a/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected index 38c606af3..b7934730b 100644 --- a/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected @@ -1,84 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -93,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -104,7 +74,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -112,7 +81,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -121,7 +89,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -223,4 +190,3 @@ implementation main() goto l00000358; } - diff --git a/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected index 49e02cacb..0ab65d084 100644 --- a/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected @@ -1,66 +1,43 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -75,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -86,7 +62,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -94,7 +69,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -103,7 +77,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_mem, R0, R8, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -171,4 +144,3 @@ implementation main() goto l000002e8; } - diff --git a/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected index 4b4a5ecfc..a5602309f 100644 --- a/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected @@ -1,84 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -93,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -104,7 +74,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -112,7 +81,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -121,7 +89,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -223,4 +190,3 @@ implementation main() goto l00000973; } - diff --git a/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected index b21bfcc7c..faa42ab6b 100644 --- a/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected @@ -1,89 +1,59 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -99,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -110,7 +79,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -118,7 +86,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -127,7 +94,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R31, R8, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -233,4 +199,3 @@ implementation main() goto l00000363; } - diff --git a/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected index 4a00ec065..5c16e34e1 100644 --- a/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected @@ -1,62 +1,41 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -71,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -82,7 +60,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -90,7 +67,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -99,7 +75,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -168,4 +143,3 @@ implementation main() goto l00000309; } - diff --git a/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected index b3bc6fe65..2e1666df4 100644 --- a/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected @@ -1,62 +1,41 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -71,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -82,7 +60,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -90,7 +67,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -99,7 +75,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -167,4 +142,3 @@ implementation main() goto l000001d2; } - diff --git a/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected index 6792c5c30..1e8e50938 100644 --- a/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected @@ -1,62 +1,41 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -71,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -82,7 +60,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -90,7 +67,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -99,7 +75,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -168,4 +143,3 @@ implementation main() goto l000008c2; } - diff --git a/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected index 4653d9457..53779891b 100644 --- a/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected @@ -1,67 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -77,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -88,7 +65,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -96,7 +72,6 @@ implementation {:extern} rely_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -105,7 +80,6 @@ implementation {:extern} guarantee_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure main(); modifies Gamma_R0, Gamma_mem, R0, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -177,4 +151,3 @@ implementation main() goto l0000030a; } - diff --git a/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected index 094a403b5..ea0fd7b38 100644 --- a/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected @@ -1,62 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -71,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); @@ -82,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -90,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -99,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -140,4 +118,3 @@ implementation main() return; } - diff --git a/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected index a28d634bd..5e9d099bf 100644 --- a/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected @@ -1,62 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -71,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); @@ -82,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -90,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -99,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -140,4 +118,3 @@ implementation main() return; } - diff --git a/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected index 588b1e097..063922c11 100644 --- a/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected @@ -1,62 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -71,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); @@ -82,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -90,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -99,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -140,4 +118,3 @@ implementation main() return; } - diff --git a/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected index e4cc8c581..8c496236e 100644 --- a/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected @@ -1,67 +1,48 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69684bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -77,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); @@ -88,7 +68,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -96,7 +75,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -105,7 +83,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -150,4 +127,3 @@ implementation main() return; } - diff --git a/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected index b9e64be8a..27ded439f 100644 --- a/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected @@ -1,58 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); @@ -78,7 +61,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -86,7 +68,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -95,7 +76,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -137,4 +117,3 @@ implementation main() return; } - diff --git a/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected index 2f42c459c..9fa395c33 100644 --- a/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected @@ -1,62 +1,44 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -71,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); @@ -82,7 +63,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -90,7 +70,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -99,7 +78,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -140,4 +118,3 @@ implementation main() return; } - diff --git a/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected index 80dd00a8e..17c400c32 100644 --- a/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected @@ -1,58 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -67,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); @@ -78,7 +61,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -86,7 +68,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -95,7 +76,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -137,4 +117,3 @@ implementation main() return; } - diff --git a/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected index 1cf4df81e..fba1f0d18 100644 --- a/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected @@ -1,63 +1,46 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $x_addr) then (memory_load32_le(memory, $z_addr) == 0bv32) else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -73,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); @@ -84,7 +66,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -92,7 +73,6 @@ implementation {:extern} rely_reflexive() assert ((memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)) && (memory_load32_le(mem, $z_addr) == memory_load32_le(mem, $z_addr))); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; @@ -101,7 +81,6 @@ implementation {:extern} guarantee_reflexive() assert (gamma_load32(Gamma_mem, $x_addr) ==> gamma_load32(Gamma_mem, $x_addr)); } - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires ((memory_load32_le(mem, $z_addr) == 0bv32) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -146,4 +125,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign/clang/basicassign.expected b/src/test/incorrect/basicassign/clang/basicassign.expected index b9c75990c..d5c211adc 100644 --- a/src/test/incorrect/basicassign/clang/basicassign.expected +++ b/src/test/incorrect/basicassign/clang/basicassign.expected @@ -1,75 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R11: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R11: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69692bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -84,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -95,7 +70,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -103,12 +77,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -169,4 +141,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign/clang_O2/basicassign.expected b/src/test/incorrect/basicassign/clang_O2/basicassign.expected index bfee5b1dd..f6f57fe4e 100644 --- a/src/test/incorrect/basicassign/clang_O2/basicassign.expected +++ b/src/test/incorrect/basicassign/clang_O2/basicassign.expected @@ -1,71 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69692bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -80,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -91,7 +68,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -99,12 +75,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -147,4 +121,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected b/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected index a07e14129..f7bc8499a 100644 --- a/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected @@ -1,75 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R11: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R11: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69692bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -84,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -95,7 +70,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -103,12 +77,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -169,4 +141,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign/clang_pic/basicassign.expected b/src/test/incorrect/basicassign/clang_pic/basicassign.expected index dd5714462..2bd69b5cf 100644 --- a/src/test/incorrect/basicassign/clang_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/clang_pic/basicassign.expected @@ -1,80 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R11: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R11: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69692bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -92,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69560bv64) == 69692bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -103,7 +77,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -111,12 +84,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -189,4 +160,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign/gcc/basicassign.expected b/src/test/incorrect/basicassign/gcc/basicassign.expected index bd5b8acf6..a1f0d4c2f 100644 --- a/src/test/incorrect/basicassign/gcc/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc/basicassign.expected @@ -1,63 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -72,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -83,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -91,12 +71,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -172,4 +150,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign/gcc_O2/basicassign.expected b/src/test/incorrect/basicassign/gcc_O2/basicassign.expected index 93007cf8c..d35ed3cc9 100644 --- a/src/test/incorrect/basicassign/gcc_O2/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc_O2/basicassign.expected @@ -1,67 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69652bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69656bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69660bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -76,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -87,7 +66,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -95,12 +73,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -145,4 +121,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected b/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected index d2d4ccec5..b1619ca6e 100644 --- a/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected @@ -1,63 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -72,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -83,7 +64,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -91,12 +71,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -172,4 +150,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign/gcc_pic/basicassign.expected b/src/test/incorrect/basicassign/gcc_pic/basicassign.expected index e25f3553f..1e169ff2f 100644 --- a/src/test/incorrect/basicassign/gcc_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc_pic/basicassign.expected @@ -1,68 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69660bv64); - const {:extern} $x_addr: bv64; axiom ($x_addr == 69652bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else (if (index == $x_addr) then false else false))) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (forall i: bv64 :: (((mem[i] == old(mem[i])) ==> (Gamma_mem[i] == old(Gamma_mem[i]))))); @@ -80,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 68992bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -91,7 +71,6 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); implementation {:extern} rely_reflexive() @@ -99,12 +78,10 @@ implementation {:extern} rely_reflexive() assert (memory_load32_le(mem, $x_addr) == memory_load32_le(mem, $x_addr)); } - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -195,4 +172,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign1/clang/basicassign1.expected b/src/test/incorrect/basicassign1/clang/basicassign1.expected index ab4a350ac..09dc564b9 100644 --- a/src/test/incorrect/basicassign1/clang/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang/basicassign1.expected @@ -1,73 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -159,4 +131,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected b/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected index 9e29f7432..5078c4b18 100644 --- a/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected @@ -1,61 +1,43 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -70,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,16 +63,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -129,4 +107,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected b/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected index 9e9f4a2b7..5a25be7df 100644 --- a/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected @@ -1,73 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -159,4 +131,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected b/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected index 680541986..4aa74ecf7 100644 --- a/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected @@ -1,78 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -89,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -101,16 +75,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -174,4 +145,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign1/gcc/basicassign1.expected b/src/test/incorrect/basicassign1/gcc/basicassign1.expected index f46bd5aa1..b43a9e399 100644 --- a/src/test/incorrect/basicassign1/gcc/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc/basicassign1.expected @@ -1,65 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -74,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -86,16 +65,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -157,4 +133,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected b/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected index 36a46a0f1..9e4445624 100644 --- a/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected @@ -1,61 +1,43 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -70,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,16 +63,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -129,4 +107,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected b/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected index 50635b482..30b187795 100644 --- a/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected @@ -1,65 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -74,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -86,16 +65,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -157,4 +133,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected b/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected index 6e89734bd..ca0fb4572 100644 --- a/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected @@ -1,70 +1,49 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $z_addr: bv64; axiom ($z_addr == 69652bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else false) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -93,16 +71,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -172,4 +147,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign2/clang/basicassign2.expected b/src/test/incorrect/basicassign2/clang/basicassign2.expected index b7f3b26d4..d437763d7 100644 --- a/src/test/incorrect/basicassign2/clang/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang/basicassign2.expected @@ -1,69 +1,46 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69696bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -78,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,16 +66,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -155,4 +128,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected b/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected index ebdf9987b..7c4257fb6 100644 --- a/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69696bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,16 +60,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -125,4 +104,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected b/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected index 61784c6b5..f5803fd15 100644 --- a/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected @@ -1,69 +1,46 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69696bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -78,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,16 +66,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -155,4 +128,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected b/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected index f24dd8328..38709843a 100644 --- a/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected @@ -1,69 +1,46 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69688bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69696bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -80,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -92,16 +68,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -165,4 +138,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign2/gcc/basicassign2.expected b/src/test/incorrect/basicassign2/gcc/basicassign2.expected index 2a4c93323..3b282fe5d 100644 --- a/src/test/incorrect/basicassign2/gcc/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc/basicassign2.expected @@ -1,61 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69664bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -70,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,16 +62,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -153,4 +130,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected b/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected index b08eeaeb9..21a4f0268 100644 --- a/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected @@ -1,57 +1,40 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69664bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -66,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,16 +60,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -125,4 +104,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected b/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected index 93dcfc30d..5c9d19dbb 100644 --- a/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected @@ -1,61 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69664bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -70,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,16 +62,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -153,4 +130,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected b/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected index 4472e5532..f2a37ac51 100644 --- a/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected @@ -1,61 +1,42 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69664bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69656bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $z_addr) then true else (if (index == $secret_addr) then false else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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)); @@ -72,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -84,16 +64,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -163,4 +140,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign3/clang/basicassign3.expected b/src/test/incorrect/basicassign3/clang/basicassign3.expected index 9597a91a8..4cdf9fa9a 100644 --- a/src/test/incorrect/basicassign3/clang/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang/basicassign3.expected @@ -1,71 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69681bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69682bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } - 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]))))))) + (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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -80,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -92,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -157,4 +129,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected b/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected index 496e9fdd1..a2d0477ba 100644 --- a/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected @@ -1,59 +1,41 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69684bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69688bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } - 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]))))))) + (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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -68,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -80,16 +61,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -127,4 +105,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected b/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected index d8ac21d5a..c106f2df6 100644 --- a/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected @@ -1,71 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69681bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69682bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } - 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]))))))) + (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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -80,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -92,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -157,4 +129,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected b/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected index b4aada9b1..a5ed33ca2 100644 --- a/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected @@ -1,76 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R10: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R10: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69681bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69682bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -87,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -99,16 +73,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -172,4 +143,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign3/gcc/basicassign3.expected b/src/test/incorrect/basicassign3/gcc/basicassign3.expected index 661e32b5d..0f296bcbe 100644 --- a/src/test/incorrect/basicassign3/gcc/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc/basicassign3.expected @@ -1,63 +1,43 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69650bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69649bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } - 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]))))))) + (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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -72,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -84,16 +63,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -155,4 +131,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected b/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected index cbcf197f8..c7c59a99c 100644 --- a/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected @@ -1,59 +1,41 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R2: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R2: bv64; - var {:extern} mem: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69650bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69649bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } - 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]))))))) + (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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -68,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -80,16 +61,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -127,4 +105,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected b/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected index 43b16ff36..e9ba3792f 100644 --- a/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected @@ -1,63 +1,43 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69650bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69649bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { gammaMap[index] } - 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]))))))) + (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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -72,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -84,16 +63,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -155,4 +131,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected b/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected index 6f525fcf7..4fd690d95 100644 --- a/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected @@ -1,68 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - const {:extern} $secret_addr: bv64; axiom ($secret_addr == 69650bv64); - const {:extern} $z_addr: bv64; axiom ($z_addr == 69649bv64); - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { (if (index == $secret_addr) then false else (if (index == $z_addr) then true else false)) } - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - 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]))))))) + (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_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]))))))) + (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_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } - function {:extern} {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -79,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -91,16 +69,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -170,4 +145,3 @@ implementation main() return; } - diff --git a/src/test/incorrect/iflocal/clang/iflocal.expected b/src/test/incorrect/iflocal/clang/iflocal.expected index 2923c7e88..4b89a18ad 100644 --- a/src/test/incorrect/iflocal/clang/iflocal.expected +++ b/src/test/incorrect/iflocal/clang/iflocal.expected @@ -1,73 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -202,4 +172,3 @@ implementation main() goto l00000359; } - diff --git a/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected b/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected index 1b13c1089..27d369d35 100644 --- a/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected @@ -1,73 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -202,4 +172,3 @@ implementation main() goto l0000097b; } - diff --git a/src/test/incorrect/iflocal/clang_pic/iflocal.expected b/src/test/incorrect/iflocal/clang_pic/iflocal.expected index 1b13c1089..27d369d35 100644 --- a/src/test/incorrect/iflocal/clang_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/clang_pic/iflocal.expected @@ -1,73 +1,47 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,16 +67,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -202,4 +172,3 @@ implementation main() goto l0000097b; } - diff --git a/src/test/incorrect/iflocal/gcc/iflocal.expected b/src/test/incorrect/iflocal/gcc/iflocal.expected index 4d79ba51d..ea37ce624 100644 --- a/src/test/incorrect/iflocal/gcc/iflocal.expected +++ b/src/test/incorrect/iflocal/gcc/iflocal.expected @@ -1,69 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,16 +65,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -172,4 +144,3 @@ implementation main() goto l0000032d; } - diff --git a/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected b/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected index c634cd4db..62677719f 100644 --- a/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected @@ -1,69 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,16 +65,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -172,4 +144,3 @@ implementation main() goto l00000914; } - diff --git a/src/test/incorrect/iflocal/gcc_pic/iflocal.expected b/src/test/incorrect/iflocal/gcc_pic/iflocal.expected index c634cd4db..62677719f 100644 --- a/src/test/incorrect/iflocal/gcc_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/gcc_pic/iflocal.expected @@ -1,69 +1,45 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,16 +65,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -172,4 +144,3 @@ implementation main() goto l00000914; } - diff --git a/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected index aabbb9475..d9ea93143 100644 --- a/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected @@ -1,82 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -91,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -103,16 +73,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -321,4 +288,3 @@ implementation main() goto l0000042c; } - diff --git a/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected index 3337c6e95..48abbd03d 100644 --- a/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected @@ -1,82 +1,53 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -91,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -103,16 +73,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -321,4 +288,3 @@ implementation main() goto l00000b7c; } - diff --git a/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected index 60d4ab371..04a44e79d 100644 --- a/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected @@ -1,97 +1,65 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_R8: bool; - var {:extern} Gamma_R9: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R31: bv64; - var {:extern} R8: bv64; - var {:extern} R9: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - 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_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - 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} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -108,7 +76,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -120,16 +87,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -348,4 +312,3 @@ implementation main() goto l00000449; } - diff --git a/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected index 5bb1b4eeb..a876025aa 100644 --- a/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected @@ -1,78 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -87,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -99,16 +71,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -248,4 +217,3 @@ implementation main() goto l000003ed; } - diff --git a/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected index 526812505..d9f0b868e 100644 --- a/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected @@ -1,78 +1,51 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) } - function {:extern} gamma_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -87,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -99,16 +71,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -248,4 +217,3 @@ implementation main() goto l00000ae5; } - diff --git a/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected index 705cdf81b..9677f4eae 100644 --- a/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected @@ -1,83 +1,55 @@ var {:extern} Gamma_R0: bool; - var {:extern} Gamma_R1: bool; - var {:extern} Gamma_R31: bool; - var {:extern} Gamma_mem: [bv64]bool; - var {:extern} Gamma_stack: [bv64]bool; - var {:extern} R0: bv64; - var {:extern} R1: bv64; - var {:extern} R31: bv64; - var {:extern} mem: [bv64]bv8; - var {:extern} stack: [bv64]bv8; - function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { false } - function {:extern} {:bvbuiltin "bvadd"} bvadd32(bv32, bv32) returns (bv32); - function {:extern} {:bvbuiltin "bvadd"} bvadd33(bv33, bv33) returns (bv33); - function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp1(bv1, bv1) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp32(bv32, bv32) returns (bv1); - function {:extern} {:bvbuiltin "bvcomp"} bvcomp33(bv33, bv33) returns (bv1); - function {:extern} {:bvbuiltin "bvnot"} bvnot1(bv1) returns (bv1); - 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]))) + (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]))))))) + (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_store32(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] } - function {:extern} memory_load32_le(memory: [bv64]bv8, index: bv64) returns (bv32) { - (memory[bvadd64(index, 3bv64)]++(memory[bvadd64(index, 2bv64)]++(memory[bvadd64(index, 1bv64)]++memory[index]))) + (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))) } - 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]))))))) + (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_store32_le(memory: [bv64]bv8, index: bv64, value: bv32) 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]] } - function {:extern} {:bvbuiltin "sign_extend 1"} sign_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 1"} zero_extend1_32(bv32) returns (bv33); - function {:extern} {:bvbuiltin "zero_extend 32"} zero_extend32_32(bv32) returns (bv64); - procedure {:extern} rely(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -94,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -106,16 +77,13 @@ implementation {:extern} rely_transitive() call rely(); } - procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -263,4 +231,3 @@ implementation main() goto l000003f0; } - From 9f77d2c1afb8c3f0b13031719f7bdb350681a33e Mon Sep 17 00:00:00 2001 From: l-kent Date: Fri, 12 Jan 2024 12:23:32 +1000 Subject: [PATCH 25/36] maintain existing minor simplification of conditions --- src/main/scala/translating/BAPToIR.scala | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/scala/translating/BAPToIR.scala b/src/main/scala/translating/BAPToIR.scala index 185958850..5b74774d7 100644 --- a/src/main/scala/translating/BAPToIR.scala +++ b/src/main/scala/translating/BAPToIR.scala @@ -147,13 +147,26 @@ class BAPToIR(var program: BAPProgram, mainAddress: Int) { * Converts a BAPExpr condition that returns a bitvector of size 1 to an Expr condition that returns a Boolean * * If negative is true then the negation of the condition is returned + * + * If the BAPExpr uses a comparator that returns a Boolean then no further conversion is performed except negation, + * if necessary. * */ private def convertConditionBool(expr: BAPExpr, negative: Boolean): Expr = { - val boolExpr = coerceToBool(expr.toIR) - if (negative) { - UnaryExpr(BoolNOT, boolExpr) - } else { - boolExpr + val e = expr.toIR + e.getType match { + case BitVecType(s) => + if (negative) { + BinaryExpr(BVEQ, e, BitVecLiteral(0, s)) + } else { + BinaryExpr(BVNEQ, e, BitVecLiteral(0, s)) + } + case BoolType => + if (negative) { + UnaryExpr(BoolNOT, e) + } else { + e + } + case _ => ??? } } From ef0c6f7384a906a2d787fcc93efb331237ff4dbc Mon Sep 17 00:00:00 2001 From: l-kent Date: Fri, 12 Jan 2024 12:42:25 +1000 Subject: [PATCH 26/36] remove more extraneous line breaks --- src/main/scala/boogie/BProgram.scala | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/scala/boogie/BProgram.scala b/src/main/scala/boogie/BProgram.scala index 2df7a1f8e..7eae0b359 100644 --- a/src/main/scala/boogie/BProgram.scala +++ b/src/main/scala/boogie/BProgram.scala @@ -65,10 +65,16 @@ case class BProcedure( List() } - List( - header + returns + ";" - ) ++ modifiesStr ++ requiresStrs ++ freeRequiresStrs ++ ensuresStrs ++ freeEnsuresStrs++ List("") - ++ (if body.nonEmpty then List(implHeader + returns) ++ bodyStr ++ List("") else List("")) + val procDecl = s"$header$returns;" + val procList = List(procDecl) ++ modifiesStr ++ requiresStrs ++ freeRequiresStrs ++ ensuresStrs ++ freeEnsuresStrs + val implDecl = s"$implHeader$returns" + val implList = if (body.nonEmpty) { + List("", implDecl) ++ bodyStr + } else { + List() + } + + procList ++ implList ++ List("") } override def toString: String = toBoogie.mkString("\n") def functionOps: Set[FunctionOp] = From c496b0384e69836a1f3dca03ce8cad3c61440693 Mon Sep 17 00:00:00 2001 From: l-kent Date: Fri, 12 Jan 2024 12:43:11 +1000 Subject: [PATCH 27/36] update expected --- .../clang/arrays_simple.expected | 3 -- .../clang_O2/arrays_simple.expected | 3 -- .../arrays_simple.expected | 3 -- .../clang_pic/arrays_simple.expected | 3 -- .../gcc_O2/arrays_simple.expected | 3 -- .../clang/basic_arrays_read.expected | 1 - .../clang_O2/basic_arrays_read.expected | 1 - .../basic_arrays_read.expected | 1 - .../clang_pic/basic_arrays_read.expected | 1 - .../gcc/basic_arrays_read.expected | 1 - .../gcc_O2/basic_arrays_read.expected | 1 - .../basic_arrays_read.expected | 1 - .../gcc_pic/basic_arrays_read.expected | 1 - .../clang/basic_arrays_write.expected | 1 - .../clang_O2/basic_arrays_write.expected | 1 - .../basic_arrays_write.expected | 1 - .../clang_pic/basic_arrays_write.expected | 1 - .../gcc/basic_arrays_write.expected | 1 - .../gcc_O2/basic_arrays_write.expected | 1 - .../basic_arrays_write.expected | 1 - .../gcc_pic/basic_arrays_write.expected | 1 - .../clang/basic_assign_assign.expected | 1 - .../clang_O2/basic_assign_assign.expected | 1 - .../basic_assign_assign.expected | 1 - .../clang_pic/basic_assign_assign.expected | 1 - .../gcc/basic_assign_assign.expected | 1 - .../gcc_O2/basic_assign_assign.expected | 1 - .../basic_assign_assign.expected | 1 - .../gcc_pic/basic_assign_assign.expected | 1 - .../clang/basic_assign_increment.expected | 1 - .../clang_O2/basic_assign_increment.expected | 1 - .../basic_assign_increment.expected | 1 - .../clang_pic/basic_assign_increment.expected | 1 - .../gcc/basic_assign_increment.expected | 1 - .../gcc_O2/basic_assign_increment.expected | 1 - .../basic_assign_increment.expected | 1 - .../gcc_pic/basic_assign_increment.expected | 1 - .../clang/basic_function_call_caller.expected | 1 - .../basic_function_call_caller.expected | 1 - .../basic_function_call_caller.expected | 1 - .../basic_function_call_caller.expected | 1 - .../gcc/basic_function_call_caller.expected | 1 - .../basic_function_call_caller.expected | 1 - .../basic_function_call_caller.expected | 1 - .../basic_function_call_caller.expected | 1 - .../clang/basic_function_call_reader.expected | 5 +- .../basic_function_call_reader.expected | 3 +- .../basic_function_call_reader.expected | 5 +- .../basic_function_call_reader.expected | 5 +- .../gcc/basic_function_call_reader.expected | 3 +- .../basic_function_call_reader.expected | 3 +- .../basic_function_call_reader.expected | 3 +- .../basic_function_call_reader.expected | 3 +- .../clang/basic_lock_read.expected | 5 +- .../clang_O2/basic_lock_read.expected | 3 +- .../basic_lock_read.expected | 5 +- .../clang_pic/basic_lock_read.expected | 5 +- .../gcc/basic_lock_read.expected | 3 +- .../gcc_O2/basic_lock_read.expected | 3 +- .../basic_lock_read.expected | 3 +- .../gcc_pic/basic_lock_read.expected | 3 +- .../clang/basic_lock_security_read.expected | 5 +- .../basic_lock_security_read.expected | 3 +- .../basic_lock_security_read.expected | 5 +- .../basic_lock_security_read.expected | 5 +- .../gcc/basic_lock_security_read.expected | 3 +- .../gcc_O2/basic_lock_security_read.expected | 3 +- .../basic_lock_security_read.expected | 3 +- .../gcc_pic/basic_lock_security_read.expected | 3 +- .../clang/basic_lock_security_write.expected | 1 - .../basic_lock_security_write.expected | 1 - .../basic_lock_security_write.expected | 1 - .../basic_lock_security_write.expected | 1 - .../gcc/basic_lock_security_write.expected | 1 - .../gcc_O2/basic_lock_security_write.expected | 1 - .../basic_lock_security_write.expected | 1 - .../basic_lock_security_write.expected | 1 - .../clang/basic_lock_unlock.expected | 1 - .../clang_O2/basic_lock_unlock.expected | 1 - .../basic_lock_unlock.expected | 1 - .../clang_pic/basic_lock_unlock.expected | 1 - .../gcc/basic_lock_unlock.expected | 1 - .../gcc_O2/basic_lock_unlock.expected | 1 - .../basic_lock_unlock.expected | 1 - .../gcc_pic/basic_lock_unlock.expected | 1 - .../clang/basic_loop_assign.expected | 1 - .../clang_O2/basic_loop_assign.expected | 1 - .../basic_loop_assign.expected | 1 - .../clang_pic/basic_loop_assign.expected | 1 - .../gcc/basic_loop_assign.expected | 1 - .../gcc_O2/basic_loop_assign.expected | 1 - .../basic_loop_assign.expected | 1 - .../gcc_pic/basic_loop_assign.expected | 1 - .../clang/basic_operation_evaluation.expected | 5 +- .../basic_operation_evaluation.expected | 3 -- .../basic_operation_evaluation.expected | 5 +- .../basic_operation_evaluation.expected | 5 +- .../gcc/basic_operation_evaluation.expected | 5 +- .../basic_operation_evaluation.expected | 3 -- .../basic_operation_evaluation.expected | 5 +- .../basic_operation_evaluation.expected | 5 +- .../clang/basic_sec_policy_read.expected | 5 +- .../clang_O2/basic_sec_policy_read.expected | 3 +- .../basic_sec_policy_read.expected | 5 +- .../clang_pic/basic_sec_policy_read.expected | 5 +- .../gcc/basic_sec_policy_read.expected | 3 +- .../gcc_O2/basic_sec_policy_read.expected | 3 +- .../basic_sec_policy_read.expected | 3 +- .../gcc_pic/basic_sec_policy_read.expected | 3 +- .../clang/basic_sec_policy_write.expected | 1 - .../clang_O2/basic_sec_policy_write.expected | 1 - .../basic_sec_policy_write.expected | 1 - .../clang_pic/basic_sec_policy_write.expected | 1 - .../gcc/basic_sec_policy_write.expected | 1 - .../gcc_O2/basic_sec_policy_write.expected | 1 - .../basic_sec_policy_write.expected | 1 - .../gcc_pic/basic_sec_policy_write.expected | 1 - .../clang/basicassign_gamma0.expected | 2 - .../clang_O2/basicassign_gamma0.expected | 2 - .../basicassign_gamma0.expected | 2 - .../clang_pic/basicassign_gamma0.expected | 2 - .../gcc/basicassign_gamma0.expected | 2 - .../gcc_O2/basicassign_gamma0.expected | 2 - .../basicassign_gamma0.expected | 2 - .../gcc_pic/basicassign_gamma0.expected | 2 - .../basicfree/clang/basicfree.expected | 5 -- .../basicfree/clang_O2/basicfree.expected | 3 -- .../clang_no_plt_no_pic/basicfree.expected | 5 -- .../basicfree/clang_pic/basicfree.expected | 5 -- .../correct/basicfree/gcc/basicfree.expected | 5 -- .../basicfree/gcc_O2/basicfree.expected | 3 -- .../gcc_no_plt_no_pic/basicfree.expected | 5 -- .../basicfree/gcc_pic/basicfree.expected | 5 -- src/test/correct/cjump/clang/cjump.expected | 7 +-- .../correct/cjump/clang_O2/cjump.expected | 3 -- .../cjump/clang_no_plt_no_pic/cjump.expected | 7 +-- .../correct/cjump/clang_pic/cjump.expected | 7 +-- src/test/correct/cjump/gcc/cjump.expected | 5 +- src/test/correct/cjump/gcc_O2/cjump.expected | 3 -- .../cjump/gcc_no_plt_no_pic/cjump.expected | 5 +- src/test/correct/cjump/gcc_pic/cjump.expected | 5 +- .../correct/function/clang/function.expected | 3 -- .../function/clang_O2/function.expected | 3 -- .../clang_no_plt_no_pic/function.expected | 3 -- .../function/clang_pic/function.expected | 3 -- .../correct/function/gcc/function.expected | 3 -- .../correct/function/gcc_O2/function.expected | 3 -- .../gcc_no_plt_no_pic/function.expected | 3 -- .../function/gcc_pic/function.expected | 3 -- .../function1/clang/function1.expected | 4 -- .../function1/clang_O2/function1.expected | 4 -- .../clang_no_plt_no_pic/function1.expected | 4 -- .../function1/clang_pic/function1.expected | 4 -- .../correct/function1/gcc/function1.expected | 4 -- .../function1/gcc_O2/function1.expected | 4 -- .../gcc_no_plt_no_pic/function1.expected | 4 -- .../function1/gcc_pic/function1.expected | 4 -- .../clang/functions_with_params.expected | 3 -- .../clang_O2/functions_with_params.expected | 3 -- .../functions_with_params.expected | 3 -- .../clang_pic/functions_with_params.expected | 3 -- .../gcc/functions_with_params.expected | 3 -- .../gcc_O2/functions_with_params.expected | 3 -- .../functions_with_params.expected | 3 -- .../gcc_pic/functions_with_params.expected | 3 -- .../ifbranches/clang/ifbranches.expected | 7 +-- .../ifbranches/clang_O2/ifbranches.expected | 5 +- .../clang_no_plt_no_pic/ifbranches.expected | 7 +-- .../ifbranches/clang_pic/ifbranches.expected | 7 +-- .../ifbranches/gcc/ifbranches.expected | 5 +- .../ifbranches/gcc_O2/ifbranches.expected | 5 +- .../gcc_no_plt_no_pic/ifbranches.expected | 5 +- .../ifbranches/gcc_pic/ifbranches.expected | 5 +- .../correct/ifglobal/clang/ifglobal.expected | 7 +-- .../ifglobal/clang_O2/ifglobal.expected | 5 +- .../clang_no_plt_no_pic/ifglobal.expected | 7 +-- .../ifglobal/clang_pic/ifglobal.expected | 7 +-- .../correct/ifglobal/gcc/ifglobal.expected | 5 +- .../correct/ifglobal/gcc_O2/ifglobal.expected | 5 +- .../gcc_no_plt_no_pic/ifglobal.expected | 5 +- .../ifglobal/gcc_pic/ifglobal.expected | 5 +- .../clang_O2/indirect_call.expected | 4 -- .../gcc_O2/indirect_call.expected | 4 -- .../clang/initialisation.expected | 3 -- .../clang_O2/initialisation.expected | 3 -- .../initialisation.expected | 3 -- .../clang_pic/initialisation.expected | 3 -- .../gcc/initialisation.expected | 3 -- .../gcc_O2/initialisation.expected | 3 -- .../gcc_no_plt_no_pic/initialisation.expected | 3 -- .../gcc_pic/initialisation.expected | 3 -- .../jumptable/clang_O2/jumptable.expected | 3 -- .../jumptable/gcc_O2/jumptable.expected | 3 -- .../jumptable3/gcc/jumptable3.expected | 47 +++++++++---------- .../jumptable3/gcc_O2/jumptable3.expected | 31 ++++++------ .../gcc_no_plt_no_pic/jumptable3.expected | 47 +++++++++---------- .../jumptable3/gcc_pic/jumptable3.expected | 47 +++++++++---------- .../clang/malloc_with_local.expected | 6 --- .../clang_O2/malloc_with_local.expected | 4 -- .../malloc_with_local.expected | 6 --- .../clang_pic/malloc_with_local.expected | 6 --- .../gcc/malloc_with_local.expected | 6 --- .../gcc_O2/malloc_with_local.expected | 4 -- .../malloc_with_local.expected | 6 --- .../gcc_pic/malloc_with_local.expected | 6 --- .../clang/malloc_with_local2.expected | 6 --- .../clang_O2/malloc_with_local2.expected | 4 -- .../malloc_with_local2.expected | 6 --- .../clang_pic/malloc_with_local2.expected | 6 --- .../gcc/malloc_with_local2.expected | 6 --- .../gcc_O2/malloc_with_local2.expected | 4 -- .../malloc_with_local2.expected | 6 --- .../gcc_pic/malloc_with_local2.expected | 6 --- .../clang/malloc_with_local3.expected | 6 --- .../clang_O2/malloc_with_local3.expected | 4 -- .../malloc_with_local3.expected | 6 --- .../clang_pic/malloc_with_local3.expected | 6 --- .../gcc/malloc_with_local3.expected | 6 --- .../gcc_O2/malloc_with_local3.expected | 6 --- .../malloc_with_local3.expected | 6 --- .../gcc_pic/malloc_with_local3.expected | 6 --- .../multi_malloc/clang/multi_malloc.expected | 6 --- .../clang_O2/multi_malloc.expected | 4 -- .../clang_no_plt_no_pic/multi_malloc.expected | 6 --- .../clang_pic/multi_malloc.expected | 6 --- .../multi_malloc/gcc/multi_malloc.expected | 6 --- .../multi_malloc/gcc_O2/multi_malloc.expected | 4 -- .../gcc_no_plt_no_pic/multi_malloc.expected | 6 --- .../gcc_pic/multi_malloc.expected | 6 --- .../correct/nestedif/clang/nestedif.expected | 15 +++--- .../nestedif/clang_O2/nestedif.expected | 3 -- .../clang_no_plt_no_pic/nestedif.expected | 15 +++--- .../nestedif/clang_pic/nestedif.expected | 15 +++--- .../correct/nestedif/gcc/nestedif.expected | 9 ++-- .../correct/nestedif/gcc_O2/nestedif.expected | 3 -- .../gcc_no_plt_no_pic/nestedif.expected | 9 ++-- .../nestedif/gcc_pic/nestedif.expected | 9 ++-- .../clang/no_interference_update_x.expected | 1 - .../no_interference_update_x.expected | 1 - .../no_interference_update_x.expected | 1 - .../no_interference_update_x.expected | 1 - .../gcc/no_interference_update_x.expected | 1 - .../gcc_O2/no_interference_update_x.expected | 1 - .../no_interference_update_x.expected | 1 - .../gcc_pic/no_interference_update_x.expected | 1 - .../clang/no_interference_update_y.expected | 1 - .../no_interference_update_y.expected | 1 - .../no_interference_update_y.expected | 1 - .../no_interference_update_y.expected | 1 - .../gcc/no_interference_update_y.expected | 1 - .../gcc_O2/no_interference_update_y.expected | 1 - .../no_interference_update_y.expected | 1 - .../gcc_pic/no_interference_update_y.expected | 1 - .../secret_write/clang/secret_write.expected | 1 - .../clang_O2/secret_write.expected | 1 - .../clang_no_plt_no_pic/secret_write.expected | 1 - .../clang_pic/secret_write.expected | 1 - .../secret_write/gcc/secret_write.expected | 1 - .../secret_write/gcc_O2/secret_write.expected | 1 - .../gcc_no_plt_no_pic/secret_write.expected | 1 - .../gcc_pic/secret_write.expected | 1 - .../simple_jump/clang/simple_jump.expected | 7 +-- .../simple_jump/clang_O2/simple_jump.expected | 3 -- .../clang_no_plt_no_pic/simple_jump.expected | 7 +-- .../clang_pic/simple_jump.expected | 7 +-- .../simple_jump/gcc/simple_jump.expected | 5 +- .../simple_jump/gcc_O2/simple_jump.expected | 3 -- .../gcc_no_plt_no_pic/simple_jump.expected | 5 +- .../simple_jump/gcc_pic/simple_jump.expected | 5 +- src/test/correct/switch/clang/switch.expected | 11 ++--- .../correct/switch/clang_O2/switch.expected | 3 -- .../clang_no_plt_no_pic/switch.expected | 11 ++--- .../correct/switch/clang_pic/switch.expected | 11 ++--- src/test/correct/switch/gcc/switch.expected | 7 +-- .../correct/switch/gcc_O2/switch.expected | 3 -- .../switch/gcc_no_plt_no_pic/switch.expected | 7 +-- .../correct/switch/gcc_pic/switch.expected | 7 +-- .../correct/switch2/clang_O2/switch2.expected | 3 -- src/test/correct/switch2/gcc/switch2.expected | 19 ++++---- .../correct/switch2/gcc_O2/switch2.expected | 3 -- .../gcc_no_plt_no_pic/switch2.expected | 19 ++++---- .../correct/switch2/gcc_pic/switch2.expected | 19 ++++---- .../correct/syscall/clang/syscall.expected | 4 -- .../clang_no_plt_no_pic/syscall.expected | 4 -- .../syscall/clang_pic/syscall.expected | 4 -- src/test/correct/syscall/gcc/syscall.expected | 4 -- .../correct/syscall/gcc_O2/syscall.expected | 4 -- .../gcc_no_plt_no_pic/syscall.expected | 4 -- .../correct/syscall/gcc_pic/syscall.expected | 4 -- .../clang/using_gamma_conditional.expected | 5 +- .../clang_O2/using_gamma_conditional.expected | 3 +- .../using_gamma_conditional.expected | 5 +- .../using_gamma_conditional.expected | 5 +- .../gcc/using_gamma_conditional.expected | 3 +- .../gcc_O2/using_gamma_conditional.expected | 3 +- .../using_gamma_conditional.expected | 3 +- .../gcc_pic/using_gamma_conditional.expected | 3 +- .../clang/using_gamma_write_z.expected | 1 - .../clang_O2/using_gamma_write_z.expected | 1 - .../using_gamma_write_z.expected | 1 - .../clang_pic/using_gamma_write_z.expected | 1 - .../gcc/using_gamma_write_z.expected | 1 - .../gcc_O2/using_gamma_write_z.expected | 1 - .../using_gamma_write_z.expected | 1 - .../gcc_pic/using_gamma_write_z.expected | 1 - .../basicassign/clang/basicassign.expected | 2 - .../basicassign/clang_O2/basicassign.expected | 2 - .../clang_no_plt_no_pic/basicassign.expected | 2 - .../clang_pic/basicassign.expected | 2 - .../basicassign/gcc/basicassign.expected | 2 - .../basicassign/gcc_O2/basicassign.expected | 2 - .../gcc_no_plt_no_pic/basicassign.expected | 2 - .../basicassign/gcc_pic/basicassign.expected | 2 - .../basicassign1/clang/basicassign1.expected | 3 -- .../clang_O2/basicassign1.expected | 3 -- .../clang_no_plt_no_pic/basicassign1.expected | 3 -- .../clang_pic/basicassign1.expected | 3 -- .../basicassign1/gcc/basicassign1.expected | 3 -- .../basicassign1/gcc_O2/basicassign1.expected | 3 -- .../gcc_no_plt_no_pic/basicassign1.expected | 3 -- .../gcc_pic/basicassign1.expected | 3 -- .../basicassign2/clang/basicassign2.expected | 3 -- .../clang_O2/basicassign2.expected | 3 -- .../clang_no_plt_no_pic/basicassign2.expected | 3 -- .../clang_pic/basicassign2.expected | 3 -- .../basicassign2/gcc/basicassign2.expected | 3 -- .../basicassign2/gcc_O2/basicassign2.expected | 3 -- .../gcc_no_plt_no_pic/basicassign2.expected | 3 -- .../gcc_pic/basicassign2.expected | 3 -- .../basicassign3/clang/basicassign3.expected | 3 -- .../clang_O2/basicassign3.expected | 3 -- .../clang_no_plt_no_pic/basicassign3.expected | 3 -- .../clang_pic/basicassign3.expected | 3 -- .../basicassign3/gcc/basicassign3.expected | 3 -- .../basicassign3/gcc_O2/basicassign3.expected | 3 -- .../gcc_no_plt_no_pic/basicassign3.expected | 3 -- .../gcc_pic/basicassign3.expected | 3 -- .../incorrect/iflocal/clang/iflocal.expected | 7 +-- .../clang_no_plt_no_pic/iflocal.expected | 7 +-- .../iflocal/clang_pic/iflocal.expected | 7 +-- .../incorrect/iflocal/gcc/iflocal.expected | 5 +- .../gcc_no_plt_no_pic/iflocal.expected | 5 +- .../iflocal/gcc_pic/iflocal.expected | 5 +- .../clang/nestedifglobal.expected | 15 +++--- .../nestedifglobal.expected | 15 +++--- .../clang_pic/nestedifglobal.expected | 15 +++--- .../gcc/nestedifglobal.expected | 9 ++-- .../gcc_no_plt_no_pic/nestedifglobal.expected | 9 ++-- .../gcc_pic/nestedifglobal.expected | 9 ++-- 349 files changed, 286 insertions(+), 1140 deletions(-) diff --git a/src/test/correct/arrays_simple/clang/arrays_simple.expected b/src/test/correct/arrays_simple/clang/arrays_simple.expected index 6519320eb..e8148fdd9 100644 --- a/src/test/correct/arrays_simple/clang/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang/arrays_simple.expected @@ -49,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -63,11 +62,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected b/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected index 7d1470198..93df8d220 100644 --- a/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang_O2/arrays_simple.expected @@ -26,7 +26,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,11 +39,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected b/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected index 6519320eb..e8148fdd9 100644 --- a/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang_no_plt_no_pic/arrays_simple.expected @@ -49,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -63,11 +62,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected b/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected index 6519320eb..e8148fdd9 100644 --- a/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected +++ b/src/test/correct/arrays_simple/clang_pic/arrays_simple.expected @@ -49,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -63,11 +62,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected b/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected index b4a6fbd45..657d807d3 100644 --- a/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected +++ b/src/test/correct/arrays_simple/gcc_O2/arrays_simple.expected @@ -26,7 +26,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,11 +39,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected index 688e5846c..c5b688e20 100644 --- a/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang/basic_arrays_read.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); diff --git a/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected index 6f71629d4..6d956c255 100644 --- a/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang_O2/basic_arrays_read.expected @@ -44,7 +44,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); diff --git a/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected index d334e0aa7..4c17176f2 100644 --- a/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang_no_plt_no_pic/basic_arrays_read.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); diff --git a/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected index d703c41d6..ab9f8055e 100644 --- a/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/clang_pic/basic_arrays_read.expected @@ -58,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69592bv64) == 69684bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); diff --git a/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected index a0ad6e8a6..edb11860b 100644 --- a/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc/basic_arrays_read.expected @@ -47,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); diff --git a/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected index f77333b4d..c843cddaa 100644 --- a/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc_O2/basic_arrays_read.expected @@ -44,7 +44,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); diff --git a/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected index 467458368..99b9ee356 100644 --- a/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc_no_plt_no_pic/basic_arrays_read.expected @@ -47,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); diff --git a/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected b/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected index 67d95f41a..ae0f28825 100644 --- a/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected +++ b/src/test/correct/basic_arrays_read/gcc_pic/basic_arrays_read.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, bvadd64($arr_addr, 0bv64))) == memory_load32_le(mem, bvadd64($arr_addr, 0bv64))); diff --git a/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected index e7d8c3853..f2fd56f92 100644 --- a/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang/basic_arrays_write.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; diff --git a/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected index a1d33d615..ebb755408 100644 --- a/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang_O2/basic_arrays_write.expected @@ -47,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; diff --git a/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected index 76fe93491..76a559719 100644 --- a/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang_no_plt_no_pic/basic_arrays_write.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; diff --git a/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected index 40238cf96..9fcce3ab0 100644 --- a/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/clang_pic/basic_arrays_write.expected @@ -60,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69592bv64) == 69684bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; diff --git a/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected index d6633d277..8e03e4189 100644 --- a/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc/basic_arrays_write.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; diff --git a/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected index 619c4f90f..c804e3075 100644 --- a/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc_O2/basic_arrays_write.expected @@ -47,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; diff --git a/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected index d866dcdf3..cbc4e476f 100644 --- a/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc_no_plt_no_pic/basic_arrays_write.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; diff --git a/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected b/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected index 4fdd20285..84af2b94c 100644 --- a/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected +++ b/src/test/correct/basic_arrays_write/gcc_pic/basic_arrays_write.expected @@ -58,7 +58,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures true; diff --git a/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected index aae4353b4..ef04944c8 100644 --- a/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang/basic_assign_assign.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); diff --git a/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected index 2db530be9..d64b06e7f 100644 --- a/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang_O2/basic_assign_assign.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); diff --git a/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected index 520238b61..cb4eb6691 100644 --- a/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang_no_plt_no_pic/basic_assign_assign.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); diff --git a/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected index 74d648446..ba57bc23c 100644 --- a/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/clang_pic/basic_assign_assign.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); diff --git a/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected index fdbb6dfb6..67cd54772 100644 --- a/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc/basic_assign_assign.expected @@ -44,7 +44,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); diff --git a/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected index 64e514c4e..2c52bf6ac 100644 --- a/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc_O2/basic_assign_assign.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); diff --git a/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected index cd1a048d2..c22f17d25 100644 --- a/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc_no_plt_no_pic/basic_assign_assign.expected @@ -44,7 +44,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); diff --git a/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected b/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected index 91aa7c9d2..906116fac 100644 --- a/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected +++ b/src/test/correct/basic_assign_assign/gcc_pic/basic_assign_assign.expected @@ -49,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 1bv32)) || (memory_load32_le(mem, $x_addr) == 6bv32)); diff --git a/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected index a75c04bf7..63e8aa7c6 100644 --- a/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang/basic_assign_increment.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); diff --git a/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected index 4bcb43c38..c4614ad48 100644 --- a/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang_O2/basic_assign_increment.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); diff --git a/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected index 77005f479..82a1091e7 100644 --- a/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang_no_plt_no_pic/basic_assign_increment.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); diff --git a/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected index e1aca9e62..faa73d91e 100644 --- a/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/clang_pic/basic_assign_increment.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); diff --git a/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected index ae3b573ec..fbd2704b0 100644 --- a/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc/basic_assign_increment.expected @@ -50,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); diff --git a/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected index 7fc05ac42..9ca19cfbc 100644 --- a/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc_O2/basic_assign_increment.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); diff --git a/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected index 78d6d608a..d4bf3b846 100644 --- a/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc_no_plt_no_pic/basic_assign_increment.expected @@ -50,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); diff --git a/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected b/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected index 17c17625b..227c5dffc 100644 --- a/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected +++ b/src/test/correct/basic_assign_increment/gcc_pic/basic_assign_increment.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (memory_load32_le(mem, $x_addr) == 5bv32)); diff --git a/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected index fbb43dfc6..f7b4a805a 100644 --- a/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang/basic_function_call_caller.expected @@ -74,7 +74,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected index 410584511..f0ffa441b 100644 --- a/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang_O2/basic_function_call_caller.expected @@ -56,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected index 7ca15c00f..2520dda04 100644 --- a/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang_no_plt_no_pic/basic_function_call_caller.expected @@ -74,7 +74,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected index 8e06b4b43..35abd32f8 100644 --- a/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/clang_pic/basic_function_call_caller.expected @@ -76,7 +76,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1884bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected index 47db4c798..5ba0d1baf 100644 --- a/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc/basic_function_call_caller.expected @@ -72,7 +72,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected index 318cda26e..0f4323cd4 100644 --- a/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc_O2/basic_function_call_caller.expected @@ -56,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected index 5acb3dee0..5a1961394 100644 --- a/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc_no_plt_no_pic/basic_function_call_caller.expected @@ -72,7 +72,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected b/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected index 822e01649..82a5d1bc0 100644 --- a/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected +++ b/src/test/correct/basic_function_call_caller/gcc_pic/basic_function_call_caller.expected @@ -74,7 +74,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected index f80714c0a..b061e6446 100644 --- a/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang/basic_function_call_reader.expected @@ -64,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -186,7 +185,7 @@ implementation main() goto l00000342; lmain_goto_l00000345: assume {:captureState "lmain_goto_l00000345"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000345; l00000348_goto_l00000350: assume {:captureState "l00000348_goto_l00000350"} true; @@ -194,7 +193,7 @@ implementation main() goto l00000350; l00000348_goto_l0000037a: assume {:captureState "l00000348_goto_l0000037a"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000037a; } diff --git a/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected index 6ffb7e4da..17422fd8f 100644 --- a/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang_O2/basic_function_call_reader.expected @@ -54,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -148,7 +147,7 @@ implementation main() goto l000002f9; lmain_goto_l000002fd: assume {:captureState "lmain_goto_l000002fd"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000002fd; } diff --git a/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected index 3830d0d33..1cac520ec 100644 --- a/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang_no_plt_no_pic/basic_function_call_reader.expected @@ -64,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -186,7 +185,7 @@ implementation main() goto l00000985; lmain_goto_l00000988: assume {:captureState "lmain_goto_l00000988"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000988; l0000098b_goto_l00000993: assume {:captureState "l0000098b_goto_l00000993"} true; @@ -194,7 +193,7 @@ implementation main() goto l00000993; l0000098b_goto_l000009bd: assume {:captureState "l0000098b_goto_l000009bd"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l000009bd; } diff --git a/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected index da4b86392..79f1d9df6 100644 --- a/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/clang_pic/basic_function_call_reader.expected @@ -70,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -200,7 +199,7 @@ implementation main() goto l00000358; lmain_goto_l0000035b: assume {:captureState "lmain_goto_l0000035b"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000035b; l0000035e_goto_l00000366: assume {:captureState "l0000035e_goto_l00000366"} true; @@ -208,7 +207,7 @@ implementation main() goto l00000366; l0000035e_goto_l00000390: assume {:captureState "l0000035e_goto_l00000390"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000390; } diff --git a/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected index d97b87f85..822dfd0ae 100644 --- a/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc/basic_function_call_reader.expected @@ -62,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -164,7 +163,7 @@ implementation main() goto l00000332; lmain_goto_l00000349: assume {:captureState "lmain_goto_l00000349"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000349; } diff --git a/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected index 748d6427d..9e4dbdf63 100644 --- a/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc_O2/basic_function_call_reader.expected @@ -45,7 +45,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -119,7 +118,7 @@ implementation main() goto l000001bc; lmain_goto_l00000398: assume {:captureState "lmain_goto_l00000398"} true; - assume (!(bvcomp32(R0[32:0], 0bv32) != 0bv1)); + assume (bvcomp32(R0[32:0], 0bv32) == 0bv1); goto l00000398; } diff --git a/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected index 14e489dca..c9203915f 100644 --- a/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc_no_plt_no_pic/basic_function_call_reader.expected @@ -62,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -164,7 +163,7 @@ implementation main() goto l00000937; lmain_goto_l0000094e: assume {:captureState "lmain_goto_l0000094e"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000094e; } diff --git a/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected b/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected index b2a10bf48..942505785 100644 --- a/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected +++ b/src/test/correct/basic_function_call_reader/gcc_pic/basic_function_call_reader.expected @@ -68,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == 0bv32) ==> (memory_load32_le(mem, $x_addr) == 0bv32)); @@ -176,7 +175,7 @@ implementation main() goto l00000334; lmain_goto_l0000034b: assume {:captureState "lmain_goto_l0000034b"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000034b; } diff --git a/src/test/correct/basic_lock_read/clang/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang/basic_lock_read.expected index ec68a1c35..46b155617 100644 --- a/src/test/correct/basic_lock_read/clang/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang/basic_lock_read.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -184,7 +183,7 @@ implementation main() goto l0000032d; lmain_goto_l00000330: assume {:captureState "lmain_goto_l00000330"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000330; l00000333_goto_l0000033b: assume {:captureState "l00000333_goto_l0000033b"} true; @@ -192,7 +191,7 @@ implementation main() goto l0000033b; l00000333_goto_l00000352: assume {:captureState "l00000333_goto_l00000352"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000352; } diff --git a/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected index 58d897dbe..4be10047d 100644 --- a/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang_O2/basic_lock_read.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -131,7 +130,7 @@ implementation main() goto l000002dc; lmain_goto_l000002f7: assume {:captureState "lmain_goto_l000002f7"} true; - assume (!(bvcomp32(R8[32:0], 0bv32) != 0bv1)); + assume (bvcomp32(R8[32:0], 0bv32) == 0bv1); goto l000002f7; } diff --git a/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected index 76479184f..2af9450e5 100644 --- a/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang_no_plt_no_pic/basic_lock_read.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -184,7 +183,7 @@ implementation main() goto l00000958; lmain_goto_l0000095b: assume {:captureState "lmain_goto_l0000095b"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000095b; l0000095e_goto_l00000966: assume {:captureState "l0000095e_goto_l00000966"} true; @@ -192,7 +191,7 @@ implementation main() goto l00000966; l0000095e_goto_l0000097d: assume {:captureState "l0000095e_goto_l0000097d"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000097d; } diff --git a/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected index 58b70d4a2..55e344550 100644 --- a/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/clang_pic/basic_lock_read.expected @@ -69,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -198,7 +197,7 @@ implementation main() goto l0000033c; lmain_goto_l0000033f: assume {:captureState "lmain_goto_l0000033f"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000033f; l00000342_goto_l0000034a: assume {:captureState "l00000342_goto_l0000034a"} true; @@ -206,7 +205,7 @@ implementation main() goto l0000034a; l00000342_goto_l00000361: assume {:captureState "l00000342_goto_l00000361"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000361; } diff --git a/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected index 03ecc62e0..04694eca2 100644 --- a/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc/basic_lock_read.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -168,7 +167,7 @@ implementation main() goto l00000327; lmain_goto_l0000033e: assume {:captureState "lmain_goto_l0000033e"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000033e; } diff --git a/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected index 4b24dfb86..a5778d8e2 100644 --- a/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc_O2/basic_lock_read.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -131,7 +130,7 @@ implementation main() goto l000001bd; lmain_goto_l0000039c: assume {:captureState "lmain_goto_l0000039c"} true; - assume (!(bvnot1(bvcomp32(R0[32:0], 0bv32)) != 0bv1)); + assume (bvnot1(bvcomp32(R0[32:0], 0bv32)) == 0bv1); goto l0000039c; } diff --git a/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected index d34a41d8f..013371bd5 100644 --- a/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc_no_plt_no_pic/basic_lock_read.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -168,7 +167,7 @@ implementation main() goto l00000948; lmain_goto_l0000095f: assume {:captureState "lmain_goto_l0000095f"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000095f; } diff --git a/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected b/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected index 9109177b9..b0f65f92f 100644 --- a/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected +++ b/src/test/correct/basic_lock_read/gcc_pic/basic_lock_read.expected @@ -67,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -181,7 +180,7 @@ implementation main() goto l00000328; lmain_goto_l0000033f: assume {:captureState "lmain_goto_l0000033f"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000033f; } diff --git a/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected index ca2f8782a..256f2ffdb 100644 --- a/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang/basic_lock_security_read.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -176,7 +175,7 @@ implementation main() goto l00000329; lmain_goto_l0000032c: assume {:captureState "lmain_goto_l0000032c"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000032c; l0000032f_goto_l00000337: assume {:captureState "l0000032f_goto_l00000337"} true; @@ -184,7 +183,7 @@ implementation main() goto l00000337; l0000032f_goto_l0000034e: assume {:captureState "l0000032f_goto_l0000034e"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000034e; } diff --git a/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected index 6a449d5f4..d58bdf4b7 100644 --- a/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang_O2/basic_lock_security_read.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -144,7 +143,7 @@ implementation main() goto l000002fa; lmain_goto_l000002fd: assume {:captureState "lmain_goto_l000002fd"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000002fd; } diff --git a/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected index 2480a5290..b6cf86194 100644 --- a/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang_no_plt_no_pic/basic_lock_security_read.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -176,7 +175,7 @@ implementation main() goto l00000947; lmain_goto_l0000094a: assume {:captureState "lmain_goto_l0000094a"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000094a; l0000094d_goto_l00000955: assume {:captureState "l0000094d_goto_l00000955"} true; @@ -184,7 +183,7 @@ implementation main() goto l00000955; l0000094d_goto_l0000096c: assume {:captureState "l0000094d_goto_l0000096c"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000096c; } diff --git a/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected index 96e5c0c44..3a4d8c854 100644 --- a/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/clang_pic/basic_lock_security_read.expected @@ -69,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -190,7 +189,7 @@ implementation main() goto l00000338; lmain_goto_l0000033b: assume {:captureState "lmain_goto_l0000033b"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000033b; l0000033e_goto_l00000346: assume {:captureState "l0000033e_goto_l00000346"} true; @@ -198,7 +197,7 @@ implementation main() goto l00000346; l0000033e_goto_l0000035d: assume {:captureState "l0000033e_goto_l0000035d"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000035d; } diff --git a/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected index 262956154..651c01ac4 100644 --- a/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc/basic_lock_security_read.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -158,7 +157,7 @@ implementation main() goto l0000031b; lmain_goto_l00000332: assume {:captureState "lmain_goto_l00000332"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000332; } diff --git a/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected index c3b223413..d00ef7870 100644 --- a/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc_O2/basic_lock_security_read.expected @@ -47,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -119,7 +118,7 @@ implementation main() goto l000001c2; lmain_goto_l0000039c: assume {:captureState "lmain_goto_l0000039c"} true; - assume (!(bvnot1(bvcomp32(R1[32:0], 0bv32)) != 0bv1)); + assume (bvnot1(bvcomp32(R1[32:0], 0bv32)) == 0bv1); goto l0000039c; } diff --git a/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected index 4ab8c53b9..b2243b92c 100644 --- a/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc_no_plt_no_pic/basic_lock_security_read.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -158,7 +157,7 @@ implementation main() goto l00000918; lmain_goto_l0000092f: assume {:captureState "lmain_goto_l0000092f"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000092f; } diff --git a/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected b/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected index 7d030338f..808cfc037 100644 --- a/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected +++ b/src/test/correct/basic_lock_security_read/gcc_pic/basic_lock_security_read.expected @@ -67,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) == 0bv32) ==> ((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) && (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))))); @@ -170,7 +169,7 @@ implementation main() goto l0000031c; lmain_goto_l00000333: assume {:captureState "lmain_goto_l00000333"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000333; } diff --git a/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected index ce4836bb3..367b4ac90 100644 --- a/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang/basic_lock_security_write.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); diff --git a/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected index 8ff20f764..19b7d3ccb 100644 --- a/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang_O2/basic_lock_security_write.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); diff --git a/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected index a7c1aa3e0..ae005a5ac 100644 --- a/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang_no_plt_no_pic/basic_lock_security_write.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); diff --git a/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected index b4af36685..c1174454e 100644 --- a/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/clang_pic/basic_lock_security_write.expected @@ -65,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); diff --git a/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected index 7d4bd39b1..6fcb6c50a 100644 --- a/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc/basic_lock_security_write.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); diff --git a/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected index da1b5e9fb..4539ec2d1 100644 --- a/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc_O2/basic_lock_security_write.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); diff --git a/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected index ea4643970..16fe76e1f 100644 --- a/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc_no_plt_no_pic/basic_lock_security_write.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); diff --git a/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected b/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected index c5f6d2c4a..b07bb0495 100644 --- a/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected +++ b/src/test/correct/basic_lock_security_write/gcc_pic/basic_lock_security_write.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))) && (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr)))); diff --git a/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected index 0a1affbad..19fe5df42 100644 --- a/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang/basic_lock_unlock.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected index b134c4c8e..50cb46fbc 100644 --- a/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang_O2/basic_lock_unlock.expected @@ -50,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected index 0b74a489e..42faa9199 100644 --- a/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang_no_plt_no_pic/basic_lock_unlock.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected index d90f011cd..a73fa8a5f 100644 --- a/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/clang_pic/basic_lock_unlock.expected @@ -54,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected index 371821300..5199b11f1 100644 --- a/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc/basic_lock_unlock.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected index 3b7abf38b..46caff477 100644 --- a/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc_O2/basic_lock_unlock.expected @@ -50,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected index 359a299cd..ad4646279 100644 --- a/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc_no_plt_no_pic/basic_lock_unlock.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected b/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected index 15c04443e..59062e0c6 100644 --- a/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected +++ b/src/test/correct/basic_lock_unlock/gcc_pic/basic_lock_unlock.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected index 0eb4bee8c..9e3e90520 100644 --- a/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang/basic_loop_assign.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); diff --git a/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected index 3e2a4e64e..5796c5ea2 100644 --- a/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang_O2/basic_loop_assign.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); diff --git a/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected index b731ea8a7..167275531 100644 --- a/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang_no_plt_no_pic/basic_loop_assign.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); diff --git a/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected index 47177ea35..715eb7aac 100644 --- a/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/clang_pic/basic_loop_assign.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); diff --git a/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected index 3172825c1..da04f4e45 100644 --- a/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc/basic_loop_assign.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); diff --git a/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected index b15e26d4b..40d90295d 100644 --- a/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc_O2/basic_loop_assign.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); diff --git a/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected index 7786d0566..3b0a8d602 100644 --- a/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc_no_plt_no_pic/basic_loop_assign.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); diff --git a/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected b/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected index 38edf10a2..8b50e1cff 100644 --- a/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected +++ b/src/test/correct/basic_loop_assign/gcc_pic/basic_loop_assign.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (((memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))) || (bvsle32(memory_load32_le(mem, $x_addr), 10bv32) && bvslt32(old(memory_load32_le(mem, $x_addr)), 10bv32))) || ((memory_load32_le(mem, $x_addr) == 21bv32) && (old(memory_load32_le(mem, $x_addr)) == 20bv32))); diff --git a/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected index 954436770..eb30200ff 100644 --- a/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang/basic_operation_evaluation.expected @@ -75,7 +75,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -89,11 +88,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R10, R31, R8, R9, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -196,7 +193,7 @@ implementation main() goto l000003c9; lmain_goto_l000003ce: assume {:captureState "lmain_goto_l000003ce"} true; - assume (!(bvcomp32(R10[32:0], 0bv32) != 0bv1)); + assume (bvcomp32(R10[32:0], 0bv32) == 0bv1); goto l000003ce; } diff --git a/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected index 7d1470198..93df8d220 100644 --- a/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang_O2/basic_operation_evaluation.expected @@ -26,7 +26,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,11 +39,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected index e812b55a3..0c0529a9a 100644 --- a/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang_no_plt_no_pic/basic_operation_evaluation.expected @@ -75,7 +75,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -89,11 +88,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R10, R31, R8, R9, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -196,7 +193,7 @@ implementation main() goto l00000aac; lmain_goto_l00000ab1: assume {:captureState "lmain_goto_l00000ab1"} true; - assume (!(bvcomp32(R10[32:0], 0bv32) != 0bv1)); + assume (bvcomp32(R10[32:0], 0bv32) == 0bv1); goto l00000ab1; } diff --git a/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected index e812b55a3..0c0529a9a 100644 --- a/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/clang_pic/basic_operation_evaluation.expected @@ -75,7 +75,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -89,11 +88,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R10, R31, R8, R9, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -196,7 +193,7 @@ implementation main() goto l00000aac; lmain_goto_l00000ab1: assume {:captureState "lmain_goto_l00000ab1"} true; - assume (!(bvcomp32(R10[32:0], 0bv32) != 0bv1)); + assume (bvcomp32(R10[32:0], 0bv32) == 0bv1); goto l00000ab1; } diff --git a/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected index 76c81a0e3..ad78cb05e 100644 --- a/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc/basic_operation_evaluation.expected @@ -67,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,11 +80,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R31, Gamma_stack, R0, R1, R2, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -168,7 +165,7 @@ implementation main() goto l000003b3; lmain_goto_l000003b8: assume {:captureState "lmain_goto_l000003b8"} true; - assume (!(bvcomp32(R1[32:0], 0bv32) != 0bv1)); + assume (bvcomp32(R1[32:0], 0bv32) == 0bv1); goto l000003b8; } diff --git a/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected index b4a6fbd45..657d807d3 100644 --- a/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc_O2/basic_operation_evaluation.expected @@ -26,7 +26,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,11 +39,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected index 3b2859068..7a7b55d86 100644 --- a/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc_no_plt_no_pic/basic_operation_evaluation.expected @@ -67,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,11 +80,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R31, Gamma_stack, R0, R1, R2, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -168,7 +165,7 @@ implementation main() goto l00000a6e; lmain_goto_l00000a73: assume {:captureState "lmain_goto_l00000a73"} true; - assume (!(bvcomp32(R1[32:0], 0bv32) != 0bv1)); + assume (bvcomp32(R1[32:0], 0bv32) == 0bv1); goto l00000a73; } diff --git a/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected b/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected index 3b2859068..7a7b55d86 100644 --- a/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected +++ b/src/test/correct/basic_operation_evaluation/gcc_pic/basic_operation_evaluation.expected @@ -67,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,11 +80,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R31, Gamma_stack, R0, R1, R2, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -168,7 +165,7 @@ implementation main() goto l00000a6e; lmain_goto_l00000a73: assume {:captureState "lmain_goto_l00000a73"} true; - assume (!(bvcomp32(R1[32:0], 0bv32) != 0bv1)); + assume (bvcomp32(R1[32:0], 0bv32) == 0bv1); goto l00000a73; } diff --git a/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected index f75ace2cd..d3df02ca2 100644 --- a/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang/basic_sec_policy_read.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -176,7 +175,7 @@ implementation main() goto l00000336; lmain_goto_l00000339: assume {:captureState "lmain_goto_l00000339"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000339; l0000033c_goto_l00000344: assume {:captureState "l0000033c_goto_l00000344"} true; @@ -184,7 +183,7 @@ implementation main() goto l00000344; l0000033c_goto_l0000035b: assume {:captureState "l0000033c_goto_l0000035b"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000035b; } diff --git a/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected index 5e4ab4b97..52ed26e37 100644 --- a/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang_O2/basic_sec_policy_read.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -144,7 +143,7 @@ implementation main() goto l000002fa; lmain_goto_l000002fd: assume {:captureState "lmain_goto_l000002fd"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000002fd; } diff --git a/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected index 8e69310c6..801699e47 100644 --- a/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang_no_plt_no_pic/basic_sec_policy_read.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -176,7 +175,7 @@ implementation main() goto l00000954; lmain_goto_l00000957: assume {:captureState "lmain_goto_l00000957"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000957; l0000095a_goto_l00000962: assume {:captureState "l0000095a_goto_l00000962"} true; @@ -184,7 +183,7 @@ implementation main() goto l00000962; l0000095a_goto_l00000979: assume {:captureState "l0000095a_goto_l00000979"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000979; } diff --git a/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected index ffbf2dec1..012c24569 100644 --- a/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/clang_pic/basic_sec_policy_read.expected @@ -69,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -190,7 +189,7 @@ implementation main() goto l0000034c; lmain_goto_l0000034f: assume {:captureState "lmain_goto_l0000034f"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000034f; l00000352_goto_l0000035a: assume {:captureState "l00000352_goto_l0000035a"} true; @@ -198,7 +197,7 @@ implementation main() goto l0000035a; l00000352_goto_l00000371: assume {:captureState "l00000352_goto_l00000371"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000371; } diff --git a/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected index 9a8321a04..09f319a88 100644 --- a/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc/basic_sec_policy_read.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -158,7 +157,7 @@ implementation main() goto l0000032e; lmain_goto_l00000345: assume {:captureState "lmain_goto_l00000345"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000345; } diff --git a/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected index a9f73b069..932695a5d 100644 --- a/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc_O2/basic_sec_policy_read.expected @@ -47,7 +47,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -119,7 +118,7 @@ implementation main() goto l000001c2; lmain_goto_l0000039c: assume {:captureState "lmain_goto_l0000039c"} true; - assume (!(bvnot1(bvcomp32(R1[32:0], 0bv32)) != 0bv1)); + assume (bvnot1(bvcomp32(R1[32:0], 0bv32)) == 0bv1); goto l0000039c; } diff --git a/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected index fed77bb6f..649cd90fb 100644 --- a/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc_no_plt_no_pic/basic_sec_policy_read.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -158,7 +157,7 @@ implementation main() goto l0000092b; lmain_goto_l00000942: assume {:captureState "lmain_goto_l00000942"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000942; } diff --git a/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected b/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected index c8207c9e3..6cb642e12 100644 --- a/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected +++ b/src/test/correct/basic_sec_policy_read/gcc_pic/basic_sec_policy_read.expected @@ -67,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $z_addr)) != 0bv32) ==> (memory_load32_le(mem, $z_addr) != 0bv32)); @@ -170,7 +169,7 @@ implementation main() goto l00000330; lmain_goto_l00000347: assume {:captureState "lmain_goto_l00000347"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000347; } diff --git a/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected index d2b7bdabc..ff3f08d23 100644 --- a/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang/basic_sec_policy_write.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); diff --git a/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected index dcfb1a0c0..265c75910 100644 --- a/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang_O2/basic_sec_policy_write.expected @@ -54,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); diff --git a/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected index a02d25dca..b840b320f 100644 --- a/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang_no_plt_no_pic/basic_sec_policy_write.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); diff --git a/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected index 188abcb7f..1db974e9f 100644 --- a/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/clang_pic/basic_sec_policy_write.expected @@ -65,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); diff --git a/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected index a478ed19c..5938703b5 100644 --- a/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc/basic_sec_policy_write.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); diff --git a/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected index 9c14ddf53..be4b9b9c7 100644 --- a/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc_O2/basic_sec_policy_write.expected @@ -54,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); diff --git a/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected index d7e5884b4..7dd67fdb8 100644 --- a/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc_no_plt_no_pic/basic_sec_policy_write.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); diff --git a/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected b/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected index 421369949..1b7295c33 100644 --- a/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected +++ b/src/test/correct/basic_sec_policy_write/gcc_pic/basic_sec_policy_write.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr)); diff --git a/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected index 54fa4c9ad..6ae41834b 100644 --- a/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang/basicassign_gamma0.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -74,7 +73,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); diff --git a/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected index 76ffa0fbf..dd4546591 100644 --- a/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang_O2/basicassign_gamma0.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -74,7 +73,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); diff --git a/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected index d33a4fdf1..25c8f2b6b 100644 --- a/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang_no_plt_no_pic/basicassign_gamma0.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -74,7 +73,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); diff --git a/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected index ed8f7a6e7..6d2a3151e 100644 --- a/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/clang_pic/basicassign_gamma0.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -80,7 +79,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); diff --git a/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected index c7ff3c06d..99829cc76 100644 --- a/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc/basicassign_gamma0.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -72,7 +71,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); diff --git a/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected index c1192859a..77e5a8d69 100644 --- a/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc_O2/basicassign_gamma0.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -74,7 +73,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); diff --git a/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected index 8b4b94966..7c731bd2e 100644 --- a/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc_no_plt_no_pic/basicassign_gamma0.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -72,7 +71,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); diff --git a/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected b/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected index 8899a0bb0..80b631034 100644 --- a/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected +++ b/src/test/correct/basicassign_gamma0/gcc_pic/basicassign_gamma0.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $secret_addr) == old(memory_load32_le(mem, $secret_addr))); @@ -78,7 +77,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $secret_addr) == true); diff --git a/src/test/correct/basicfree/clang/basicfree.expected b/src/test/correct/basicfree/clang/basicfree.expected index 1b0fcdb39..9dcf5bd61 100644 --- a/src/test/correct/basicfree/clang/basicfree.expected +++ b/src/test/correct/basicfree/clang/basicfree.expected @@ -66,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -80,11 +79,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); @@ -104,7 +101,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69680bv64) == 0bv64); @@ -191,4 +187,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - diff --git a/src/test/correct/basicfree/clang_O2/basicfree.expected b/src/test/correct/basicfree/clang_O2/basicfree.expected index 732a8ca19..658b3ad9b 100644 --- a/src/test/correct/basicfree/clang_O2/basicfree.expected +++ b/src/test/correct/basicfree/clang_O2/basicfree.expected @@ -24,7 +24,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -38,11 +37,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); free requires (memory_load64_le(mem, 69664bv64) == 0bv64); free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); diff --git a/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected b/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected index 6794ac87c..d9acf1966 100644 --- a/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected +++ b/src/test/correct/basicfree/clang_no_plt_no_pic/basicfree.expected @@ -66,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -80,11 +79,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); @@ -104,7 +101,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69680bv64) == 0bv64); @@ -191,4 +187,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - diff --git a/src/test/correct/basicfree/clang_pic/basicfree.expected b/src/test/correct/basicfree/clang_pic/basicfree.expected index 6794ac87c..d9acf1966 100644 --- a/src/test/correct/basicfree/clang_pic/basicfree.expected +++ b/src/test/correct/basicfree/clang_pic/basicfree.expected @@ -66,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -80,11 +79,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2080bv64) == 1bv8); @@ -104,7 +101,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69680bv64) == 0bv64); @@ -191,4 +187,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69688bv64) == 69688bv64); - diff --git a/src/test/correct/basicfree/gcc/basicfree.expected b/src/test/correct/basicfree/gcc/basicfree.expected index ea34ecf75..f006ebff3 100644 --- a/src/test/correct/basicfree/gcc/basicfree.expected +++ b/src/test/correct/basicfree/gcc/basicfree.expected @@ -64,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,11 +77,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); @@ -102,7 +99,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -186,4 +182,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/basicfree/gcc_O2/basicfree.expected b/src/test/correct/basicfree/gcc_O2/basicfree.expected index 1f67f99ba..628d250a1 100644 --- a/src/test/correct/basicfree/gcc_O2/basicfree.expected +++ b/src/test/correct/basicfree/gcc_O2/basicfree.expected @@ -24,7 +24,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -38,11 +37,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); free requires (memory_load64_le(mem, 69632bv64) == 0bv64); free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); diff --git a/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected b/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected index dbd70504d..62fa514c8 100644 --- a/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected +++ b/src/test/correct/basicfree/gcc_no_plt_no_pic/basicfree.expected @@ -64,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,11 +77,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); @@ -102,7 +99,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -186,4 +182,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/basicfree/gcc_pic/basicfree.expected b/src/test/correct/basicfree/gcc_pic/basicfree.expected index dbd70504d..62fa514c8 100644 --- a/src/test/correct/basicfree/gcc_pic/basicfree.expected +++ b/src/test/correct/basicfree/gcc_pic/basicfree.expected @@ -64,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,11 +77,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2076bv64) == 1bv8); @@ -102,7 +99,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -186,4 +182,3 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2004bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/cjump/clang/cjump.expected b/src/test/correct/cjump/clang/cjump.expected index 1526a5feb..d0cdf6dcf 100644 --- a/src/test/correct/cjump/clang/cjump.expected +++ b/src/test/correct/cjump/clang/cjump.expected @@ -65,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -79,11 +78,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -186,7 +183,7 @@ implementation main() goto l00000343; lmain_goto_l00000346: assume {:captureState "lmain_goto_l00000346"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000346; l00000349_goto_l00000351: assume {:captureState "l00000349_goto_l00000351"} true; @@ -194,7 +191,7 @@ implementation main() goto l00000351; l00000349_goto_l0000037e: assume {:captureState "l00000349_goto_l0000037e"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000037e; } diff --git a/src/test/correct/cjump/clang_O2/cjump.expected b/src/test/correct/cjump/clang_O2/cjump.expected index 84db87cab..a58745453 100644 --- a/src/test/correct/cjump/clang_O2/cjump.expected +++ b/src/test/correct/cjump/clang_O2/cjump.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -66,11 +65,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); diff --git a/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected b/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected index 875b5c02b..72022dfd4 100644 --- a/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected +++ b/src/test/correct/cjump/clang_no_plt_no_pic/cjump.expected @@ -65,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -79,11 +78,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -186,7 +183,7 @@ implementation main() goto l00000999; lmain_goto_l0000099c: assume {:captureState "lmain_goto_l0000099c"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000099c; l0000099f_goto_l000009a7: assume {:captureState "l0000099f_goto_l000009a7"} true; @@ -194,7 +191,7 @@ implementation main() goto l000009a7; l0000099f_goto_l000009d4: assume {:captureState "l0000099f_goto_l000009d4"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l000009d4; } diff --git a/src/test/correct/cjump/clang_pic/cjump.expected b/src/test/correct/cjump/clang_pic/cjump.expected index 657d2607c..db408d8e8 100644 --- a/src/test/correct/cjump/clang_pic/cjump.expected +++ b/src/test/correct/cjump/clang_pic/cjump.expected @@ -71,7 +71,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -85,11 +84,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -202,7 +199,7 @@ implementation main() goto l00000356; lmain_goto_l00000359: assume {:captureState "lmain_goto_l00000359"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000359; l0000035c_goto_l00000364: assume {:captureState "l0000035c_goto_l00000364"} true; @@ -210,7 +207,7 @@ implementation main() goto l00000364; l0000035c_goto_l00000398: assume {:captureState "l0000035c_goto_l00000398"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000398; } diff --git a/src/test/correct/cjump/gcc/cjump.expected b/src/test/correct/cjump/gcc/cjump.expected index 0f2148bff..ba9fc0dc9 100644 --- a/src/test/correct/cjump/gcc/cjump.expected +++ b/src/test/correct/cjump/gcc/cjump.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -73,11 +72,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -163,7 +160,7 @@ implementation main() goto l0000033e; lmain_goto_l00000365: assume {:captureState "lmain_goto_l00000365"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000365; } diff --git a/src/test/correct/cjump/gcc_O2/cjump.expected b/src/test/correct/cjump/gcc_O2/cjump.expected index 289288701..0d59a5334 100644 --- a/src/test/correct/cjump/gcc_O2/cjump.expected +++ b/src/test/correct/cjump/gcc_O2/cjump.expected @@ -50,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,11 +63,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); diff --git a/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected b/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected index 21387d5c2..634105831 100644 --- a/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected +++ b/src/test/correct/cjump/gcc_no_plt_no_pic/cjump.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -73,11 +72,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -163,7 +160,7 @@ implementation main() goto l0000097c; lmain_goto_l000009a3: assume {:captureState "lmain_goto_l000009a3"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000009a3; } diff --git a/src/test/correct/cjump/gcc_pic/cjump.expected b/src/test/correct/cjump/gcc_pic/cjump.expected index d1201f840..76d3d7e0e 100644 --- a/src/test/correct/cjump/gcc_pic/cjump.expected +++ b/src/test/correct/cjump/gcc_pic/cjump.expected @@ -65,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -79,11 +78,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); @@ -177,7 +174,7 @@ implementation main() goto l00000340; lmain_goto_l00000368: assume {:captureState "lmain_goto_l00000368"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000368; } diff --git a/src/test/correct/function/clang/function.expected b/src/test/correct/function/clang/function.expected index 72def10b6..cbf682fdd 100644 --- a/src/test/correct/function/clang/function.expected +++ b/src/test/correct/function/clang/function.expected @@ -68,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,11 +81,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1884bv64) == 1bv8); diff --git a/src/test/correct/function/clang_O2/function.expected b/src/test/correct/function/clang_O2/function.expected index b72a24362..2c9511907 100644 --- a/src/test/correct/function/clang_O2/function.expected +++ b/src/test/correct/function/clang_O2/function.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -66,11 +65,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); diff --git a/src/test/correct/function/clang_no_plt_no_pic/function.expected b/src/test/correct/function/clang_no_plt_no_pic/function.expected index 72def10b6..cbf682fdd 100644 --- a/src/test/correct/function/clang_no_plt_no_pic/function.expected +++ b/src/test/correct/function/clang_no_plt_no_pic/function.expected @@ -68,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,11 +81,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1884bv64) == 1bv8); diff --git a/src/test/correct/function/clang_pic/function.expected b/src/test/correct/function/clang_pic/function.expected index a45707202..05351a818 100644 --- a/src/test/correct/function/clang_pic/function.expected +++ b/src/test/correct/function/clang_pic/function.expected @@ -70,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -84,11 +83,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1956bv64) == 1bv8); diff --git a/src/test/correct/function/gcc/function.expected b/src/test/correct/function/gcc/function.expected index 32243ac4d..7acf13282 100644 --- a/src/test/correct/function/gcc/function.expected +++ b/src/test/correct/function/gcc/function.expected @@ -67,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,11 +80,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1896bv64) == 1bv8); diff --git a/src/test/correct/function/gcc_O2/function.expected b/src/test/correct/function/gcc_O2/function.expected index ad3ebb2ee..bca56db7f 100644 --- a/src/test/correct/function/gcc_O2/function.expected +++ b/src/test/correct/function/gcc_O2/function.expected @@ -50,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,11 +63,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R2, R3, mem; requires (gamma_load32(Gamma_mem, $x_addr) == true); diff --git a/src/test/correct/function/gcc_no_plt_no_pic/function.expected b/src/test/correct/function/gcc_no_plt_no_pic/function.expected index 32243ac4d..7acf13282 100644 --- a/src/test/correct/function/gcc_no_plt_no_pic/function.expected +++ b/src/test/correct/function/gcc_no_plt_no_pic/function.expected @@ -67,7 +67,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -81,11 +80,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1896bv64) == 1bv8); diff --git a/src/test/correct/function/gcc_pic/function.expected b/src/test/correct/function/gcc_pic/function.expected index f39fc9907..7dc0369c7 100644 --- a/src/test/correct/function/gcc_pic/function.expected +++ b/src/test/correct/function/gcc_pic/function.expected @@ -69,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -83,11 +82,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, R0; free requires (memory_load8_le(mem, 1960bv64) == 1bv8); diff --git a/src/test/correct/function1/clang/function1.expected b/src/test/correct/function1/clang/function1.expected index 2b689b5ca..bd56d178a 100644 --- a/src/test/correct/function1/clang/function1.expected +++ b/src/test/correct/function1/clang/function1.expected @@ -95,7 +95,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,11 +108,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R31, R8, R9, stack; free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); @@ -232,4 +229,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/function1/clang_O2/function1.expected b/src/test/correct/function1/clang_O2/function1.expected index 243bb10cd..b409938cf 100644 --- a/src/test/correct/function1/clang_O2/function1.expected +++ b/src/test/correct/function1/clang_O2/function1.expected @@ -70,7 +70,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1888bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -84,11 +83,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R10, Gamma_R11, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R10, R11, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -163,4 +160,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 1888bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/function1/clang_no_plt_no_pic/function1.expected b/src/test/correct/function1/clang_no_plt_no_pic/function1.expected index c4b908e10..c08b53e66 100644 --- a/src/test/correct/function1/clang_no_plt_no_pic/function1.expected +++ b/src/test/correct/function1/clang_no_plt_no_pic/function1.expected @@ -95,7 +95,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,11 +108,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R31, R8, R9, stack; free requires (memory_load64_le(mem, 2024bv64) == 2924859843805185bv64); @@ -232,4 +229,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 1924bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/function1/clang_pic/function1.expected b/src/test/correct/function1/clang_pic/function1.expected index ee6ca80af..460f00f06 100644 --- a/src/test/correct/function1/clang_pic/function1.expected +++ b/src/test/correct/function1/clang_pic/function1.expected @@ -97,7 +97,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (memory_load64_le(mem, 69584bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -111,11 +110,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_stack, R0, R31, R8, R9, stack; free requires (memory_load64_le(mem, 2096bv64) == 2924859843805185bv64); @@ -250,4 +247,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); free ensures (memory_load64_le(mem, 69584bv64) == 69696bv64); - diff --git a/src/test/correct/function1/gcc/function1.expected b/src/test/correct/function1/gcc/function1.expected index 2ea91dac0..c8a75de3d 100644 --- a/src/test/correct/function1/gcc/function1.expected +++ b/src/test/correct/function1/gcc/function1.expected @@ -101,7 +101,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -115,11 +114,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_stack, R0, R1, R31, stack; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -310,4 +307,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/function1/gcc_O2/function1.expected b/src/test/correct/function1/gcc_O2/function1.expected index 0cffed688..7f1e3d2a7 100644 --- a/src/test/correct/function1/gcc_O2/function1.expected +++ b/src/test/correct/function1/gcc_O2/function1.expected @@ -81,7 +81,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -95,11 +94,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -135,7 +132,6 @@ procedure __printf_chk(); free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R3, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R3, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected b/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected index 9fbbe5e2f..a6bc0b7f5 100644 --- a/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected +++ b/src/test/correct/function1/gcc_no_plt_no_pic/function1.expected @@ -101,7 +101,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -115,11 +114,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_stack, R0, R1, R31, stack; free requires (memory_load8_le(mem, 2048bv64) == 1bv8); @@ -310,4 +307,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 1924bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/function1/gcc_pic/function1.expected b/src/test/correct/function1/gcc_pic/function1.expected index 481f26446..e8785a70e 100644 --- a/src/test/correct/function1/gcc_pic/function1.expected +++ b/src/test/correct/function1/gcc_pic/function1.expected @@ -103,7 +103,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1856bv64); free ensures (memory_load64_le(mem, 68992bv64) == 1936bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -117,11 +116,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure get_two(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_stack, R0, R1, R31, stack; free requires (memory_load8_le(mem, 2112bv64) == 1bv8); @@ -327,4 +324,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69000bv64) == 1856bv64); free ensures (memory_load64_le(mem, 68992bv64) == 1936bv64); - diff --git a/src/test/correct/functions_with_params/clang/functions_with_params.expected b/src/test/correct/functions_with_params/clang/functions_with_params.expected index 90410d9c0..8457da0ee 100644 --- a/src/test/correct/functions_with_params/clang/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang/functions_with_params.expected @@ -66,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -80,11 +79,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_stack, R0, R29, R30, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected b/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected index 3924a0aa8..3ac2427ae 100644 --- a/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang_O2/functions_with_params.expected @@ -26,7 +26,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,11 +39,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected b/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected index f275cc3c0..ee1683ebc 100644 --- a/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang_no_plt_no_pic/functions_with_params.expected @@ -66,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -80,11 +79,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_stack, R0, R29, R30, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected b/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected index f275cc3c0..ee1683ebc 100644 --- a/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/clang_pic/functions_with_params.expected @@ -66,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -80,11 +79,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_stack, R0, R29, R30, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/functions_with_params/gcc/functions_with_params.expected b/src/test/correct/functions_with_params/gcc/functions_with_params.expected index 2f62d07aa..c0d99c4a2 100644 --- a/src/test/correct/functions_with_params/gcc/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc/functions_with_params.expected @@ -64,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,11 +77,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected b/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected index 5cc0cddd1..3a93588d6 100644 --- a/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc_O2/functions_with_params.expected @@ -26,7 +26,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,11 +39,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected b/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected index e2bcc3d4a..6c154344e 100644 --- a/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc_no_plt_no_pic/functions_with_params.expected @@ -64,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,11 +77,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected b/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected index e2bcc3d4a..6c154344e 100644 --- a/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected +++ b/src/test/correct/functions_with_params/gcc_pic/functions_with_params.expected @@ -64,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -78,11 +77,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/ifbranches/clang/ifbranches.expected b/src/test/correct/ifbranches/clang/ifbranches.expected index be1710c86..c0067a67f 100644 --- a/src/test/correct/ifbranches/clang/ifbranches.expected +++ b/src/test/correct/ifbranches/clang/ifbranches.expected @@ -65,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -79,11 +78,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; requires (Gamma_R0 == true); @@ -182,7 +179,7 @@ implementation main() goto l0000034c; lmain_goto_l0000034f: assume {:captureState "lmain_goto_l0000034f"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000034f; l00000352_goto_l0000035a: assume {:captureState "l00000352_goto_l0000035a"} true; @@ -190,7 +187,7 @@ implementation main() goto l0000035a; l00000352_goto_l00000397: assume {:captureState "l00000352_goto_l00000397"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000397; } diff --git a/src/test/correct/ifbranches/clang_O2/ifbranches.expected b/src/test/correct/ifbranches/clang_O2/ifbranches.expected index 854466976..ccfb7c037 100644 --- a/src/test/correct/ifbranches/clang_O2/ifbranches.expected +++ b/src/test/correct/ifbranches/clang_O2/ifbranches.expected @@ -35,7 +35,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -49,11 +48,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, R0, R8; requires (Gamma_R0 == true); @@ -115,7 +112,7 @@ implementation main() goto l000002db; lmain_goto_l000002df: assume {:captureState "lmain_goto_l000002df"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000002df; } diff --git a/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected b/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected index 2e69ad709..8d82b2768 100644 --- a/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/clang_no_plt_no_pic/ifbranches.expected @@ -65,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -79,11 +78,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; requires (Gamma_R0 == true); @@ -182,7 +179,7 @@ implementation main() goto l000009b8; lmain_goto_l000009bb: assume {:captureState "lmain_goto_l000009bb"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000009bb; l000009be_goto_l000009c6: assume {:captureState "l000009be_goto_l000009c6"} true; @@ -190,7 +187,7 @@ implementation main() goto l000009c6; l000009be_goto_l00000a03: assume {:captureState "l000009be_goto_l00000a03"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000a03; } diff --git a/src/test/correct/ifbranches/clang_pic/ifbranches.expected b/src/test/correct/ifbranches/clang_pic/ifbranches.expected index 2e69ad709..8d82b2768 100644 --- a/src/test/correct/ifbranches/clang_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/clang_pic/ifbranches.expected @@ -65,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -79,11 +78,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; requires (Gamma_R0 == true); @@ -182,7 +179,7 @@ implementation main() goto l000009b8; lmain_goto_l000009bb: assume {:captureState "lmain_goto_l000009bb"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000009bb; l000009be_goto_l000009c6: assume {:captureState "l000009be_goto_l000009c6"} true; @@ -190,7 +187,7 @@ implementation main() goto l000009c6; l000009be_goto_l00000a03: assume {:captureState "l000009be_goto_l00000a03"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000a03; } diff --git a/src/test/correct/ifbranches/gcc/ifbranches.expected b/src/test/correct/ifbranches/gcc/ifbranches.expected index 07eeb619d..ac1bec839 100644 --- a/src/test/correct/ifbranches/gcc/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc/ifbranches.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -77,11 +76,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; requires (Gamma_R0 == true); @@ -162,7 +159,7 @@ implementation main() goto l00000330; lmain_goto_l00000369: assume {:captureState "lmain_goto_l00000369"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000369; } diff --git a/src/test/correct/ifbranches/gcc_O2/ifbranches.expected b/src/test/correct/ifbranches/gcc_O2/ifbranches.expected index 8e9b0b9ee..8ac961753 100644 --- a/src/test/correct/ifbranches/gcc_O2/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc_O2/ifbranches.expected @@ -33,7 +33,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -47,11 +46,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; requires (Gamma_R0 == true); @@ -113,7 +110,7 @@ implementation main() goto l000001c3; lmain_goto_l000001c6: assume {:captureState "lmain_goto_l000001c6"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000001c6; } diff --git a/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected b/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected index 06bb0c0fc..c53ffab7b 100644 --- a/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc_no_plt_no_pic/ifbranches.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -77,11 +76,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; requires (Gamma_R0 == true); @@ -162,7 +159,7 @@ implementation main() goto l00000963; lmain_goto_l0000099c: assume {:captureState "lmain_goto_l0000099c"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000099c; } diff --git a/src/test/correct/ifbranches/gcc_pic/ifbranches.expected b/src/test/correct/ifbranches/gcc_pic/ifbranches.expected index 06bb0c0fc..c53ffab7b 100644 --- a/src/test/correct/ifbranches/gcc_pic/ifbranches.expected +++ b/src/test/correct/ifbranches/gcc_pic/ifbranches.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -77,11 +76,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; requires (Gamma_R0 == true); @@ -162,7 +159,7 @@ implementation main() goto l00000963; lmain_goto_l0000099c: assume {:captureState "lmain_goto_l0000099c"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000099c; } diff --git a/src/test/correct/ifglobal/clang/ifglobal.expected b/src/test/correct/ifglobal/clang/ifglobal.expected index dfaaee566..1200382ed 100644 --- a/src/test/correct/ifglobal/clang/ifglobal.expected +++ b/src/test/correct/ifglobal/clang/ifglobal.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -77,11 +76,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -168,7 +165,7 @@ implementation main() goto l0000031e; lmain_goto_l00000321: assume {:captureState "lmain_goto_l00000321"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000321; l00000324_goto_l0000032c: assume {:captureState "l00000324_goto_l0000032c"} true; @@ -176,7 +173,7 @@ implementation main() goto l0000032c; l00000324_goto_l00000343: assume {:captureState "l00000324_goto_l00000343"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000343; } diff --git a/src/test/correct/ifglobal/clang_O2/ifglobal.expected b/src/test/correct/ifglobal/clang_O2/ifglobal.expected index aff563392..28eaf250b 100644 --- a/src/test/correct/ifglobal/clang_O2/ifglobal.expected +++ b/src/test/correct/ifglobal/clang_O2/ifglobal.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -66,11 +65,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -120,7 +117,7 @@ implementation main() goto l000002dc; lmain_goto_l000002f8: assume {:captureState "lmain_goto_l000002f8"} true; - assume (!(bvcomp32(R9[32:0], 0bv32) != 0bv1)); + assume (bvcomp32(R9[32:0], 0bv32) == 0bv1); goto l000002f8; } diff --git a/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected b/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected index 1ab1be788..e27dcdecd 100644 --- a/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/clang_no_plt_no_pic/ifglobal.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -77,11 +76,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -168,7 +165,7 @@ implementation main() goto l0000092d; lmain_goto_l00000930: assume {:captureState "lmain_goto_l00000930"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000930; l00000933_goto_l0000093b: assume {:captureState "l00000933_goto_l0000093b"} true; @@ -176,7 +173,7 @@ implementation main() goto l0000093b; l00000933_goto_l00000952: assume {:captureState "l00000933_goto_l00000952"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000952; } diff --git a/src/test/correct/ifglobal/clang_pic/ifglobal.expected b/src/test/correct/ifglobal/clang_pic/ifglobal.expected index 934ec8298..7d2806261 100644 --- a/src/test/correct/ifglobal/clang_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/clang_pic/ifglobal.expected @@ -68,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -82,11 +81,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -179,7 +176,7 @@ implementation main() goto l0000032d; lmain_goto_l00000330: assume {:captureState "lmain_goto_l00000330"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000330; l00000333_goto_l0000033b: assume {:captureState "l00000333_goto_l0000033b"} true; @@ -187,7 +184,7 @@ implementation main() goto l0000033b; l00000333_goto_l00000352: assume {:captureState "l00000333_goto_l00000352"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000352; } diff --git a/src/test/correct/ifglobal/gcc/ifglobal.expected b/src/test/correct/ifglobal/gcc/ifglobal.expected index 6dc6cf1e2..3a8aab8e8 100644 --- a/src/test/correct/ifglobal/gcc/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc/ifglobal.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -142,7 +139,7 @@ implementation main() goto l00000302; lmain_goto_l00000311: assume {:captureState "lmain_goto_l00000311"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000311; } diff --git a/src/test/correct/ifglobal/gcc_O2/ifglobal.expected b/src/test/correct/ifglobal/gcc_O2/ifglobal.expected index 625a66c0a..da48f81dc 100644 --- a/src/test/correct/ifglobal/gcc_O2/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc_O2/ifglobal.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -65,11 +64,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -118,7 +115,7 @@ implementation main() goto l000001b7; lmain_goto_l00000396: assume {:captureState "lmain_goto_l00000396"} true; - assume (!(bvnot1(bvcomp32(R1[32:0], 0bv32)) != 0bv1)); + assume (bvnot1(bvcomp32(R1[32:0], 0bv32)) == 0bv1); goto l00000396; } diff --git a/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected b/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected index f373d2f38..3aaf2a46f 100644 --- a/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc_no_plt_no_pic/ifglobal.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -142,7 +139,7 @@ implementation main() goto l000008d6; lmain_goto_l000008e5: assume {:captureState "lmain_goto_l000008e5"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000008e5; } diff --git a/src/test/correct/ifglobal/gcc_pic/ifglobal.expected b/src/test/correct/ifglobal/gcc_pic/ifglobal.expected index ce71dd848..3a0d2e99f 100644 --- a/src/test/correct/ifglobal/gcc_pic/ifglobal.expected +++ b/src/test/correct/ifglobal/gcc_pic/ifglobal.expected @@ -62,7 +62,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -76,11 +75,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -151,7 +148,7 @@ implementation main() goto l00000303; lmain_goto_l00000312: assume {:captureState "lmain_goto_l00000312"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000312; } diff --git a/src/test/correct/indirect_call/clang_O2/indirect_call.expected b/src/test/correct/indirect_call/clang_O2/indirect_call.expected index d519b4a91..c52d56929 100644 --- a/src/test/correct/indirect_call/clang_O2/indirect_call.expected +++ b/src/test/correct/indirect_call/clang_O2/indirect_call.expected @@ -92,7 +92,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1888bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -106,11 +105,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -357,4 +354,3 @@ procedure puts(); free ensures (memory_load64_le(mem, 69592bv64) == 1888bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/indirect_call/gcc_O2/indirect_call.expected b/src/test/correct/indirect_call/gcc_O2/indirect_call.expected index 56656d9b2..62225a051 100644 --- a/src/test/correct/indirect_call/gcc_O2/indirect_call.expected +++ b/src/test/correct/indirect_call/gcc_O2/indirect_call.expected @@ -98,7 +98,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1600bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -112,11 +111,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure greet(); modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; free requires (memory_load8_le(mem, 1984bv64) == 1bv8); @@ -511,4 +508,3 @@ procedure puts(); free ensures (memory_load64_le(mem, 69616bv64) == 1600bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/initialisation/clang/initialisation.expected b/src/test/correct/initialisation/clang/initialisation.expected index c482f936b..19ae309d0 100644 --- a/src/test/correct/initialisation/clang/initialisation.expected +++ b/src/test/correct/initialisation/clang/initialisation.expected @@ -93,7 +93,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -107,11 +106,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/initialisation/clang_O2/initialisation.expected b/src/test/correct/initialisation/clang_O2/initialisation.expected index a3553338b..12558980d 100644 --- a/src/test/correct/initialisation/clang_O2/initialisation.expected +++ b/src/test/correct/initialisation/clang_O2/initialisation.expected @@ -95,7 +95,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,11 +108,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R12, Gamma_R13, Gamma_R14, Gamma_R15, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R12, R13, R14, R15, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected b/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected index ee5891e79..1a8bd119b 100644 --- a/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected +++ b/src/test/correct/initialisation/clang_no_plt_no_pic/initialisation.expected @@ -93,7 +93,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -107,11 +106,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/initialisation/clang_pic/initialisation.expected b/src/test/correct/initialisation/clang_pic/initialisation.expected index 9aca6524d..9e95130d8 100644 --- a/src/test/correct/initialisation/clang_pic/initialisation.expected +++ b/src/test/correct/initialisation/clang_pic/initialisation.expected @@ -95,7 +95,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69032bv64) == 1936bv64); free ensures (memory_load64_le(mem, 69560bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -109,11 +108,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/initialisation/gcc/initialisation.expected b/src/test/correct/initialisation/gcc/initialisation.expected index 06313b836..01a4e5c28 100644 --- a/src/test/correct/initialisation/gcc/initialisation.expected +++ b/src/test/correct/initialisation/gcc/initialisation.expected @@ -81,7 +81,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -95,11 +94,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/initialisation/gcc_O2/initialisation.expected b/src/test/correct/initialisation/gcc_O2/initialisation.expected index c5e35d67f..2e931610a 100644 --- a/src/test/correct/initialisation/gcc_O2/initialisation.expected +++ b/src/test/correct/initialisation/gcc_O2/initialisation.expected @@ -91,7 +91,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -105,11 +104,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_R3, Gamma_R4, Gamma_R5, Gamma_R6, Gamma_mem, R0, R1, R2, R3, R4, R5, R6, mem; free requires (memory_load8_le(mem, 69632bv64) == 0bv8); diff --git a/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected b/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected index fcfe6c37d..54d544e1d 100644 --- a/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected +++ b/src/test/correct/initialisation/gcc_no_plt_no_pic/initialisation.expected @@ -81,7 +81,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -95,11 +94,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/initialisation/gcc_pic/initialisation.expected b/src/test/correct/initialisation/gcc_pic/initialisation.expected index 89ed5289b..36dbed728 100644 --- a/src/test/correct/initialisation/gcc_pic/initialisation.expected +++ b/src/test/correct/initialisation/gcc_pic/initialisation.expected @@ -85,7 +85,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 68984bv64) == 1936bv64); free ensures (memory_load64_le(mem, 68992bv64) == 1856bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -99,11 +98,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/jumptable/clang_O2/jumptable.expected b/src/test/correct/jumptable/clang_O2/jumptable.expected index 1b2a48cb5..56e298df9 100644 --- a/src/test/correct/jumptable/clang_O2/jumptable.expected +++ b/src/test/correct/jumptable/clang_O2/jumptable.expected @@ -54,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1872bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -68,11 +67,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load8_le(mem, 69664bv64) == 0bv8); diff --git a/src/test/correct/jumptable/gcc_O2/jumptable.expected b/src/test/correct/jumptable/gcc_O2/jumptable.expected index 0dd4e3e8b..e5a14e88e 100644 --- a/src/test/correct/jumptable/gcc_O2/jumptable.expected +++ b/src/test/correct/jumptable/gcc_O2/jumptable.expected @@ -72,7 +72,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -86,11 +85,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 1976bv64) == 1bv8); diff --git a/src/test/correct/jumptable3/gcc/jumptable3.expected b/src/test/correct/jumptable3/gcc/jumptable3.expected index 5609952b9..48aac8bf5 100644 --- a/src/test/correct/jumptable3/gcc/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc/jumptable3.expected @@ -76,7 +76,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,11 +89,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); @@ -642,7 +639,7 @@ implementation main() goto l00000599; lmain_goto_l000005e0: assume {:captureState "lmain_goto_l000005e0"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000005e0; l000005e0_goto_l000005d7: assume {:captureState "l000005e0_goto_l000005d7"} true; @@ -650,7 +647,7 @@ implementation main() goto l000005d7; l000005e0_goto_l00000608: assume {:captureState "l000005e0_goto_l00000608"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000608; l00000608_goto_l00000629: assume {:captureState "l00000608_goto_l00000629"} true; @@ -658,7 +655,7 @@ implementation main() goto l00000629; l00000608_goto_l00000643: assume {:captureState "l00000608_goto_l00000643"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000643; l00000643_goto_l000005d7: assume {:captureState "l00000643_goto_l000005d7"} true; @@ -666,7 +663,7 @@ implementation main() goto l000005d7; l00000643_goto_l0000066b: assume {:captureState "l00000643_goto_l0000066b"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l0000066b; l0000066b_goto_l0000068c: assume {:captureState "l0000066b_goto_l0000068c"} true; @@ -674,7 +671,7 @@ implementation main() goto l0000068c; l0000066b_goto_l000006a3: assume {:captureState "l0000066b_goto_l000006a3"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000006a3; l000006a3_goto_l000005d7: assume {:captureState "l000006a3_goto_l000005d7"} true; @@ -682,7 +679,7 @@ implementation main() goto l000005d7; l000006a3_goto_l000006cb: assume {:captureState "l000006a3_goto_l000006cb"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l000006cb; l000006cb_goto_l000006ec: assume {:captureState "l000006cb_goto_l000006ec"} true; @@ -690,7 +687,7 @@ implementation main() goto l000006ec; l000006cb_goto_l00000703: assume {:captureState "l000006cb_goto_l00000703"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000703; l00000703_goto_l000005d7: assume {:captureState "l00000703_goto_l000005d7"} true; @@ -698,7 +695,7 @@ implementation main() goto l000005d7; l00000703_goto_l0000072b: assume {:captureState "l00000703_goto_l0000072b"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l0000072b; l0000072b_goto_l0000074c: assume {:captureState "l0000072b_goto_l0000074c"} true; @@ -706,7 +703,7 @@ implementation main() goto l0000074c; l0000072b_goto_l00000758: assume {:captureState "l0000072b_goto_l00000758"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000758; l00000758_goto_l000005d7: assume {:captureState "l00000758_goto_l000005d7"} true; @@ -714,7 +711,7 @@ implementation main() goto l000005d7; l00000758_goto_l00000780: assume {:captureState "l00000758_goto_l00000780"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000780; l00000780_goto_l000007a1: assume {:captureState "l00000780_goto_l000007a1"} true; @@ -722,7 +719,7 @@ implementation main() goto l000007a1; l00000780_goto_l000007ad: assume {:captureState "l00000780_goto_l000007ad"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000007ad; l000007ad_goto_l000005d7: assume {:captureState "l000007ad_goto_l000005d7"} true; @@ -730,7 +727,7 @@ implementation main() goto l000005d7; l000007ad_goto_l000007d5: assume {:captureState "l000007ad_goto_l000007d5"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l000007d5; l000007d5_goto_l000007f6: assume {:captureState "l000007d5_goto_l000007f6"} true; @@ -738,7 +735,7 @@ implementation main() goto l000007f6; l000007d5_goto_l00000809: assume {:captureState "l000007d5_goto_l00000809"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000809; l00000809_goto_l000005d7: assume {:captureState "l00000809_goto_l000005d7"} true; @@ -746,7 +743,7 @@ implementation main() goto l000005d7; l00000809_goto_l00000831: assume {:captureState "l00000809_goto_l00000831"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000831; l00000831_goto_l00000852: assume {:captureState "l00000831_goto_l00000852"} true; @@ -754,7 +751,7 @@ implementation main() goto l00000852; l00000831_goto_l00000862: assume {:captureState "l00000831_goto_l00000862"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000862; l00000862_goto_l000005d7: assume {:captureState "l00000862_goto_l000005d7"} true; @@ -762,7 +759,7 @@ implementation main() goto l000005d7; l00000862_goto_l0000088a: assume {:captureState "l00000862_goto_l0000088a"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l0000088a; l0000088a_goto_l000008ab: assume {:captureState "l0000088a_goto_l000008ab"} true; @@ -770,7 +767,7 @@ implementation main() goto l000008ab; l0000088a_goto_l000008c2: assume {:captureState "l0000088a_goto_l000008c2"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000008c2; l000008c2_goto_l000005d7: assume {:captureState "l000008c2_goto_l000005d7"} true; @@ -778,7 +775,7 @@ implementation main() goto l000005d7; l000008c2_goto_l000008ea: assume {:captureState "l000008c2_goto_l000008ea"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l000008ea; l000008ea_goto_l0000090b: assume {:captureState "l000008ea_goto_l0000090b"} true; @@ -786,7 +783,7 @@ implementation main() goto l0000090b; l000008ea_goto_l0000091b: assume {:captureState "l000008ea_goto_l0000091b"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000091b; l0000091b_goto_l000005d7: assume {:captureState "l0000091b_goto_l000005d7"} true; @@ -794,7 +791,7 @@ implementation main() goto l000005d7; l0000091b_goto_l00000943: assume {:captureState "l0000091b_goto_l00000943"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000943; l00000943_goto_l00000964: assume {:captureState "l00000943_goto_l00000964"} true; @@ -802,7 +799,7 @@ implementation main() goto l00000964; l00000943_goto_l0000097b: assume {:captureState "l00000943_goto_l0000097b"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000097b; l0000097b_goto_l00000974: assume {:captureState "l0000097b_goto_l00000974"} true; @@ -810,7 +807,7 @@ implementation main() goto l00000974; l0000097b_goto_l000009a1: assume {:captureState "l0000097b_goto_l000009a1"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000009a1; } diff --git a/src/test/correct/jumptable3/gcc_O2/jumptable3.expected b/src/test/correct/jumptable3/gcc_O2/jumptable3.expected index 5a134c88a..be4f9228a 100644 --- a/src/test/correct/jumptable3/gcc_O2/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc_O2/jumptable3.expected @@ -56,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -70,11 +69,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; requires (Gamma_R0 == true); @@ -390,7 +387,7 @@ implementation main() goto l00000317; lmain_goto_l00000753: assume {:captureState "lmain_goto_l00000753"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000753; l00000753_goto_l000006e8: assume {:captureState "l00000753_goto_l000006e8"} true; @@ -398,7 +395,7 @@ implementation main() goto l000006e8; l00000753_goto_l0000075c: assume {:captureState "l00000753_goto_l0000075c"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l0000075c; l000006e8_goto_l000005f9: assume {:captureState "l000006e8_goto_l000005f9"} true; @@ -406,7 +403,7 @@ implementation main() goto l000005f9; l000006e8_goto_l0000070c: assume {:captureState "l000006e8_goto_l0000070c"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000070c; l0000070c_goto_l00000644: assume {:captureState "l0000070c_goto_l00000644"} true; @@ -414,7 +411,7 @@ implementation main() goto l00000644; l0000070c_goto_l00000715: assume {:captureState "l0000070c_goto_l00000715"} true; - assume (!(bvnot1(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1))) != 0bv1)); + assume (bvnot1(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1))) == 0bv1); goto l00000715; l00000644_goto_l00000331: assume {:captureState "l00000644_goto_l00000331"} true; @@ -422,7 +419,7 @@ implementation main() goto l00000331; l00000644_goto_l00000663: assume {:captureState "l00000644_goto_l00000663"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000663; l00000663_goto_l0000036b: assume {:captureState "l00000663_goto_l0000036b"} true; @@ -430,7 +427,7 @@ implementation main() goto l0000036b; l00000663_goto_l00000347: assume {:captureState "l00000663_goto_l00000347"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000347; l00000715_goto_l00000612: assume {:captureState "l00000715_goto_l00000612"} true; @@ -438,7 +435,7 @@ implementation main() goto l00000612; l00000715_goto_l00000734: assume {:captureState "l00000715_goto_l00000734"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000734; l00000734_goto_l0000036b: assume {:captureState "l00000734_goto_l0000036b"} true; @@ -446,7 +443,7 @@ implementation main() goto l0000036b; l00000734_goto_l00000628: assume {:captureState "l00000734_goto_l00000628"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000628; l0000075c_goto_l0000069c: assume {:captureState "l0000075c_goto_l0000069c"} true; @@ -454,7 +451,7 @@ implementation main() goto l0000069c; l0000075c_goto_l0000077b: assume {:captureState "l0000075c_goto_l0000077b"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000077b; l0000077b_goto_l000005bc: assume {:captureState "l0000077b_goto_l000005bc"} true; @@ -462,7 +459,7 @@ implementation main() goto l000005bc; l0000077b_goto_l00000784: assume {:captureState "l0000077b_goto_l00000784"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000784; l000005bc_goto_l000005d6: assume {:captureState "l000005bc_goto_l000005d6"} true; @@ -470,7 +467,7 @@ implementation main() goto l000005d6; l000005bc_goto_l00000682: assume {:captureState "l000005bc_goto_l00000682"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000682; l00000784_goto_l000006ba: assume {:captureState "l00000784_goto_l000006ba"} true; @@ -478,7 +475,7 @@ implementation main() goto l000006ba; l00000784_goto_l000007a8: assume {:captureState "l00000784_goto_l000007a8"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000007a8; l000007a8_goto_l00000368: assume {:captureState "l000007a8_goto_l00000368"} true; @@ -486,7 +483,7 @@ implementation main() goto l00000368; l000007a8_goto_l000006d0: assume {:captureState "l000007a8_goto_l000006d0"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000006d0; l00000368_goto_l0000036b: assume {:captureState "l00000368_goto_l0000036b"} true; @@ -494,7 +491,7 @@ implementation main() goto l0000036b; l00000368_goto_l000005a3: assume {:captureState "l00000368_goto_l000005a3"} true; - assume (!(bvnot1(bvcomp32(R0[32:0], 0bv32)) != 0bv1)); + assume (bvnot1(bvcomp32(R0[32:0], 0bv32)) == 0bv1); goto l000005a3; } diff --git a/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected b/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected index 58f1bf766..d3074e769 100644 --- a/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc_no_plt_no_pic/jumptable3.expected @@ -76,7 +76,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1920bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -90,11 +89,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2356bv64) == 1bv8); @@ -642,7 +639,7 @@ implementation main() goto l000012f4; lmain_goto_l0000133b: assume {:captureState "lmain_goto_l0000133b"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000133b; l0000133b_goto_l00001332: assume {:captureState "l0000133b_goto_l00001332"} true; @@ -650,7 +647,7 @@ implementation main() goto l00001332; l0000133b_goto_l00001363: assume {:captureState "l0000133b_goto_l00001363"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00001363; l00001363_goto_l00001384: assume {:captureState "l00001363_goto_l00001384"} true; @@ -658,7 +655,7 @@ implementation main() goto l00001384; l00001363_goto_l0000139e: assume {:captureState "l00001363_goto_l0000139e"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000139e; l0000139e_goto_l00001332: assume {:captureState "l0000139e_goto_l00001332"} true; @@ -666,7 +663,7 @@ implementation main() goto l00001332; l0000139e_goto_l000013c6: assume {:captureState "l0000139e_goto_l000013c6"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l000013c6; l000013c6_goto_l000013e7: assume {:captureState "l000013c6_goto_l000013e7"} true; @@ -674,7 +671,7 @@ implementation main() goto l000013e7; l000013c6_goto_l000013fe: assume {:captureState "l000013c6_goto_l000013fe"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000013fe; l000013fe_goto_l00001332: assume {:captureState "l000013fe_goto_l00001332"} true; @@ -682,7 +679,7 @@ implementation main() goto l00001332; l000013fe_goto_l00001426: assume {:captureState "l000013fe_goto_l00001426"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00001426; l00001426_goto_l00001447: assume {:captureState "l00001426_goto_l00001447"} true; @@ -690,7 +687,7 @@ implementation main() goto l00001447; l00001426_goto_l0000145e: assume {:captureState "l00001426_goto_l0000145e"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000145e; l0000145e_goto_l00001332: assume {:captureState "l0000145e_goto_l00001332"} true; @@ -698,7 +695,7 @@ implementation main() goto l00001332; l0000145e_goto_l00001486: assume {:captureState "l0000145e_goto_l00001486"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00001486; l00001486_goto_l000014a7: assume {:captureState "l00001486_goto_l000014a7"} true; @@ -706,7 +703,7 @@ implementation main() goto l000014a7; l00001486_goto_l000014b3: assume {:captureState "l00001486_goto_l000014b3"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000014b3; l000014b3_goto_l00001332: assume {:captureState "l000014b3_goto_l00001332"} true; @@ -714,7 +711,7 @@ implementation main() goto l00001332; l000014b3_goto_l000014db: assume {:captureState "l000014b3_goto_l000014db"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l000014db; l000014db_goto_l000014fc: assume {:captureState "l000014db_goto_l000014fc"} true; @@ -722,7 +719,7 @@ implementation main() goto l000014fc; l000014db_goto_l00001508: assume {:captureState "l000014db_goto_l00001508"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00001508; l00001508_goto_l00001332: assume {:captureState "l00001508_goto_l00001332"} true; @@ -730,7 +727,7 @@ implementation main() goto l00001332; l00001508_goto_l00001530: assume {:captureState "l00001508_goto_l00001530"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00001530; l00001530_goto_l00001551: assume {:captureState "l00001530_goto_l00001551"} true; @@ -738,7 +735,7 @@ implementation main() goto l00001551; l00001530_goto_l00001564: assume {:captureState "l00001530_goto_l00001564"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00001564; l00001564_goto_l00001332: assume {:captureState "l00001564_goto_l00001332"} true; @@ -746,7 +743,7 @@ implementation main() goto l00001332; l00001564_goto_l0000158c: assume {:captureState "l00001564_goto_l0000158c"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l0000158c; l0000158c_goto_l000015ad: assume {:captureState "l0000158c_goto_l000015ad"} true; @@ -754,7 +751,7 @@ implementation main() goto l000015ad; l0000158c_goto_l000015bd: assume {:captureState "l0000158c_goto_l000015bd"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000015bd; l000015bd_goto_l00001332: assume {:captureState "l000015bd_goto_l00001332"} true; @@ -762,7 +759,7 @@ implementation main() goto l00001332; l000015bd_goto_l000015e5: assume {:captureState "l000015bd_goto_l000015e5"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l000015e5; l000015e5_goto_l00001606: assume {:captureState "l000015e5_goto_l00001606"} true; @@ -770,7 +767,7 @@ implementation main() goto l00001606; l000015e5_goto_l0000161d: assume {:captureState "l000015e5_goto_l0000161d"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000161d; l0000161d_goto_l00001332: assume {:captureState "l0000161d_goto_l00001332"} true; @@ -778,7 +775,7 @@ implementation main() goto l00001332; l0000161d_goto_l00001645: assume {:captureState "l0000161d_goto_l00001645"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00001645; l00001645_goto_l00001666: assume {:captureState "l00001645_goto_l00001666"} true; @@ -786,7 +783,7 @@ implementation main() goto l00001666; l00001645_goto_l00001676: assume {:captureState "l00001645_goto_l00001676"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00001676; l00001676_goto_l00001332: assume {:captureState "l00001676_goto_l00001332"} true; @@ -794,7 +791,7 @@ implementation main() goto l00001332; l00001676_goto_l0000169e: assume {:captureState "l00001676_goto_l0000169e"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l0000169e; l0000169e_goto_l000016bf: assume {:captureState "l0000169e_goto_l000016bf"} true; @@ -802,7 +799,7 @@ implementation main() goto l000016bf; l0000169e_goto_l000016d6: assume {:captureState "l0000169e_goto_l000016d6"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000016d6; l000016d6_goto_l000016cf: assume {:captureState "l000016d6_goto_l000016cf"} true; @@ -810,7 +807,7 @@ implementation main() goto l000016cf; l000016d6_goto_l000016fc: assume {:captureState "l000016d6_goto_l000016fc"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000016fc; } diff --git a/src/test/correct/jumptable3/gcc_pic/jumptable3.expected b/src/test/correct/jumptable3/gcc_pic/jumptable3.expected index ef47d4eb1..1a665e115 100644 --- a/src/test/correct/jumptable3/gcc_pic/jumptable3.expected +++ b/src/test/correct/jumptable3/gcc_pic/jumptable3.expected @@ -77,7 +77,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69600bv64) == 69648bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -91,11 +90,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure add_six(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load8_le(mem, 2420bv64) == 1bv8); @@ -654,7 +651,7 @@ implementation main() goto l0000059f; lmain_goto_l000005e7: assume {:captureState "lmain_goto_l000005e7"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000005e7; l000005e7_goto_l000005de: assume {:captureState "l000005e7_goto_l000005de"} true; @@ -662,7 +659,7 @@ implementation main() goto l000005de; l000005e7_goto_l0000060f: assume {:captureState "l000005e7_goto_l0000060f"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l0000060f; l0000060f_goto_l00000630: assume {:captureState "l0000060f_goto_l00000630"} true; @@ -670,7 +667,7 @@ implementation main() goto l00000630; l0000060f_goto_l0000064a: assume {:captureState "l0000060f_goto_l0000064a"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000064a; l0000064a_goto_l000005de: assume {:captureState "l0000064a_goto_l000005de"} true; @@ -678,7 +675,7 @@ implementation main() goto l000005de; l0000064a_goto_l00000672: assume {:captureState "l0000064a_goto_l00000672"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000672; l00000672_goto_l00000693: assume {:captureState "l00000672_goto_l00000693"} true; @@ -686,7 +683,7 @@ implementation main() goto l00000693; l00000672_goto_l000006aa: assume {:captureState "l00000672_goto_l000006aa"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000006aa; l000006aa_goto_l000005de: assume {:captureState "l000006aa_goto_l000005de"} true; @@ -694,7 +691,7 @@ implementation main() goto l000005de; l000006aa_goto_l000006d2: assume {:captureState "l000006aa_goto_l000006d2"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l000006d2; l000006d2_goto_l000006f3: assume {:captureState "l000006d2_goto_l000006f3"} true; @@ -702,7 +699,7 @@ implementation main() goto l000006f3; l000006d2_goto_l0000070a: assume {:captureState "l000006d2_goto_l0000070a"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000070a; l0000070a_goto_l000005de: assume {:captureState "l0000070a_goto_l000005de"} true; @@ -710,7 +707,7 @@ implementation main() goto l000005de; l0000070a_goto_l00000732: assume {:captureState "l0000070a_goto_l00000732"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000732; l00000732_goto_l00000753: assume {:captureState "l00000732_goto_l00000753"} true; @@ -718,7 +715,7 @@ implementation main() goto l00000753; l00000732_goto_l0000075f: assume {:captureState "l00000732_goto_l0000075f"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000075f; l0000075f_goto_l000005de: assume {:captureState "l0000075f_goto_l000005de"} true; @@ -726,7 +723,7 @@ implementation main() goto l000005de; l0000075f_goto_l00000787: assume {:captureState "l0000075f_goto_l00000787"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000787; l00000787_goto_l000007a8: assume {:captureState "l00000787_goto_l000007a8"} true; @@ -734,7 +731,7 @@ implementation main() goto l000007a8; l00000787_goto_l000007b4: assume {:captureState "l00000787_goto_l000007b4"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000007b4; l000007b4_goto_l000005de: assume {:captureState "l000007b4_goto_l000005de"} true; @@ -742,7 +739,7 @@ implementation main() goto l000005de; l000007b4_goto_l000007dc: assume {:captureState "l000007b4_goto_l000007dc"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l000007dc; l000007dc_goto_l000007fd: assume {:captureState "l000007dc_goto_l000007fd"} true; @@ -750,7 +747,7 @@ implementation main() goto l000007fd; l000007dc_goto_l00000810: assume {:captureState "l000007dc_goto_l00000810"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000810; l00000810_goto_l000005de: assume {:captureState "l00000810_goto_l000005de"} true; @@ -758,7 +755,7 @@ implementation main() goto l000005de; l00000810_goto_l00000838: assume {:captureState "l00000810_goto_l00000838"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000838; l00000838_goto_l00000859: assume {:captureState "l00000838_goto_l00000859"} true; @@ -766,7 +763,7 @@ implementation main() goto l00000859; l00000838_goto_l00000869: assume {:captureState "l00000838_goto_l00000869"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000869; l00000869_goto_l000005de: assume {:captureState "l00000869_goto_l000005de"} true; @@ -774,7 +771,7 @@ implementation main() goto l000005de; l00000869_goto_l00000891: assume {:captureState "l00000869_goto_l00000891"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000891; l00000891_goto_l000008b2: assume {:captureState "l00000891_goto_l000008b2"} true; @@ -782,7 +779,7 @@ implementation main() goto l000008b2; l00000891_goto_l000008c9: assume {:captureState "l00000891_goto_l000008c9"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000008c9; l000008c9_goto_l000005de: assume {:captureState "l000008c9_goto_l000005de"} true; @@ -790,7 +787,7 @@ implementation main() goto l000005de; l000008c9_goto_l000008f1: assume {:captureState "l000008c9_goto_l000008f1"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l000008f1; l000008f1_goto_l00000912: assume {:captureState "l000008f1_goto_l00000912"} true; @@ -798,7 +795,7 @@ implementation main() goto l00000912; l000008f1_goto_l00000922: assume {:captureState "l000008f1_goto_l00000922"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000922; l00000922_goto_l000005de: assume {:captureState "l00000922_goto_l000005de"} true; @@ -806,7 +803,7 @@ implementation main() goto l000005de; l00000922_goto_l0000094a: assume {:captureState "l00000922_goto_l0000094a"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l0000094a; l0000094a_goto_l0000096b: assume {:captureState "l0000094a_goto_l0000096b"} true; @@ -814,7 +811,7 @@ implementation main() goto l0000096b; l0000094a_goto_l00000982: assume {:captureState "l0000094a_goto_l00000982"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000982; l00000982_goto_l0000097b: assume {:captureState "l00000982_goto_l0000097b"} true; @@ -822,7 +819,7 @@ implementation main() goto l0000097b; l00000982_goto_l000009a8: assume {:captureState "l00000982_goto_l000009a8"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000009a8; } diff --git a/src/test/correct/malloc_with_local/clang/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang/malloc_with_local.expected index e37d6f809..01185a1df 100644 --- a/src/test/correct/malloc_with_local/clang/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang/malloc_with_local.expected @@ -94,7 +94,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -108,11 +107,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -140,7 +137,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -300,7 +296,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -328,4 +323,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected index 905dc605f..28d819ea5 100644 --- a/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang_O2/malloc_with_local.expected @@ -112,7 +112,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -126,11 +125,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -459,4 +456,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected index a4b21b617..a6a35f93d 100644 --- a/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang_no_plt_no_pic/malloc_with_local.expected @@ -94,7 +94,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -108,11 +107,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -140,7 +137,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -300,7 +296,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -328,4 +323,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected index a4b21b617..a6a35f93d 100644 --- a/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/clang_pic/malloc_with_local.expected @@ -94,7 +94,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -108,11 +107,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -140,7 +137,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -300,7 +296,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2256bv64) == 2334386691848142849bv64); @@ -328,4 +323,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected index 57d2244d6..8fbd80b51 100644 --- a/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc/malloc_with_local.expected @@ -157,7 +157,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -171,11 +170,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -337,7 +334,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -759,7 +755,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -921,4 +916,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected index 52831d8f6..4c167b62f 100644 --- a/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc_O2/malloc_with_local.expected @@ -125,7 +125,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -139,11 +138,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2088bv64) == 1bv8); @@ -305,7 +302,6 @@ procedure __printf_chk(); free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected index bcb561623..c44bb881b 100644 --- a/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc_no_plt_no_pic/malloc_with_local.expected @@ -157,7 +157,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -171,11 +170,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -337,7 +334,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -759,7 +755,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -921,4 +916,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected b/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected index bcb561623..c44bb881b 100644 --- a/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected +++ b/src/test/correct/malloc_with_local/gcc_pic/malloc_with_local.expected @@ -157,7 +157,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -171,11 +170,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -337,7 +334,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -759,7 +755,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2248bv64) == 1bv8); @@ -921,4 +916,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected index 62ba87cba..ae58bbf97 100644 --- a/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang/malloc_with_local2.expected @@ -150,7 +150,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -164,11 +163,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -308,7 +305,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -709,7 +705,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -849,4 +844,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected index 905dc605f..28d819ea5 100644 --- a/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang_O2/malloc_with_local2.expected @@ -112,7 +112,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -126,11 +125,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -459,4 +456,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected index 79c20e967..649e99111 100644 --- a/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang_no_plt_no_pic/malloc_with_local2.expected @@ -150,7 +150,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -164,11 +163,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -308,7 +305,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -709,7 +705,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -849,4 +844,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected index 79c20e967..649e99111 100644 --- a/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/clang_pic/malloc_with_local2.expected @@ -150,7 +150,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -164,11 +163,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -308,7 +305,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -709,7 +705,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2292bv64) == 1bv8); @@ -849,4 +844,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected index 64c85aefc..0805e74d9 100644 --- a/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc/malloc_with_local2.expected @@ -157,7 +157,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -171,11 +170,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -337,7 +334,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -773,7 +769,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -935,4 +930,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected index 52831d8f6..4c167b62f 100644 --- a/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc_O2/malloc_with_local2.expected @@ -125,7 +125,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -139,11 +138,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2088bv64) == 1bv8); @@ -305,7 +302,6 @@ procedure __printf_chk(); free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected index e6f8add2e..819b0dbe8 100644 --- a/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc_no_plt_no_pic/malloc_with_local2.expected @@ -157,7 +157,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -171,11 +170,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -337,7 +334,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -773,7 +769,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -935,4 +930,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected b/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected index e6f8add2e..819b0dbe8 100644 --- a/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected +++ b/src/test/correct/malloc_with_local2/gcc_pic/malloc_with_local2.expected @@ -157,7 +157,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -171,11 +170,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -337,7 +334,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -773,7 +769,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2272bv64) == 1bv8); @@ -935,4 +930,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected index 8af22db26..7833a364e 100644 --- a/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang/malloc_with_local3.expected @@ -157,7 +157,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -171,11 +170,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -327,7 +324,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -748,7 +744,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -1097,4 +1092,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected index ae4429bc4..e40292528 100644 --- a/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang_O2/malloc_with_local3.expected @@ -118,7 +118,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -132,11 +131,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -489,4 +486,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected index 8136ce634..d6051b6c8 100644 --- a/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang_no_plt_no_pic/malloc_with_local3.expected @@ -157,7 +157,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -171,11 +170,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -327,7 +324,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -748,7 +744,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -1097,4 +1092,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected index 8136ce634..d6051b6c8 100644 --- a/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/clang_pic/malloc_with_local3.expected @@ -157,7 +157,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -171,11 +170,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -327,7 +324,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -748,7 +744,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load8_le(mem, 2344bv64) == 1bv8); @@ -1097,4 +1092,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected index 9997cf87f..2c897de28 100644 --- a/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc/malloc_with_local3.expected @@ -162,7 +162,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -176,11 +175,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -350,7 +347,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -797,7 +793,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1182,4 +1177,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected index b8f08d178..3f092f772 100644 --- a/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc_O2/malloc_with_local3.expected @@ -148,7 +148,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -162,11 +161,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2264bv64) == 1bv8); @@ -328,7 +325,6 @@ procedure __printf_chk(); free ensures (memory_load64_le(mem, 69616bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2264bv64) == 1bv8); @@ -490,7 +486,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, Gamma_R29, Gamma_R3, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, R29, R3, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -885,7 +880,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R3, Gamma_mem, R0, R1, R16, R17, R2, R3, mem; free requires (memory_load8_le(mem, 2264bv64) == 1bv8); diff --git a/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected index 5178b957b..5d8f3abb6 100644 --- a/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc_no_plt_no_pic/malloc_with_local3.expected @@ -162,7 +162,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -176,11 +175,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -350,7 +347,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -797,7 +793,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1182,4 +1177,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected b/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected index 5178b957b..5d8f3abb6 100644 --- a/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected +++ b/src/test/correct/malloc_with_local3/gcc_pic/malloc_with_local3.expected @@ -162,7 +162,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -176,11 +175,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -350,7 +347,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -797,7 +793,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printCharValue(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load8_le(mem, 2328bv64) == 1bv8); @@ -1182,4 +1177,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/multi_malloc/clang/multi_malloc.expected b/src/test/correct/multi_malloc/clang/multi_malloc.expected index 433489fc8..2beff043b 100644 --- a/src/test/correct/multi_malloc/clang/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang/multi_malloc.expected @@ -123,7 +123,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -137,11 +136,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -227,7 +224,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -492,7 +488,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -578,4 +573,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected b/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected index 5ade3f4f8..b70d16d72 100644 --- a/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang_O2/multi_malloc.expected @@ -85,7 +85,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -99,11 +98,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); @@ -316,4 +313,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - diff --git a/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected b/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected index e2cbb9341..a3b315d98 100644 --- a/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang_no_plt_no_pic/multi_malloc.expected @@ -123,7 +123,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -137,11 +136,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -227,7 +224,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -492,7 +488,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -578,4 +573,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected b/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected index e2cbb9341..a3b315d98 100644 --- a/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/clang_pic/multi_malloc.expected @@ -123,7 +123,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -137,11 +136,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -227,7 +224,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69688bv64) == 0bv64); @@ -492,7 +488,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 2232bv64) == 1bv8); @@ -578,4 +573,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69592bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69696bv64) == 69696bv64); - diff --git a/src/test/correct/multi_malloc/gcc/multi_malloc.expected b/src/test/correct/multi_malloc/gcc/multi_malloc.expected index 3a3e473f1..6ac074ca4 100644 --- a/src/test/correct/multi_malloc/gcc/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc/multi_malloc.expected @@ -88,7 +88,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -102,11 +101,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -130,7 +127,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -265,7 +261,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -289,4 +284,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected b/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected index fc88b066a..a3a5a2334 100644 --- a/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc_O2/multi_malloc.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -66,11 +65,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure __printf_chk(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2024bv64) == 131073bv64); @@ -94,7 +91,6 @@ procedure __printf_chk(); free ensures (memory_load64_le(mem, 69616bv64) == 1664bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected b/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected index 66d6f45d4..a81608960 100644 --- a/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc_no_plt_no_pic/multi_malloc.expected @@ -88,7 +88,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -102,11 +101,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -130,7 +127,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -265,7 +261,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -289,4 +284,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected b/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected index 66d6f45d4..a81608960 100644 --- a/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected +++ b/src/test/correct/multi_malloc/gcc_pic/multi_malloc.expected @@ -88,7 +88,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -102,11 +101,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure #free(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -130,7 +127,6 @@ procedure #free(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R29, R30, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -265,7 +261,6 @@ procedure malloc(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure printf(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 2224bv64) == 131073bv64); @@ -289,4 +284,3 @@ procedure printf(); free ensures (memory_load64_le(mem, 69616bv64) == 2068bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/nestedif/clang/nestedif.expected b/src/test/correct/nestedif/clang/nestedif.expected index 3f329d862..3a508ccb9 100644 --- a/src/test/correct/nestedif/clang/nestedif.expected +++ b/src/test/correct/nestedif/clang/nestedif.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -236,7 +233,7 @@ implementation main() goto l00000379; lmain_goto_l0000037c: assume {:captureState "lmain_goto_l0000037c"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000037c; l0000037f_goto_l00000387: assume {:captureState "l0000037f_goto_l00000387"} true; @@ -244,7 +241,7 @@ implementation main() goto l00000387; l0000037f_goto_l00000442: assume {:captureState "l0000037f_goto_l00000442"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000442; l00000387_goto_l000003b2: assume {:captureState "l00000387_goto_l000003b2"} true; @@ -252,7 +249,7 @@ implementation main() goto l000003b2; l00000387_goto_l000003b5: assume {:captureState "l00000387_goto_l000003b5"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000003b5; l000003b8_goto_l000003c0: assume {:captureState "l000003b8_goto_l000003c0"} true; @@ -260,7 +257,7 @@ implementation main() goto l000003c0; l000003b8_goto_l0000042d: assume {:captureState "l000003b8_goto_l0000042d"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000042d; l000003c0_goto_l000003eb: assume {:captureState "l000003c0_goto_l000003eb"} true; @@ -268,7 +265,7 @@ implementation main() goto l000003eb; l000003c0_goto_l000003ee: assume {:captureState "l000003c0_goto_l000003ee"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000003ee; l000003f1_goto_l000003f9: assume {:captureState "l000003f1_goto_l000003f9"} true; @@ -276,7 +273,7 @@ implementation main() goto l000003f9; l000003f1_goto_l00000418: assume {:captureState "l000003f1_goto_l00000418"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000418; } diff --git a/src/test/correct/nestedif/clang_O2/nestedif.expected b/src/test/correct/nestedif/clang_O2/nestedif.expected index 7d1470198..93df8d220 100644 --- a/src/test/correct/nestedif/clang_O2/nestedif.expected +++ b/src/test/correct/nestedif/clang_O2/nestedif.expected @@ -26,7 +26,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,11 +39,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected b/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected index 3a17f6a2f..5c184bca5 100644 --- a/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected +++ b/src/test/correct/nestedif/clang_no_plt_no_pic/nestedif.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -236,7 +233,7 @@ implementation main() goto l00000aaa; lmain_goto_l00000aad: assume {:captureState "lmain_goto_l00000aad"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000aad; l00000ab0_goto_l00000ab8: assume {:captureState "l00000ab0_goto_l00000ab8"} true; @@ -244,7 +241,7 @@ implementation main() goto l00000ab8; l00000ab0_goto_l00000b73: assume {:captureState "l00000ab0_goto_l00000b73"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000b73; l00000ab8_goto_l00000ae3: assume {:captureState "l00000ab8_goto_l00000ae3"} true; @@ -252,7 +249,7 @@ implementation main() goto l00000ae3; l00000ab8_goto_l00000ae6: assume {:captureState "l00000ab8_goto_l00000ae6"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000ae6; l00000ae9_goto_l00000af1: assume {:captureState "l00000ae9_goto_l00000af1"} true; @@ -260,7 +257,7 @@ implementation main() goto l00000af1; l00000ae9_goto_l00000b5e: assume {:captureState "l00000ae9_goto_l00000b5e"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000b5e; l00000af1_goto_l00000b1c: assume {:captureState "l00000af1_goto_l00000b1c"} true; @@ -268,7 +265,7 @@ implementation main() goto l00000b1c; l00000af1_goto_l00000b1f: assume {:captureState "l00000af1_goto_l00000b1f"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000b1f; l00000b22_goto_l00000b2a: assume {:captureState "l00000b22_goto_l00000b2a"} true; @@ -276,7 +273,7 @@ implementation main() goto l00000b2a; l00000b22_goto_l00000b49: assume {:captureState "l00000b22_goto_l00000b49"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000b49; } diff --git a/src/test/correct/nestedif/clang_pic/nestedif.expected b/src/test/correct/nestedif/clang_pic/nestedif.expected index 3a17f6a2f..5c184bca5 100644 --- a/src/test/correct/nestedif/clang_pic/nestedif.expected +++ b/src/test/correct/nestedif/clang_pic/nestedif.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -236,7 +233,7 @@ implementation main() goto l00000aaa; lmain_goto_l00000aad: assume {:captureState "lmain_goto_l00000aad"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000aad; l00000ab0_goto_l00000ab8: assume {:captureState "l00000ab0_goto_l00000ab8"} true; @@ -244,7 +241,7 @@ implementation main() goto l00000ab8; l00000ab0_goto_l00000b73: assume {:captureState "l00000ab0_goto_l00000b73"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000b73; l00000ab8_goto_l00000ae3: assume {:captureState "l00000ab8_goto_l00000ae3"} true; @@ -252,7 +249,7 @@ implementation main() goto l00000ae3; l00000ab8_goto_l00000ae6: assume {:captureState "l00000ab8_goto_l00000ae6"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000ae6; l00000ae9_goto_l00000af1: assume {:captureState "l00000ae9_goto_l00000af1"} true; @@ -260,7 +257,7 @@ implementation main() goto l00000af1; l00000ae9_goto_l00000b5e: assume {:captureState "l00000ae9_goto_l00000b5e"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000b5e; l00000af1_goto_l00000b1c: assume {:captureState "l00000af1_goto_l00000b1c"} true; @@ -268,7 +265,7 @@ implementation main() goto l00000b1c; l00000af1_goto_l00000b1f: assume {:captureState "l00000af1_goto_l00000b1f"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000b1f; l00000b22_goto_l00000b2a: assume {:captureState "l00000b22_goto_l00000b2a"} true; @@ -276,7 +273,7 @@ implementation main() goto l00000b2a; l00000b22_goto_l00000b49: assume {:captureState "l00000b22_goto_l00000b49"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000b49; } diff --git a/src/test/correct/nestedif/gcc/nestedif.expected b/src/test/correct/nestedif/gcc/nestedif.expected index a17aa96bc..5fea255ff 100644 --- a/src/test/correct/nestedif/gcc/nestedif.expected +++ b/src/test/correct/nestedif/gcc/nestedif.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -178,7 +175,7 @@ implementation main() goto l00000345; lmain_goto_l000003c4: assume {:captureState "lmain_goto_l000003c4"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000003c4; l00000345_goto_l0000036b: assume {:captureState "l00000345_goto_l0000036b"} true; @@ -186,7 +183,7 @@ implementation main() goto l0000036b; l00000345_goto_l000003b3: assume {:captureState "l00000345_goto_l000003b3"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000003b3; l0000036b_goto_l00000391: assume {:captureState "l0000036b_goto_l00000391"} true; @@ -194,7 +191,7 @@ implementation main() goto l00000391; l0000036b_goto_l000003a6: assume {:captureState "l0000036b_goto_l000003a6"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000003a6; } diff --git a/src/test/correct/nestedif/gcc_O2/nestedif.expected b/src/test/correct/nestedif/gcc_O2/nestedif.expected index b4a6fbd45..657d807d3 100644 --- a/src/test/correct/nestedif/gcc_O2/nestedif.expected +++ b/src/test/correct/nestedif/gcc_O2/nestedif.expected @@ -26,7 +26,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,11 +39,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected b/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected index 545e50eda..9d14fb9bb 100644 --- a/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected +++ b/src/test/correct/nestedif/gcc_no_plt_no_pic/nestedif.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -178,7 +175,7 @@ implementation main() goto l000009e1; lmain_goto_l00000a60: assume {:captureState "lmain_goto_l00000a60"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000a60; l000009e1_goto_l00000a07: assume {:captureState "l000009e1_goto_l00000a07"} true; @@ -186,7 +183,7 @@ implementation main() goto l00000a07; l000009e1_goto_l00000a4f: assume {:captureState "l000009e1_goto_l00000a4f"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000a4f; l00000a07_goto_l00000a2d: assume {:captureState "l00000a07_goto_l00000a2d"} true; @@ -194,7 +191,7 @@ implementation main() goto l00000a2d; l00000a07_goto_l00000a42: assume {:captureState "l00000a07_goto_l00000a42"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000a42; } diff --git a/src/test/correct/nestedif/gcc_pic/nestedif.expected b/src/test/correct/nestedif/gcc_pic/nestedif.expected index 545e50eda..9d14fb9bb 100644 --- a/src/test/correct/nestedif/gcc_pic/nestedif.expected +++ b/src/test/correct/nestedif/gcc_pic/nestedif.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -178,7 +175,7 @@ implementation main() goto l000009e1; lmain_goto_l00000a60: assume {:captureState "lmain_goto_l00000a60"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000a60; l000009e1_goto_l00000a07: assume {:captureState "l000009e1_goto_l00000a07"} true; @@ -186,7 +183,7 @@ implementation main() goto l00000a07; l000009e1_goto_l00000a4f: assume {:captureState "l000009e1_goto_l00000a4f"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000a4f; l00000a07_goto_l00000a2d: assume {:captureState "l00000a07_goto_l00000a2d"} true; @@ -194,7 +191,7 @@ implementation main() goto l00000a2d; l00000a07_goto_l00000a42: assume {:captureState "l00000a07_goto_l00000a42"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000a42; } diff --git a/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected index 525fdd1f2..cc5f1a6cc 100644 --- a/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang/no_interference_update_x.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected index 1fc387f0c..90771f992 100644 --- a/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang_O2/no_interference_update_x.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected index 1daebd0d8..33769ca91 100644 --- a/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang_no_plt_no_pic/no_interference_update_x.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected index c6073f617..3ad575555 100644 --- a/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/clang_pic/no_interference_update_x.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected index f5dffb2ac..96cd9c8ba 100644 --- a/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc/no_interference_update_x.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected index df1a3fe0e..811d0683e 100644 --- a/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc_O2/no_interference_update_x.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected index f483553cd..f485b88b2 100644 --- a/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc_no_plt_no_pic/no_interference_update_x.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected b/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected index 62473c555..bf4c0d23b 100644 --- a/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected +++ b/src/test/correct/no_interference_update_x/gcc_pic/no_interference_update_x.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); diff --git a/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected index 072b9d9d4..7830f3c2e 100644 --- a/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang/no_interference_update_y.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); diff --git a/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected index 42ee73fa7..88de4ed43 100644 --- a/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang_O2/no_interference_update_y.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); diff --git a/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected index dadac5eba..cb22929dc 100644 --- a/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang_no_plt_no_pic/no_interference_update_y.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); diff --git a/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected index e69a7cf79..1c4931e1a 100644 --- a/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/clang_pic/no_interference_update_y.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); diff --git a/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected index 03683bf99..4417a9539 100644 --- a/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc/no_interference_update_y.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); diff --git a/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected index af3ed023b..2a6a9c6db 100644 --- a/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc_O2/no_interference_update_y.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); diff --git a/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected index 45c1b9b9c..82e4dc546 100644 --- a/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc_no_plt_no_pic/no_interference_update_y.expected @@ -46,7 +46,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); diff --git a/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected b/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected index b3c428e79..d4e29c9a8 100644 --- a/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected +++ b/src/test/correct/no_interference_update_y/gcc_pic/no_interference_update_y.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69016bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $y_addr) == old(memory_load32_le(mem, $y_addr))); diff --git a/src/test/correct/secret_write/clang/secret_write.expected b/src/test/correct/secret_write/clang/secret_write.expected index 37552ea83..42fcdbd2f 100644 --- a/src/test/correct/secret_write/clang/secret_write.expected +++ b/src/test/correct/secret_write/clang/secret_write.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/secret_write/clang_O2/secret_write.expected b/src/test/correct/secret_write/clang_O2/secret_write.expected index bb9ba84c8..1b77f7aa7 100644 --- a/src/test/correct/secret_write/clang_O2/secret_write.expected +++ b/src/test/correct/secret_write/clang_O2/secret_write.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected b/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected index a4863b2d8..524b7b30d 100644 --- a/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected +++ b/src/test/correct/secret_write/clang_no_plt_no_pic/secret_write.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/secret_write/clang_pic/secret_write.expected b/src/test/correct/secret_write/clang_pic/secret_write.expected index 16d7d4d2f..6558e00dd 100644 --- a/src/test/correct/secret_write/clang_pic/secret_write.expected +++ b/src/test/correct/secret_write/clang_pic/secret_write.expected @@ -68,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69560bv64) == 69684bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/secret_write/gcc/secret_write.expected b/src/test/correct/secret_write/gcc/secret_write.expected index 2ebf18ad7..829ea2006 100644 --- a/src/test/correct/secret_write/gcc/secret_write.expected +++ b/src/test/correct/secret_write/gcc/secret_write.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/secret_write/gcc_O2/secret_write.expected b/src/test/correct/secret_write/gcc_O2/secret_write.expected index fba8ecdab..79f363dce 100644 --- a/src/test/correct/secret_write/gcc_O2/secret_write.expected +++ b/src/test/correct/secret_write/gcc_O2/secret_write.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected b/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected index a77ac4549..102265249 100644 --- a/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected +++ b/src/test/correct/secret_write/gcc_no_plt_no_pic/secret_write.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/secret_write/gcc_pic/secret_write.expected b/src/test/correct/secret_write/gcc_pic/secret_write.expected index dc3a71e02..2c42ee32d 100644 --- a/src/test/correct/secret_write/gcc_pic/secret_write.expected +++ b/src/test/correct/secret_write/gcc_pic/secret_write.expected @@ -64,7 +64,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1792bv64); free ensures (memory_load64_le(mem, 68992bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $z_addr) == old(memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/simple_jump/clang/simple_jump.expected b/src/test/correct/simple_jump/clang/simple_jump.expected index c13247726..f03fbfe30 100644 --- a/src/test/correct/simple_jump/clang/simple_jump.expected +++ b/src/test/correct/simple_jump/clang/simple_jump.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -160,7 +157,7 @@ implementation main() goto l00000326; lmain_goto_l00000329: assume {:captureState "lmain_goto_l00000329"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000329; l0000032c_goto_l00000334: assume {:captureState "l0000032c_goto_l00000334"} true; @@ -168,7 +165,7 @@ implementation main() goto l00000334; l0000032c_goto_l0000034b: assume {:captureState "l0000032c_goto_l0000034b"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000034b; } diff --git a/src/test/correct/simple_jump/clang_O2/simple_jump.expected b/src/test/correct/simple_jump/clang_O2/simple_jump.expected index 7d1470198..93df8d220 100644 --- a/src/test/correct/simple_jump/clang_O2/simple_jump.expected +++ b/src/test/correct/simple_jump/clang_O2/simple_jump.expected @@ -26,7 +26,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,11 +39,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected b/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected index 551d072fa..10b0b4c7e 100644 --- a/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/clang_no_plt_no_pic/simple_jump.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -160,7 +157,7 @@ implementation main() goto l00000938; lmain_goto_l0000093b: assume {:captureState "lmain_goto_l0000093b"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000093b; l0000093e_goto_l00000946: assume {:captureState "l0000093e_goto_l00000946"} true; @@ -168,7 +165,7 @@ implementation main() goto l00000946; l0000093e_goto_l0000095d: assume {:captureState "l0000093e_goto_l0000095d"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000095d; } diff --git a/src/test/correct/simple_jump/clang_pic/simple_jump.expected b/src/test/correct/simple_jump/clang_pic/simple_jump.expected index 551d072fa..10b0b4c7e 100644 --- a/src/test/correct/simple_jump/clang_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/clang_pic/simple_jump.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -160,7 +157,7 @@ implementation main() goto l00000938; lmain_goto_l0000093b: assume {:captureState "lmain_goto_l0000093b"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000093b; l0000093e_goto_l00000946: assume {:captureState "l0000093e_goto_l00000946"} true; @@ -168,7 +165,7 @@ implementation main() goto l00000946; l0000093e_goto_l0000095d: assume {:captureState "l0000093e_goto_l0000095d"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000095d; } diff --git a/src/test/correct/simple_jump/gcc/simple_jump.expected b/src/test/correct/simple_jump/gcc/simple_jump.expected index 997c74768..afb8cef39 100644 --- a/src/test/correct/simple_jump/gcc/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc/simple_jump.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -140,7 +137,7 @@ implementation main() goto l0000030a; lmain_goto_l0000031f: assume {:captureState "lmain_goto_l0000031f"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000031f; } diff --git a/src/test/correct/simple_jump/gcc_O2/simple_jump.expected b/src/test/correct/simple_jump/gcc_O2/simple_jump.expected index b4a6fbd45..657d807d3 100644 --- a/src/test/correct/simple_jump/gcc_O2/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc_O2/simple_jump.expected @@ -26,7 +26,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -40,11 +39,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, R0; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected b/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected index bde5b3446..39653851f 100644 --- a/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc_no_plt_no_pic/simple_jump.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -140,7 +137,7 @@ implementation main() goto l000008e1; lmain_goto_l000008f6: assume {:captureState "lmain_goto_l000008f6"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000008f6; } diff --git a/src/test/correct/simple_jump/gcc_pic/simple_jump.expected b/src/test/correct/simple_jump/gcc_pic/simple_jump.expected index bde5b3446..39653851f 100644 --- a/src/test/correct/simple_jump/gcc_pic/simple_jump.expected +++ b/src/test/correct/simple_jump/gcc_pic/simple_jump.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -140,7 +137,7 @@ implementation main() goto l000008e1; lmain_goto_l000008f6: assume {:captureState "lmain_goto_l000008f6"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000008f6; } diff --git a/src/test/correct/switch/clang/switch.expected b/src/test/correct/switch/clang/switch.expected index 7cf81b32f..37dffcd06 100644 --- a/src/test/correct/switch/clang/switch.expected +++ b/src/test/correct/switch/clang/switch.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R31, Gamma_R8, Gamma_stack, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -199,7 +196,7 @@ implementation main() goto l0000035a; lmain_goto_l0000035d: assume {:captureState "lmain_goto_l0000035d"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000035d; l00000360_goto_l00000368: assume {:captureState "l00000360_goto_l00000368"} true; @@ -207,7 +204,7 @@ implementation main() goto l00000368; l00000360_goto_l0000039a: assume {:captureState "l00000360_goto_l0000039a"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000039a; l0000039b_goto_l000003c4: assume {:captureState "l0000039b_goto_l000003c4"} true; @@ -215,7 +212,7 @@ implementation main() goto l000003c4; l0000039b_goto_l000003c7: assume {:captureState "l0000039b_goto_l000003c7"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000003c7; l000003ca_goto_l00000389: assume {:captureState "l000003ca_goto_l00000389"} true; @@ -223,7 +220,7 @@ implementation main() goto l00000389; l000003ca_goto_l000003d7: assume {:captureState "l000003ca_goto_l000003d7"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l000003d7; } diff --git a/src/test/correct/switch/clang_O2/switch.expected b/src/test/correct/switch/clang_O2/switch.expected index 732a8ca19..658b3ad9b 100644 --- a/src/test/correct/switch/clang_O2/switch.expected +++ b/src/test/correct/switch/clang_O2/switch.expected @@ -24,7 +24,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -38,11 +37,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); free requires (memory_load64_le(mem, 69664bv64) == 0bv64); free requires (memory_load64_le(mem, 69672bv64) == 69672bv64); diff --git a/src/test/correct/switch/clang_no_plt_no_pic/switch.expected b/src/test/correct/switch/clang_no_plt_no_pic/switch.expected index 780086db6..aaecc750f 100644 --- a/src/test/correct/switch/clang_no_plt_no_pic/switch.expected +++ b/src/test/correct/switch/clang_no_plt_no_pic/switch.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R31, Gamma_R8, Gamma_stack, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -199,7 +196,7 @@ implementation main() goto l00000a0f; lmain_goto_l00000a12: assume {:captureState "lmain_goto_l00000a12"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000a12; l00000a15_goto_l00000a1d: assume {:captureState "l00000a15_goto_l00000a1d"} true; @@ -207,7 +204,7 @@ implementation main() goto l00000a1d; l00000a15_goto_l00000a4f: assume {:captureState "l00000a15_goto_l00000a4f"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000a4f; l00000a50_goto_l00000a79: assume {:captureState "l00000a50_goto_l00000a79"} true; @@ -215,7 +212,7 @@ implementation main() goto l00000a79; l00000a50_goto_l00000a7c: assume {:captureState "l00000a50_goto_l00000a7c"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000a7c; l00000a7f_goto_l00000a3e: assume {:captureState "l00000a7f_goto_l00000a3e"} true; @@ -223,7 +220,7 @@ implementation main() goto l00000a3e; l00000a7f_goto_l00000a8c: assume {:captureState "l00000a7f_goto_l00000a8c"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000a8c; } diff --git a/src/test/correct/switch/clang_pic/switch.expected b/src/test/correct/switch/clang_pic/switch.expected index 780086db6..aaecc750f 100644 --- a/src/test/correct/switch/clang_pic/switch.expected +++ b/src/test/correct/switch/clang_pic/switch.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R31, Gamma_R8, Gamma_stack, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -199,7 +196,7 @@ implementation main() goto l00000a0f; lmain_goto_l00000a12: assume {:captureState "lmain_goto_l00000a12"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000a12; l00000a15_goto_l00000a1d: assume {:captureState "l00000a15_goto_l00000a1d"} true; @@ -207,7 +204,7 @@ implementation main() goto l00000a1d; l00000a15_goto_l00000a4f: assume {:captureState "l00000a15_goto_l00000a4f"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000a4f; l00000a50_goto_l00000a79: assume {:captureState "l00000a50_goto_l00000a79"} true; @@ -215,7 +212,7 @@ implementation main() goto l00000a79; l00000a50_goto_l00000a7c: assume {:captureState "l00000a50_goto_l00000a7c"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000a7c; l00000a7f_goto_l00000a3e: assume {:captureState "l00000a7f_goto_l00000a3e"} true; @@ -223,7 +220,7 @@ implementation main() goto l00000a3e; l00000a7f_goto_l00000a8c: assume {:captureState "l00000a7f_goto_l00000a8c"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000a8c; } diff --git a/src/test/correct/switch/gcc/switch.expected b/src/test/correct/switch/gcc/switch.expected index 8551cd47c..d0ab53b49 100644 --- a/src/test/correct/switch/gcc/switch.expected +++ b/src/test/correct/switch/gcc/switch.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -165,7 +162,7 @@ implementation main() goto l00000339; lmain_goto_l0000036b: assume {:captureState "lmain_goto_l0000036b"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000036b; l0000036b_goto_l0000035c: assume {:captureState "l0000036b_goto_l0000035c"} true; @@ -173,7 +170,7 @@ implementation main() goto l0000035c; l0000036b_goto_l00000391: assume {:captureState "l0000036b_goto_l00000391"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000391; } diff --git a/src/test/correct/switch/gcc_O2/switch.expected b/src/test/correct/switch/gcc_O2/switch.expected index 1f67f99ba..628d250a1 100644 --- a/src/test/correct/switch/gcc_O2/switch.expected +++ b/src/test/correct/switch/gcc_O2/switch.expected @@ -24,7 +24,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -38,11 +37,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); free requires (memory_load64_le(mem, 69632bv64) == 0bv64); free requires (memory_load64_le(mem, 69640bv64) == 69640bv64); diff --git a/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected b/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected index df3aef469..e9ad9301f 100644 --- a/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected +++ b/src/test/correct/switch/gcc_no_plt_no_pic/switch.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -165,7 +162,7 @@ implementation main() goto l00000998; lmain_goto_l000009ca: assume {:captureState "lmain_goto_l000009ca"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000009ca; l000009ca_goto_l000009bb: assume {:captureState "l000009ca_goto_l000009bb"} true; @@ -173,7 +170,7 @@ implementation main() goto l000009bb; l000009ca_goto_l000009f0: assume {:captureState "l000009ca_goto_l000009f0"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000009f0; } diff --git a/src/test/correct/switch/gcc_pic/switch.expected b/src/test/correct/switch/gcc_pic/switch.expected index df3aef469..e9ad9301f 100644 --- a/src/test/correct/switch/gcc_pic/switch.expected +++ b/src/test/correct/switch/gcc_pic/switch.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -165,7 +162,7 @@ implementation main() goto l00000998; lmain_goto_l000009ca: assume {:captureState "lmain_goto_l000009ca"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000009ca; l000009ca_goto_l000009bb: assume {:captureState "l000009ca_goto_l000009bb"} true; @@ -173,7 +170,7 @@ implementation main() goto l000009bb; l000009ca_goto_l000009f0: assume {:captureState "l000009ca_goto_l000009f0"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000009f0; } diff --git a/src/test/correct/switch2/clang_O2/switch2.expected b/src/test/correct/switch2/clang_O2/switch2.expected index 85e3ff4c3..03b9b58a2 100644 --- a/src/test/correct/switch2/clang_O2/switch2.expected +++ b/src/test/correct/switch2/clang_O2/switch2.expected @@ -23,7 +23,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1820bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -37,11 +36,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); requires (Gamma_R0 == true); free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/correct/switch2/gcc/switch2.expected b/src/test/correct/switch2/gcc/switch2.expected index c82a7b6e5..4fe6e5b69 100644 --- a/src/test/correct/switch2/gcc/switch2.expected +++ b/src/test/correct/switch2/gcc/switch2.expected @@ -72,7 +72,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -86,11 +85,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; requires (Gamma_R0 == true); @@ -293,7 +290,7 @@ implementation main() goto l000003d0; lmain_goto_l00000408: assume {:captureState "lmain_goto_l00000408"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000408; l00000408_goto_l000003e2: assume {:captureState "l00000408_goto_l000003e2"} true; @@ -301,7 +298,7 @@ implementation main() goto l000003e2; l00000408_goto_l00000430: assume {:captureState "l00000408_goto_l00000430"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000430; l00000430_goto_l00000451: assume {:captureState "l00000430_goto_l00000451"} true; @@ -309,7 +306,7 @@ implementation main() goto l00000451; l00000430_goto_l00000467: assume {:captureState "l00000430_goto_l00000467"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000467; l00000467_goto_l000003e2: assume {:captureState "l00000467_goto_l000003e2"} true; @@ -317,7 +314,7 @@ implementation main() goto l000003e2; l00000467_goto_l0000048f: assume {:captureState "l00000467_goto_l0000048f"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l0000048f; l0000048f_goto_l000004b0: assume {:captureState "l0000048f_goto_l000004b0"} true; @@ -325,7 +322,7 @@ implementation main() goto l000004b0; l0000048f_goto_l000004e2: assume {:captureState "l0000048f_goto_l000004e2"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000004e2; l000004e2_goto_l000003e2: assume {:captureState "l000004e2_goto_l000003e2"} true; @@ -333,7 +330,7 @@ implementation main() goto l000003e2; l000004e2_goto_l0000050a: assume {:captureState "l000004e2_goto_l0000050a"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l0000050a; l0000050a_goto_l000004c4: assume {:captureState "l0000050a_goto_l000004c4"} true; @@ -341,7 +338,7 @@ implementation main() goto l000004c4; l0000050a_goto_l00000530: assume {:captureState "l0000050a_goto_l00000530"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000530; l00000530_goto_l000004d5: assume {:captureState "l00000530_goto_l000004d5"} true; @@ -349,7 +346,7 @@ implementation main() goto l000004d5; l00000530_goto_l00000556: assume {:captureState "l00000530_goto_l00000556"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000556; } diff --git a/src/test/correct/switch2/gcc_O2/switch2.expected b/src/test/correct/switch2/gcc_O2/switch2.expected index 29a8392ee..d51a51b6c 100644 --- a/src/test/correct/switch2/gcc_O2/switch2.expected +++ b/src/test/correct/switch2/gcc_O2/switch2.expected @@ -23,7 +23,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -37,11 +36,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); requires (Gamma_R0 == true); free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected b/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected index a031ba2c4..11744cb51 100644 --- a/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected +++ b/src/test/correct/switch2/gcc_no_plt_no_pic/switch2.expected @@ -72,7 +72,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -86,11 +85,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; requires (Gamma_R0 == true); @@ -293,7 +290,7 @@ implementation main() goto l00000c2f; lmain_goto_l00000c67: assume {:captureState "lmain_goto_l00000c67"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000c67; l00000c67_goto_l00000c41: assume {:captureState "l00000c67_goto_l00000c41"} true; @@ -301,7 +298,7 @@ implementation main() goto l00000c41; l00000c67_goto_l00000c8f: assume {:captureState "l00000c67_goto_l00000c8f"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000c8f; l00000c8f_goto_l00000cb0: assume {:captureState "l00000c8f_goto_l00000cb0"} true; @@ -309,7 +306,7 @@ implementation main() goto l00000cb0; l00000c8f_goto_l00000cc6: assume {:captureState "l00000c8f_goto_l00000cc6"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000cc6; l00000cc6_goto_l00000c41: assume {:captureState "l00000cc6_goto_l00000c41"} true; @@ -317,7 +314,7 @@ implementation main() goto l00000c41; l00000cc6_goto_l00000cee: assume {:captureState "l00000cc6_goto_l00000cee"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000cee; l00000cee_goto_l00000d0f: assume {:captureState "l00000cee_goto_l00000d0f"} true; @@ -325,7 +322,7 @@ implementation main() goto l00000d0f; l00000cee_goto_l00000d41: assume {:captureState "l00000cee_goto_l00000d41"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000d41; l00000d41_goto_l00000c41: assume {:captureState "l00000d41_goto_l00000c41"} true; @@ -333,7 +330,7 @@ implementation main() goto l00000c41; l00000d41_goto_l00000d69: assume {:captureState "l00000d41_goto_l00000d69"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000d69; l00000d69_goto_l00000d23: assume {:captureState "l00000d69_goto_l00000d23"} true; @@ -341,7 +338,7 @@ implementation main() goto l00000d23; l00000d69_goto_l00000d8f: assume {:captureState "l00000d69_goto_l00000d8f"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000d8f; l00000d8f_goto_l00000d34: assume {:captureState "l00000d8f_goto_l00000d34"} true; @@ -349,7 +346,7 @@ implementation main() goto l00000d34; l00000d8f_goto_l00000db5: assume {:captureState "l00000d8f_goto_l00000db5"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000db5; } diff --git a/src/test/correct/switch2/gcc_pic/switch2.expected b/src/test/correct/switch2/gcc_pic/switch2.expected index a031ba2c4..11744cb51 100644 --- a/src/test/correct/switch2/gcc_pic/switch2.expected +++ b/src/test/correct/switch2/gcc_pic/switch2.expected @@ -72,7 +72,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1820bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -86,11 +85,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R29, R30, R31, stack; requires (Gamma_R0 == true); @@ -293,7 +290,7 @@ implementation main() goto l00000c2f; lmain_goto_l00000c67: assume {:captureState "lmain_goto_l00000c67"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000c67; l00000c67_goto_l00000c41: assume {:captureState "l00000c67_goto_l00000c41"} true; @@ -301,7 +298,7 @@ implementation main() goto l00000c41; l00000c67_goto_l00000c8f: assume {:captureState "l00000c67_goto_l00000c8f"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000c8f; l00000c8f_goto_l00000cb0: assume {:captureState "l00000c8f_goto_l00000cb0"} true; @@ -309,7 +306,7 @@ implementation main() goto l00000cb0; l00000c8f_goto_l00000cc6: assume {:captureState "l00000c8f_goto_l00000cc6"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000cc6; l00000cc6_goto_l00000c41: assume {:captureState "l00000cc6_goto_l00000c41"} true; @@ -317,7 +314,7 @@ implementation main() goto l00000c41; l00000cc6_goto_l00000cee: assume {:captureState "l00000cc6_goto_l00000cee"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000cee; l00000cee_goto_l00000d0f: assume {:captureState "l00000cee_goto_l00000d0f"} true; @@ -325,7 +322,7 @@ implementation main() goto l00000d0f; l00000cee_goto_l00000d41: assume {:captureState "l00000cee_goto_l00000d41"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000d41; l00000d41_goto_l00000c41: assume {:captureState "l00000d41_goto_l00000c41"} true; @@ -333,7 +330,7 @@ implementation main() goto l00000c41; l00000d41_goto_l00000d69: assume {:captureState "l00000d41_goto_l00000d69"} true; - assume (!(bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) != 0bv1)); + assume (bvand1(bvcomp1(NF, VF), bvcomp1(ZF, 0bv1)) == 0bv1); goto l00000d69; l00000d69_goto_l00000d23: assume {:captureState "l00000d69_goto_l00000d23"} true; @@ -341,7 +338,7 @@ implementation main() goto l00000d23; l00000d69_goto_l00000d8f: assume {:captureState "l00000d69_goto_l00000d8f"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000d8f; l00000d8f_goto_l00000d34: assume {:captureState "l00000d8f_goto_l00000d34"} true; @@ -349,7 +346,7 @@ implementation main() goto l00000d34; l00000d8f_goto_l00000db5: assume {:captureState "l00000d8f_goto_l00000db5"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000db5; } diff --git a/src/test/correct/syscall/clang/syscall.expected b/src/test/correct/syscall/clang/syscall.expected index f3b6a3778..0175f2f8e 100644 --- a/src/test/correct/syscall/clang/syscall.expected +++ b/src/test/correct/syscall/clang/syscall.expected @@ -69,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -83,11 +82,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1944bv64) == 1bv8); @@ -107,7 +104,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); diff --git a/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected b/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected index a1f90b56f..90781988c 100644 --- a/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected +++ b/src/test/correct/syscall/clang_no_plt_no_pic/syscall.expected @@ -69,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -83,11 +82,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1944bv64) == 1bv8); @@ -107,7 +104,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); diff --git a/src/test/correct/syscall/clang_pic/syscall.expected b/src/test/correct/syscall/clang_pic/syscall.expected index a1f90b56f..90781988c 100644 --- a/src/test/correct/syscall/clang_pic/syscall.expected +++ b/src/test/correct/syscall/clang_pic/syscall.expected @@ -69,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -83,11 +82,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1944bv64) == 1bv8); @@ -107,7 +104,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69680bv64) == 69680bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69672bv64) == 0bv64); diff --git a/src/test/correct/syscall/gcc/syscall.expected b/src/test/correct/syscall/gcc/syscall.expected index 6f67c7e89..7c763b860 100644 --- a/src/test/correct/syscall/gcc/syscall.expected +++ b/src/test/correct/syscall/gcc/syscall.expected @@ -69,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -83,11 +82,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1932bv64) == 1bv8); @@ -107,7 +104,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/syscall/gcc_O2/syscall.expected b/src/test/correct/syscall/gcc_O2/syscall.expected index b59eaae8b..fcb66403d 100644 --- a/src/test/correct/syscall/gcc_O2/syscall.expected +++ b/src/test/correct/syscall/gcc_O2/syscall.expected @@ -28,7 +28,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1600bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -42,11 +41,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -68,4 +65,3 @@ procedure fork(); free ensures (memory_load64_le(mem, 69616bv64) == 1600bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - diff --git a/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected b/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected index a7d62f43d..0af6d545b 100644 --- a/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected +++ b/src/test/correct/syscall/gcc_no_plt_no_pic/syscall.expected @@ -69,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -83,11 +82,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1932bv64) == 1bv8); @@ -107,7 +104,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/syscall/gcc_pic/syscall.expected b/src/test/correct/syscall/gcc_pic/syscall.expected index a7d62f43d..0af6d545b 100644 --- a/src/test/correct/syscall/gcc_pic/syscall.expected +++ b/src/test/correct/syscall/gcc_pic/syscall.expected @@ -69,7 +69,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -83,11 +82,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure fork(); modifies Gamma_R16, Gamma_R17, R16, R17; free requires (memory_load8_le(mem, 1932bv64) == 1bv8); @@ -107,7 +104,6 @@ procedure fork(); free ensures (memory_load64_le(mem, 69616bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure main(); modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_stack, R0, R16, R17, R29, R30, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected index b7934730b..4c987715b 100644 --- a/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang/using_gamma_conditional.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -178,7 +177,7 @@ implementation main() goto l00000322; lmain_goto_l00000325: assume {:captureState "lmain_goto_l00000325"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000325; l00000328_goto_l00000330: assume {:captureState "l00000328_goto_l00000330"} true; @@ -186,7 +185,7 @@ implementation main() goto l00000330; l00000328_goto_l00000358: assume {:captureState "l00000328_goto_l00000358"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000358; } diff --git a/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected index 0ab65d084..2e22216b9 100644 --- a/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang_O2/using_gamma_conditional.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -140,7 +139,7 @@ implementation main() goto l000002e5; lmain_goto_l000002e8: assume {:captureState "lmain_goto_l000002e8"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000002e8; } diff --git a/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected index a5602309f..53d1fb153 100644 --- a/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang_no_plt_no_pic/using_gamma_conditional.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -178,7 +177,7 @@ implementation main() goto l0000093d; lmain_goto_l00000940: assume {:captureState "lmain_goto_l00000940"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000940; l00000943_goto_l0000094b: assume {:captureState "l00000943_goto_l0000094b"} true; @@ -186,7 +185,7 @@ implementation main() goto l0000094b; l00000943_goto_l00000973: assume {:captureState "l00000943_goto_l00000973"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000973; } diff --git a/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected index faa42ab6b..e0851a5c3 100644 --- a/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/clang_pic/using_gamma_conditional.expected @@ -68,7 +68,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -187,7 +186,7 @@ implementation main() goto l0000032d; lmain_goto_l00000330: assume {:captureState "lmain_goto_l00000330"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000330; l00000333_goto_l0000033b: assume {:captureState "l00000333_goto_l0000033b"} true; @@ -195,7 +194,7 @@ implementation main() goto l0000033b; l00000333_goto_l00000363: assume {:captureState "l00000333_goto_l00000363"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000363; } diff --git a/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected index 5c16e34e1..042817109 100644 --- a/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc/using_gamma_conditional.expected @@ -49,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -139,7 +138,7 @@ implementation main() goto l000002fa; lmain_goto_l00000309: assume {:captureState "lmain_goto_l00000309"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000309; } diff --git a/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected index 2e1666df4..cc3f785b6 100644 --- a/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc_O2/using_gamma_conditional.expected @@ -49,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -138,7 +137,7 @@ implementation main() goto l000001cf; lmain_goto_l000001d2: assume {:captureState "lmain_goto_l000001d2"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000001d2; } diff --git a/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected index 1e8e50938..a899e0a02 100644 --- a/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc_no_plt_no_pic/using_gamma_conditional.expected @@ -49,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -139,7 +138,7 @@ implementation main() goto l000008b3; lmain_goto_l000008c2: assume {:captureState "lmain_goto_l000008c2"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000008c2; } diff --git a/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected b/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected index 53779891b..c6db86754 100644 --- a/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected +++ b/src/test/correct/using_gamma_conditional/gcc_pic/using_gamma_conditional.expected @@ -54,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69600bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (old(gamma_load32(Gamma_mem, $x_addr)) ==> gamma_load32(Gamma_mem, $x_addr)); @@ -147,7 +146,7 @@ implementation main() goto l000002fb; lmain_goto_l0000030a: assume {:captureState "lmain_goto_l0000030a"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000030a; } diff --git a/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected index ea0fd7b38..05d75cf8e 100644 --- a/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang/using_gamma_write_z.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected index 5e9d099bf..9af1fc2c4 100644 --- a/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang_O2/using_gamma_write_z.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected index 063922c11..e4ccca552 100644 --- a/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang_no_plt_no_pic/using_gamma_write_z.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected index 8c496236e..ac6b61b78 100644 --- a/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/clang_pic/using_gamma_write_z.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69064bv64) == 1792bv64); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected index 27ded439f..0a1ec6d9b 100644 --- a/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc/using_gamma_write_z.expected @@ -50,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected index 9fa395c33..556ad567e 100644 --- a/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc_O2/using_gamma_write_z.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected index 17c400c32..053ed1d56 100644 --- a/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc_no_plt_no_pic/using_gamma_write_z.expected @@ -50,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); diff --git a/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected b/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected index fba1f0d18..c02957a55 100644 --- a/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected +++ b/src/test/correct/using_gamma_write_z/gcc_pic/using_gamma_write_z.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69600bv64) == 69656bv64); free ensures (memory_load64_le(mem, 69008bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures ((old(memory_load32_le(mem, $x_addr)) == memory_load32_le(mem, $x_addr)) && (old(memory_load32_le(mem, $z_addr)) == memory_load32_le(mem, $z_addr))); diff --git a/src/test/incorrect/basicassign/clang/basicassign.expected b/src/test/incorrect/basicassign/clang/basicassign.expected index d5c211adc..9ab8a7062 100644 --- a/src/test/incorrect/basicassign/clang/basicassign.expected +++ b/src/test/incorrect/basicassign/clang/basicassign.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -80,7 +79,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign/clang_O2/basicassign.expected b/src/test/incorrect/basicassign/clang_O2/basicassign.expected index f6f57fe4e..04f35a1f3 100644 --- a/src/test/incorrect/basicassign/clang_O2/basicassign.expected +++ b/src/test/incorrect/basicassign/clang_O2/basicassign.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -78,7 +77,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected b/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected index f7bc8499a..135a1f478 100644 --- a/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/clang_no_plt_no_pic/basicassign.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -80,7 +79,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign/clang_pic/basicassign.expected b/src/test/incorrect/basicassign/clang_pic/basicassign.expected index 2bd69b5cf..570f828e1 100644 --- a/src/test/incorrect/basicassign/clang_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/clang_pic/basicassign.expected @@ -66,7 +66,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69560bv64) == 69692bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -87,7 +86,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R11, Gamma_R8, Gamma_R9, Gamma_mem, R0, R10, R11, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign/gcc/basicassign.expected b/src/test/incorrect/basicassign/gcc/basicassign.expected index a1f0d4c2f..67c9fd8ee 100644 --- a/src/test/incorrect/basicassign/gcc/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc/basicassign.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -74,7 +73,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign/gcc_O2/basicassign.expected b/src/test/incorrect/basicassign/gcc_O2/basicassign.expected index d35ed3cc9..bfa1cf91d 100644 --- a/src/test/incorrect/basicassign/gcc_O2/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc_O2/basicassign.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -76,7 +75,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected b/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected index b1619ca6e..bbebca37e 100644 --- a/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc_no_plt_no_pic/basicassign.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -74,7 +73,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign/gcc_pic/basicassign.expected b/src/test/incorrect/basicassign/gcc_pic/basicassign.expected index 1e169ff2f..d0cdbad3c 100644 --- a/src/test/incorrect/basicassign/gcc_pic/basicassign.expected +++ b/src/test/incorrect/basicassign/gcc_pic/basicassign.expected @@ -60,7 +60,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69000bv64) == 1792bv64); free ensures (memory_load64_le(mem, 68992bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (memory_load32_le(mem, $x_addr) == old(memory_load32_le(mem, $x_addr))); @@ -81,7 +80,6 @@ implementation {:extern} rely_reflexive() procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_mem, R0, R1, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign1/clang/basicassign1.expected b/src/test/incorrect/basicassign1/clang/basicassign1.expected index 09dc564b9..7b7067e55 100644 --- a/src/test/incorrect/basicassign1/clang/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang/basicassign1.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected b/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected index 5078c4b18..a49f74f09 100644 --- a/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang_O2/basicassign1.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -65,11 +64,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected b/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected index 5a25be7df..c1153b7f3 100644 --- a/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang_no_plt_no_pic/basicassign1.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected b/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected index 4aa74ecf7..3e1253cd2 100644 --- a/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/clang_pic/basicassign1.expected @@ -63,7 +63,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -77,11 +76,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign1/gcc/basicassign1.expected b/src/test/incorrect/basicassign1/gcc/basicassign1.expected index b43a9e399..572c9f872 100644 --- a/src/test/incorrect/basicassign1/gcc/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc/basicassign1.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -67,11 +66,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected b/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected index 9e4445624..25f2cc8d9 100644 --- a/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc_O2/basicassign1.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -65,11 +64,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected b/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected index 30b187795..abc753acb 100644 --- a/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc_no_plt_no_pic/basicassign1.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -67,11 +66,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected b/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected index ca0fb4572..7824e9e95 100644 --- a/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected +++ b/src/test/incorrect/basicassign1/gcc_pic/basicassign1.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69652bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -73,11 +72,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign2/clang/basicassign2.expected b/src/test/incorrect/basicassign2/clang/basicassign2.expected index d437763d7..e06a514ac 100644 --- a/src/test/incorrect/basicassign2/clang/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang/basicassign2.expected @@ -54,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -68,11 +67,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected b/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected index 7c4257fb6..551197251 100644 --- a/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang_O2/basicassign2.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -62,11 +61,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected b/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected index f5803fd15..5755fb3bf 100644 --- a/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang_no_plt_no_pic/basicassign2.expected @@ -54,7 +54,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -68,11 +67,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected b/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected index 38709843a..34024cf4c 100644 --- a/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/clang_pic/basicassign2.expected @@ -56,7 +56,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -70,11 +69,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign2/gcc/basicassign2.expected b/src/test/incorrect/basicassign2/gcc/basicassign2.expected index 3b282fe5d..480c1d306 100644 --- a/src/test/incorrect/basicassign2/gcc/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc/basicassign2.expected @@ -50,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,11 +63,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected b/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected index 21a4f0268..4b88b7423 100644 --- a/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc_O2/basicassign2.expected @@ -48,7 +48,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -62,11 +61,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected b/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected index 5c9d19dbb..1711ce3d2 100644 --- a/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc_no_plt_no_pic/basicassign2.expected @@ -50,7 +50,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -64,11 +63,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected b/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected index f2a37ac51..366d025b8 100644 --- a/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected +++ b/src/test/incorrect/basicassign2/gcc_pic/basicassign2.expected @@ -52,7 +52,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -66,11 +65,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign3/clang/basicassign3.expected b/src/test/incorrect/basicassign3/clang/basicassign3.expected index 4cdf9fa9a..ef1c38d25 100644 --- a/src/test/incorrect/basicassign3/clang/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang/basicassign3.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected b/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected index a2d0477ba..5a813d070 100644 --- a/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang_O2/basicassign3.expected @@ -49,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -63,11 +62,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R8, Gamma_R9, Gamma_mem, R0, R8, R9, mem; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected b/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected index c106f2df6..7db9fa80d 100644 --- a/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang_no_plt_no_pic/basicassign3.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected b/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected index a5ed33ca2..11bbf80c3 100644 --- a/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/clang_pic/basicassign3.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -75,11 +74,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R10, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R10, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign3/gcc/basicassign3.expected b/src/test/incorrect/basicassign3/gcc/basicassign3.expected index 0f296bcbe..6ac5ac301 100644 --- a/src/test/incorrect/basicassign3/gcc/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc/basicassign3.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -65,11 +64,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected b/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected index c7c59a99c..ee12b7189 100644 --- a/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc_O2/basicassign3.expected @@ -49,7 +49,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1536bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -63,11 +62,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R2, Gamma_mem, R0, R1, R2, mem; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected b/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected index e9ba3792f..9081fc963 100644 --- a/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc_no_plt_no_pic/basicassign3.expected @@ -51,7 +51,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -65,11 +64,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected b/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected index 4fd690d95..dc7cd4e60 100644 --- a/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected +++ b/src/test/incorrect/basicassign3/gcc_pic/basicassign3.expected @@ -57,7 +57,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69649bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -71,11 +70,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); diff --git a/src/test/incorrect/iflocal/clang/iflocal.expected b/src/test/incorrect/iflocal/clang/iflocal.expected index 4b89a18ad..51ff8ac39 100644 --- a/src/test/incorrect/iflocal/clang/iflocal.expected +++ b/src/test/incorrect/iflocal/clang/iflocal.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -160,7 +157,7 @@ implementation main() goto l00000334; lmain_goto_l00000337: assume {:captureState "lmain_goto_l00000337"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000337; l0000033a_goto_l00000342: assume {:captureState "l0000033a_goto_l00000342"} true; @@ -168,7 +165,7 @@ implementation main() goto l00000342; l0000033a_goto_l00000359: assume {:captureState "l0000033a_goto_l00000359"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000359; } diff --git a/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected b/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected index 27d369d35..49930b245 100644 --- a/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/clang_no_plt_no_pic/iflocal.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -160,7 +157,7 @@ implementation main() goto l00000956; lmain_goto_l00000959: assume {:captureState "lmain_goto_l00000959"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000959; l0000095c_goto_l00000964: assume {:captureState "l0000095c_goto_l00000964"} true; @@ -168,7 +165,7 @@ implementation main() goto l00000964; l0000095c_goto_l0000097b: assume {:captureState "l0000095c_goto_l0000097b"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000097b; } diff --git a/src/test/incorrect/iflocal/clang_pic/iflocal.expected b/src/test/incorrect/iflocal/clang_pic/iflocal.expected index 27d369d35..49930b245 100644 --- a/src/test/incorrect/iflocal/clang_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/clang_pic/iflocal.expected @@ -55,7 +55,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -69,11 +68,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_stack, R0, R31, R8, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -160,7 +157,7 @@ implementation main() goto l00000956; lmain_goto_l00000959: assume {:captureState "lmain_goto_l00000959"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000959; l0000095c_goto_l00000964: assume {:captureState "l0000095c_goto_l00000964"} true; @@ -168,7 +165,7 @@ implementation main() goto l00000964; l0000095c_goto_l0000097b: assume {:captureState "l0000095c_goto_l0000097b"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000097b; } diff --git a/src/test/incorrect/iflocal/gcc/iflocal.expected b/src/test/incorrect/iflocal/gcc/iflocal.expected index ea37ce624..605b66fa7 100644 --- a/src/test/incorrect/iflocal/gcc/iflocal.expected +++ b/src/test/incorrect/iflocal/gcc/iflocal.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -67,11 +66,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -140,7 +137,7 @@ implementation main() goto l00000318; lmain_goto_l0000032d: assume {:captureState "lmain_goto_l0000032d"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000032d; } diff --git a/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected b/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected index 62677719f..4bf716667 100644 --- a/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/gcc_no_plt_no_pic/iflocal.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -67,11 +66,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -140,7 +137,7 @@ implementation main() goto l000008ff; lmain_goto_l00000914: assume {:captureState "lmain_goto_l00000914"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000914; } diff --git a/src/test/incorrect/iflocal/gcc_pic/iflocal.expected b/src/test/incorrect/iflocal/gcc_pic/iflocal.expected index 62677719f..4bf716667 100644 --- a/src/test/incorrect/iflocal/gcc_pic/iflocal.expected +++ b/src/test/incorrect/iflocal/gcc_pic/iflocal.expected @@ -53,7 +53,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -67,11 +66,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_stack, R0, R31, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -140,7 +137,7 @@ implementation main() goto l000008ff; lmain_goto_l00000914: assume {:captureState "lmain_goto_l00000914"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000914; } diff --git a/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected index d9ea93143..e9595727d 100644 --- a/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/clang/nestedifglobal.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -75,11 +74,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -244,7 +241,7 @@ implementation main() goto l00000390; lmain_goto_l00000393: assume {:captureState "lmain_goto_l00000393"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000393; l00000396_goto_l0000039e: assume {:captureState "l00000396_goto_l0000039e"} true; @@ -252,7 +249,7 @@ implementation main() goto l0000039e; l00000396_goto_l0000045d: assume {:captureState "l00000396_goto_l0000045d"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000045d; l0000039e_goto_l000003ce: assume {:captureState "l0000039e_goto_l000003ce"} true; @@ -260,7 +257,7 @@ implementation main() goto l000003ce; l0000039e_goto_l000003d1: assume {:captureState "l0000039e_goto_l000003d1"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000003d1; l000003d4_goto_l000003dc: assume {:captureState "l000003d4_goto_l000003dc"} true; @@ -268,7 +265,7 @@ implementation main() goto l000003dc; l000003d4_goto_l00000448: assume {:captureState "l000003d4_goto_l00000448"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000448; l000003dc_goto_l00000407: assume {:captureState "l000003dc_goto_l00000407"} true; @@ -276,7 +273,7 @@ implementation main() goto l00000407; l000003dc_goto_l0000040a: assume {:captureState "l000003dc_goto_l0000040a"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l0000040a; l0000040d_goto_l00000415: assume {:captureState "l0000040d_goto_l00000415"} true; @@ -284,7 +281,7 @@ implementation main() goto l00000415; l0000040d_goto_l0000042c: assume {:captureState "l0000040d_goto_l0000042c"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000042c; } diff --git a/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected index 48abbd03d..fb1393842 100644 --- a/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/clang_no_plt_no_pic/nestedifglobal.expected @@ -61,7 +61,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69672bv64) == 69672bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -75,11 +74,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -244,7 +241,7 @@ implementation main() goto l00000ae0; lmain_goto_l00000ae3: assume {:captureState "lmain_goto_l00000ae3"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000ae3; l00000ae6_goto_l00000aee: assume {:captureState "l00000ae6_goto_l00000aee"} true; @@ -252,7 +249,7 @@ implementation main() goto l00000aee; l00000ae6_goto_l00000bad: assume {:captureState "l00000ae6_goto_l00000bad"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000bad; l00000aee_goto_l00000b1e: assume {:captureState "l00000aee_goto_l00000b1e"} true; @@ -260,7 +257,7 @@ implementation main() goto l00000b1e; l00000aee_goto_l00000b21: assume {:captureState "l00000aee_goto_l00000b21"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000b21; l00000b24_goto_l00000b2c: assume {:captureState "l00000b24_goto_l00000b2c"} true; @@ -268,7 +265,7 @@ implementation main() goto l00000b2c; l00000b24_goto_l00000b98: assume {:captureState "l00000b24_goto_l00000b98"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000b98; l00000b2c_goto_l00000b57: assume {:captureState "l00000b2c_goto_l00000b57"} true; @@ -276,7 +273,7 @@ implementation main() goto l00000b57; l00000b2c_goto_l00000b5a: assume {:captureState "l00000b2c_goto_l00000b5a"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000b5a; l00000b5d_goto_l00000b65: assume {:captureState "l00000b5d_goto_l00000b65"} true; @@ -284,7 +281,7 @@ implementation main() goto l00000b65; l00000b5d_goto_l00000b7c: assume {:captureState "l00000b5d_goto_l00000b7c"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000b7c; } diff --git a/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected index 04a44e79d..21323328b 100644 --- a/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/clang_pic/nestedifglobal.expected @@ -75,7 +75,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 1876bv64); free ensures (memory_load64_le(mem, 69056bv64) == 1792bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -89,11 +88,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_mem, Gamma_stack, R0, R31, R8, R9, mem, stack; free requires (memory_load64_le(mem, 69664bv64) == 0bv64); @@ -268,7 +265,7 @@ implementation main() goto l000003ab; lmain_goto_l000003ae: assume {:captureState "lmain_goto_l000003ae"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000003ae; l000003b1_goto_l000003b9: assume {:captureState "l000003b1_goto_l000003b9"} true; @@ -276,7 +273,7 @@ implementation main() goto l000003b9; l000003b1_goto_l00000481: assume {:captureState "l000003b1_goto_l00000481"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000481; l000003b9_goto_l000003eb: assume {:captureState "l000003b9_goto_l000003eb"} true; @@ -284,7 +281,7 @@ implementation main() goto l000003eb; l000003b9_goto_l000003ee: assume {:captureState "l000003b9_goto_l000003ee"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l000003ee; l000003f1_goto_l000003f9: assume {:captureState "l000003f1_goto_l000003f9"} true; @@ -292,7 +289,7 @@ implementation main() goto l000003f9; l000003f1_goto_l0000046c: assume {:captureState "l000003f1_goto_l0000046c"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l0000046c; l000003f9_goto_l00000424: assume {:captureState "l000003f9_goto_l00000424"} true; @@ -300,7 +297,7 @@ implementation main() goto l00000424; l000003f9_goto_l00000427: assume {:captureState "l000003f9_goto_l00000427"} true; - assume (!(bvcomp1(ZF, 1bv1) != 0bv1)); + assume (bvcomp1(ZF, 1bv1) == 0bv1); goto l00000427; l0000042a_goto_l00000432: assume {:captureState "l0000042a_goto_l00000432"} true; @@ -308,7 +305,7 @@ implementation main() goto l00000432; l0000042a_goto_l00000449: assume {:captureState "l0000042a_goto_l00000449"} true; - assume (!(bvcomp1(R8[1:0], 1bv1) != 0bv1)); + assume (bvcomp1(R8[1:0], 1bv1) == 0bv1); goto l00000449; } diff --git a/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected index a876025aa..6ce2aa734 100644 --- a/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/gcc/nestedifglobal.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -73,11 +72,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -197,7 +194,7 @@ implementation main() goto l00000381; lmain_goto_l00000414: assume {:captureState "lmain_goto_l00000414"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000414; l00000381_goto_l000003b2: assume {:captureState "l00000381_goto_l000003b2"} true; @@ -205,7 +202,7 @@ implementation main() goto l000003b2; l00000381_goto_l00000407: assume {:captureState "l00000381_goto_l00000407"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000407; l000003b2_goto_l000003d8: assume {:captureState "l000003b2_goto_l000003d8"} true; @@ -213,7 +210,7 @@ implementation main() goto l000003d8; l000003b2_goto_l000003ed: assume {:captureState "l000003b2_goto_l000003ed"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000003ed; } diff --git a/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected index d9f0b868e..7fb79cb20 100644 --- a/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/gcc_no_plt_no_pic/nestedifglobal.expected @@ -59,7 +59,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69616bv64) == 1812bv64); free ensures (memory_load64_le(mem, 69640bv64) == 69640bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -73,11 +72,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -197,7 +194,7 @@ implementation main() goto l00000a79; lmain_goto_l00000b0c: assume {:captureState "lmain_goto_l00000b0c"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000b0c; l00000a79_goto_l00000aaa: assume {:captureState "l00000a79_goto_l00000aaa"} true; @@ -205,7 +202,7 @@ implementation main() goto l00000aaa; l00000a79_goto_l00000aff: assume {:captureState "l00000a79_goto_l00000aff"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000aff; l00000aaa_goto_l00000ad0: assume {:captureState "l00000aaa_goto_l00000ad0"} true; @@ -213,7 +210,7 @@ implementation main() goto l00000ad0; l00000aaa_goto_l00000ae5: assume {:captureState "l00000aaa_goto_l00000ae5"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000ae5; } diff --git a/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected b/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected index 9677f4eae..9caf56473 100644 --- a/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected +++ b/src/test/incorrect/nestedifglobal/gcc_pic/nestedifglobal.expected @@ -65,7 +65,6 @@ procedure {:extern} rely(); free ensures (memory_load64_le(mem, 69592bv64) == 69656bv64); free ensures (memory_load64_le(mem, 69000bv64) == 1872bv64); - procedure {:extern} rely_transitive(); modifies Gamma_mem, mem; ensures (mem == old(mem)); @@ -79,11 +78,9 @@ implementation {:extern} rely_transitive() procedure {:extern} rely_reflexive(); - procedure {:extern} guarantee_reflexive(); modifies Gamma_mem, mem; - procedure main(); modifies Gamma_R0, Gamma_R1, Gamma_R31, Gamma_mem, Gamma_stack, R0, R1, R31, mem, stack; free requires (memory_load64_le(mem, 69632bv64) == 0bv64); @@ -211,7 +208,7 @@ implementation main() goto l00000383; lmain_goto_l00000418: assume {:captureState "lmain_goto_l00000418"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l00000418; l00000383_goto_l000003b5: assume {:captureState "l00000383_goto_l000003b5"} true; @@ -219,7 +216,7 @@ implementation main() goto l000003b5; l00000383_goto_l0000040b: assume {:captureState "l00000383_goto_l0000040b"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l0000040b; l000003b5_goto_l000003db: assume {:captureState "l000003b5_goto_l000003db"} true; @@ -227,7 +224,7 @@ implementation main() goto l000003db; l000003b5_goto_l000003f0: assume {:captureState "l000003b5_goto_l000003f0"} true; - assume (!(bvnot1(bvcomp1(ZF, 1bv1)) != 0bv1)); + assume (bvnot1(bvcomp1(ZF, 1bv1)) == 0bv1); goto l000003f0; } From 6f898c959e73415b445293de37f65589b5ad1431 Mon Sep 17 00:00:00 2001 From: l-kent Date: Fri, 12 Jan 2024 13:31:10 +1000 Subject: [PATCH 28/36] fix warning --- src/main/scala/ir/Interpreter.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/ir/Interpreter.scala b/src/main/scala/ir/Interpreter.scala index bf8464821..a4cf495f7 100644 --- a/src/main/scala/ir/Interpreter.scala +++ b/src/main/scala/ir/Interpreter.scala @@ -170,7 +170,7 @@ class Interpreter() { case BoolNOT => if evalBool(un.arg, env) == TrueLiteral then FalseLiteral else TrueLiteral case _ => ??? } - + case _ => ??? } } From 3efb2e28dafc262409930b85a3295da0bbc354a1 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Fri, 12 Jan 2024 13:46:35 +1000 Subject: [PATCH 29/36] cleanup --- examples/memcpy-variants/example.model | 488 ------------------ .../proverlog.smt2 | 307 ----------- src/test/scala/SystemTests.scala | 2 +- 3 files changed, 1 insertion(+), 796 deletions(-) delete mode 100644 examples/memcpy-variants/example.model delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/proverlog.smt2 diff --git a/examples/memcpy-variants/example.model b/examples/memcpy-variants/example.model deleted file mode 100644 index 59aa92e76..000000000 --- a/examples/memcpy-variants/example.model +++ /dev/null @@ -1,488 +0,0 @@ -*** MODEL -#4 -> -#4@0 -> 84bv64 -$copiedtext_addr -> 131152bv64 -$text_addr -> 131128bv64 -Gamma_#4 -> -Gamma_malloc_base -> -Gamma_malloc_count -> -Gamma_malloc_end -> -Gamma_malloc_id -> -Gamma_mem -> (let (_ (a!1 (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 35184372088832 64) false) (_ 131141 64) false) (_ 131152 64) false))) (store (a!1) (_ (bv0) 64) false)) -Gamma_mem@0 -> (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 35184372088832 64) false) (_ 131141 64) false) (_ 131165 64) false) -Gamma_R0 -> -Gamma_R1 -> -Gamma_R16 -> -Gamma_R16@0 -> -Gamma_R17 -> -Gamma_R17@0 -> -Gamma_R2 -> -Gamma_R29 -> false -Gamma_R29@0 -> false -Gamma_R30 -> false -Gamma_R30@0 -> false -Gamma_R31 -> -Gamma_stack -> (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 128 64) false) (_ (bv2) 64) false) (_ 65536 64) false) -Gamma_stack@0 -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ (bv96) 64)) (= (x!1) (_ 35184372088832 64)))) -Gamma_stack@1 -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ 35184372088832 64)))) -malloc_base -> -malloc_count -> 0 -malloc_end -> -malloc_id -> -mem -> (_ (as-array) (k!0)) -mem@0 -> (_ (as-array) (k!7)) -R0 -> -R0@0 -> 131152bv64 -R1 -> -R1@0 -> 131128bv64 -R16 -> -R16@0 -> -R17 -> -R17@0 -> -R2 -> -R29 -> 0bv64 -R29@0 -> 0bv64 -R30 -> 0bv64 -R30@0 -> 0bv64 -R31 -> 100bv64 -R31@0 -> 100bv64 -stack -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv88) 64) (_ 128 8)) (_ (bv92) 64) (_ (bv2) 8)) -stack@0 -> (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv92) 64) (_ (bv2) 8)) -stack@1 -> (_ (as (const) (Array (bv64) (bv8))) 0bv8) -ControlFlow -> { - 0 2 -> (- 1) - 0 4 -> 2 - else -> 4 -} -gamma_load64 -> { - else -> false -} -gamma_load8 -> { - (_ (as-array) (k!8)) 131141bv64 -> false - (_ (as-array) (k!9)) 131141bv64 -> false - (_ (as-array) (k!9)) 35184372088832bv64 -> false - else -> true -} -gamma_store64 -> { - (_ (as-array) (k!4)) 92bv64 false -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ 35184372088832 64)))) - else -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ (bv96) 64)) (= (x!1) (_ 35184372088832 64)))) -} -k!0 -> { - 0bv64 -> 16bv8 - 130504bv64 -> 80bv8 - 130505bv64 -> 7bv8 - 130513bv64 -> 7bv8 - 131032bv64 -> 84bv8 - 131033bv64 -> 7bv8 - 131120bv64 -> 48bv8 - 131122bv64 -> 2bv8 - 131128bv64 -> 66bv8 - 131129bv64 -> 65bv8 - 131130bv64 -> 83bv8 - 131131bv64 -> 73bv8 - 131132bv64 -> 76bv8 - 131133bv64 -> 32bv8 - 131134bv64 -> 86bv8 - 131135bv64 -> 101bv8 - 131136bv64 -> 114bv8 - 131137bv64 -> 105bv8 - 131138bv64 -> 102bv8 - 131139bv64 -> 105bv8 - 131140bv64 -> 101bv8 - 131141bv64 -> 114bv8 - 131165bv64 -> 34bv8 - 1940bv64 -> 1bv8 - 1942bv64 -> 2bv8 - 20bv64 -> 128bv8 - 33554432bv64 -> 4bv8 - else -> 0bv8 -} -k!7 -> { - 1152921504606846976bv64 -> 64bv8 - 130504bv64 -> 80bv8 - 130505bv64 -> 7bv8 - 130513bv64 -> 7bv8 - 131032bv64 -> 84bv8 - 131033bv64 -> 7bv8 - 131120bv64 -> 48bv8 - 131122bv64 -> 2bv8 - 131140bv64 -> 101bv8 - 131141bv64 -> 114bv8 - 131152bv64 -> 66bv8 - 131153bv64 -> 65bv8 - 131154bv64 -> 83bv8 - 131155bv64 -> 73bv8 - 131156bv64 -> 76bv8 - 131157bv64 -> 32bv8 - 131158bv64 -> 86bv8 - 131159bv64 -> 101bv8 - 131160bv64 -> 114bv8 - 131161bv64 -> 105bv8 - 131162bv64 -> 102bv8 - 131165bv64 -> 114bv8 - 1940bv64 -> 1bv8 - 1942bv64 -> 2bv8 - 96bv64 -> 2bv8 - else -> 0bv8 -} -lambda#0 -> { - 92bv64 8bv64 false (_ (as-array) (k!4)) -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ 35184372088832 64)))) - else -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ (bv96) 64)) (= (x!1) (_ 35184372088832 64)))) -} -lambda#1 -> { - 92bv64 8bv64 0bv64 92bv64 (_ (as-array) (k!2)) -> (_ (as (const) (Array (bv64) (bv8))) 0bv8) - else -> (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv92) 64) (_ (bv2) 8)) -} -memory_load64_le -> { - else -> 0bv64 -} -memory_load8_le -> { - (_ (as-array) (k!0)) 130504bv64 -> 80bv8 - (_ (as-array) (k!0)) 130505bv64 -> 7bv8 - (_ (as-array) (k!0)) 130513bv64 -> 7bv8 - (_ (as-array) (k!0)) 131032bv64 -> 84bv8 - (_ (as-array) (k!0)) 131033bv64 -> 7bv8 - (_ (as-array) (k!0)) 131120bv64 -> 48bv8 - (_ (as-array) (k!0)) 131122bv64 -> 2bv8 - (_ (as-array) (k!0)) 131128bv64 -> 66bv8 - (_ (as-array) (k!0)) 131129bv64 -> 65bv8 - (_ (as-array) (k!0)) 131130bv64 -> 83bv8 - (_ (as-array) (k!0)) 131131bv64 -> 73bv8 - (_ (as-array) (k!0)) 131132bv64 -> 76bv8 - (_ (as-array) (k!0)) 131133bv64 -> 32bv8 - (_ (as-array) (k!0)) 131134bv64 -> 86bv8 - (_ (as-array) (k!0)) 131135bv64 -> 101bv8 - (_ (as-array) (k!0)) 131136bv64 -> 114bv8 - (_ (as-array) (k!0)) 131137bv64 -> 105bv8 - (_ (as-array) (k!0)) 131138bv64 -> 102bv8 - (_ (as-array) (k!0)) 131139bv64 -> 105bv8 - (_ (as-array) (k!0)) 131140bv64 -> 101bv8 - (_ (as-array) (k!0)) 131141bv64 -> 114bv8 - (_ (as-array) (k!0)) 131165bv64 -> 34bv8 - (_ (as-array) (k!0)) 1940bv64 -> 1bv8 - (_ (as-array) (k!0)) 1942bv64 -> 2bv8 - (_ (as-array) (k!7)) 130504bv64 -> 80bv8 - (_ (as-array) (k!7)) 130505bv64 -> 7bv8 - (_ (as-array) (k!7)) 130513bv64 -> 7bv8 - (_ (as-array) (k!7)) 131032bv64 -> 84bv8 - (_ (as-array) (k!7)) 131033bv64 -> 7bv8 - (_ (as-array) (k!7)) 131120bv64 -> 48bv8 - (_ (as-array) (k!7)) 131122bv64 -> 2bv8 - (_ (as-array) (k!7)) 131140bv64 -> 101bv8 - (_ (as-array) (k!7)) 131141bv64 -> 114bv8 - (_ (as-array) (k!7)) 131152bv64 -> 66bv8 - (_ (as-array) (k!7)) 131153bv64 -> 65bv8 - (_ (as-array) (k!7)) 131154bv64 -> 83bv8 - (_ (as-array) (k!7)) 131155bv64 -> 73bv8 - (_ (as-array) (k!7)) 131156bv64 -> 76bv8 - (_ (as-array) (k!7)) 131157bv64 -> 32bv8 - (_ (as-array) (k!7)) 131158bv64 -> 86bv8 - (_ (as-array) (k!7)) 131159bv64 -> 101bv8 - (_ (as-array) (k!7)) 131160bv64 -> 114bv8 - (_ (as-array) (k!7)) 131161bv64 -> 105bv8 - (_ (as-array) (k!7)) 131162bv64 -> 102bv8 - (_ (as-array) (k!7)) 131165bv64 -> 114bv8 - (_ (as-array) (k!7)) 1940bv64 -> 1bv8 - (_ (as-array) (k!7)) 1942bv64 -> 2bv8 - else -> 0bv8 -} -memory_store64_le -> { - (_ (as-array) (k!2)) 92bv64 0bv64 -> (_ (as (const) (Array (bv64) (bv8))) 0bv8) - else -> (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv92) 64) (_ (bv2) 8)) -} -tickleBool -> { - else -> true -} -*** STATE - #4 -> - Gamma_#4 -> - Gamma_malloc_base -> - Gamma_malloc_count -> - Gamma_malloc_end -> - Gamma_malloc_id -> - Gamma_mem -> (let (_ (a!1 (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 35184372088832 64) false) (_ 131141 64) false) (_ 131152 64) false))) (store (a!1) (_ (bv0) 64) false)) - Gamma_R0 -> - Gamma_R1 -> - Gamma_R16 -> - Gamma_R17 -> - Gamma_R2 -> - Gamma_R29 -> false - Gamma_R30 -> false - Gamma_R31 -> - Gamma_stack -> (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 128 64) false) (_ (bv2) 64) false) (_ 65536 64) false) - malloc_base -> - malloc_count -> 0 - malloc_end -> - malloc_id -> - mem -> (_ (as-array) (k!0)) - R0 -> - R1 -> - R16 -> - R17 -> - R2 -> - R29 -> 0bv64 - R30 -> 0bv64 - R31 -> 100bv64 - stack -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv88) 64) (_ 128 8)) (_ (bv92) 64) (_ (bv2) 8)) -*** END_STATE -*** STATE lmain -*** END_STATE -*** STATE %000002e0 - #4 -> 84bv64 - Gamma_#4 -> - Gamma_stack -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ (bv96) 64)) (= (x!1) (_ 35184372088832 64)))) - stack -> (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv92) 64) (_ (bv2) 8)) -*** END_STATE -*** STATE %000002e6 - Gamma_stack -> (lambda (_ (x!1 (bv64))) (or (= (x!1) (_ (bv0) 64)) (= (x!1) (_ 35184372088832 64)))) - stack -> (_ (as (const) (Array (bv64) (bv8))) 0bv8) -*** END_STATE -*** STATE l00000315 - Gamma_mem -> (store (store (store (_ (as (const) (Array (bv64) (Bool))) true) (_ 35184372088832 64) false) (_ 131141 64) false) (_ 131165 64) false) - Gamma_R0 -> true - Gamma_R1 -> true - Gamma_R16 -> - Gamma_R17 -> - Gamma_R2 -> true - Gamma_R29 -> - Gamma_R30 -> true - Gamma_R31 -> - mem -> (_ (as-array) (k!7)) - R0 -> 131152bv64 - R1 -> 131128bv64 - R16 -> - R17 -> - R2 -> 14bv64 - R29 -> 84bv64 - R30 -> 1908bv64 - R31 -> 84bv64 -*** END_STATE -*** END_MODEL -*** MODEL -#4 -> -#4@0 -> 84bv64 -$copiedtext_addr -> 131152bv64 -$text_addr -> 131128bv64 -Gamma_#4 -> -Gamma_malloc_base -> -Gamma_malloc_count -> -Gamma_malloc_end -> -Gamma_malloc_id -> -Gamma_mem -> (lambda (_ (x!1 (bv64))) (= (x!1) 0bv64)) -Gamma_mem@0 -> (lambda (_ (x!1 (bv64))) (= (x!1) 0bv64)) -Gamma_R0 -> -Gamma_R1 -> -Gamma_R16 -> -Gamma_R16@0 -> -Gamma_R17 -> -Gamma_R17@0 -> -Gamma_R2 -> -Gamma_R29 -> false -Gamma_R29@0 -> false -Gamma_R30 -> false -Gamma_R30@0 -> false -Gamma_R31 -> -Gamma_stack -> (lambda (_ (x!1 (bv64))) (= (x!1) 84bv64)) -Gamma_stack@0 -> (_ (as (const) (Array (bv64) (Bool))) false) -Gamma_stack@1 -> (_ (as (const) (Array (bv64) (Bool))) false) -malloc_base -> -malloc_count -> 0 -malloc_end -> -malloc_id -> -mem -> (_ (as-array) (k!10)) -mem@0 -> (_ (as-array) (k!15)) -R0 -> -R0@0 -> 131152bv64 -R1 -> -R1@0 -> 131128bv64 -R16 -> -R16@0 -> -R17 -> -R17@0 -> -R2 -> -R29 -> 0bv64 -R29@0 -> 0bv64 -R30 -> 0bv64 -R30@0 -> 0bv64 -R31 -> 100bv64 -R31@0 -> 100bv64 -stack -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) -stack@0 -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) -stack@1 -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) -ControlFlow -> { - 0 2 -> (- 3) - 0 4 -> 2 - else -> 4 -} -gamma_load64 -> { - else -> false -} -gamma_load8 -> { - else -> (and (= (:var 0) (lambda (_ (x!1 (bv64))) (= (x!1) 0bv64))) (= (:var 1) (_ (bv0) 64))) -} -gamma_store64 -> { - else -> (_ (as (const) (Array (bv64) (Bool))) false) -} -k!10 -> { - 130504bv64 -> 80bv8 - 130505bv64 -> 7bv8 - 130513bv64 -> 7bv8 - 131032bv64 -> 84bv8 - 131033bv64 -> 7bv8 - 131120bv64 -> 48bv8 - 131122bv64 -> 2bv8 - 131128bv64 -> 66bv8 - 131129bv64 -> 65bv8 - 131130bv64 -> 83bv8 - 131131bv64 -> 73bv8 - 131132bv64 -> 76bv8 - 131133bv64 -> 32bv8 - 131134bv64 -> 86bv8 - 131135bv64 -> 101bv8 - 131136bv64 -> 114bv8 - 131137bv64 -> 105bv8 - 131138bv64 -> 102bv8 - 131139bv64 -> 105bv8 - 131140bv64 -> 101bv8 - 131141bv64 -> 114bv8 - 131160bv64 -> 66bv8 - 1940bv64 -> 1bv8 - 1942bv64 -> 2bv8 - 33554432bv64 -> 136bv8 - else -> 0bv8 -} -k!15 -> { - 130504bv64 -> 80bv8 - 130505bv64 -> 7bv8 - 130513bv64 -> 7bv8 - 131032bv64 -> 84bv8 - 131033bv64 -> 7bv8 - 131120bv64 -> 48bv8 - 131122bv64 -> 2bv8 - 131136bv64 -> 114bv8 - 131138bv64 -> 102bv8 - 131154bv64 -> 82bv8 - 131160bv64 -> 114bv8 - 1940bv64 -> 1bv8 - 1942bv64 -> 2bv8 - else -> 0bv8 -} -lambda#0 -> { - else -> (_ (as (const) (Array (bv64) (Bool))) false) -} -lambda#1 -> { - 92bv64 8bv64 0bv64 92bv64 (_ (as-array) (k!11)) -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) - else -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) -} -memory_load64_le -> { - else -> 0bv64 -} -memory_load8_le -> { - (_ (as-array) (k!10)) 130504bv64 -> 80bv8 - (_ (as-array) (k!10)) 130505bv64 -> 7bv8 - (_ (as-array) (k!10)) 130513bv64 -> 7bv8 - (_ (as-array) (k!10)) 131032bv64 -> 84bv8 - (_ (as-array) (k!10)) 131033bv64 -> 7bv8 - (_ (as-array) (k!10)) 131120bv64 -> 48bv8 - (_ (as-array) (k!10)) 131122bv64 -> 2bv8 - (_ (as-array) (k!10)) 131128bv64 -> 66bv8 - (_ (as-array) (k!10)) 131129bv64 -> 65bv8 - (_ (as-array) (k!10)) 131130bv64 -> 83bv8 - (_ (as-array) (k!10)) 131131bv64 -> 73bv8 - (_ (as-array) (k!10)) 131132bv64 -> 76bv8 - (_ (as-array) (k!10)) 131133bv64 -> 32bv8 - (_ (as-array) (k!10)) 131134bv64 -> 86bv8 - (_ (as-array) (k!10)) 131135bv64 -> 101bv8 - (_ (as-array) (k!10)) 131136bv64 -> 114bv8 - (_ (as-array) (k!10)) 131137bv64 -> 105bv8 - (_ (as-array) (k!10)) 131138bv64 -> 102bv8 - (_ (as-array) (k!10)) 131139bv64 -> 105bv8 - (_ (as-array) (k!10)) 131140bv64 -> 101bv8 - (_ (as-array) (k!10)) 131141bv64 -> 114bv8 - (_ (as-array) (k!10)) 1940bv64 -> 1bv8 - (_ (as-array) (k!10)) 1942bv64 -> 2bv8 - (_ (as-array) (k!15)) 130504bv64 -> 80bv8 - (_ (as-array) (k!15)) 130505bv64 -> 7bv8 - (_ (as-array) (k!15)) 130513bv64 -> 7bv8 - (_ (as-array) (k!15)) 131032bv64 -> 84bv8 - (_ (as-array) (k!15)) 131033bv64 -> 7bv8 - (_ (as-array) (k!15)) 131120bv64 -> 48bv8 - (_ (as-array) (k!15)) 131122bv64 -> 2bv8 - (_ (as-array) (k!15)) 131136bv64 -> 114bv8 - (_ (as-array) (k!15)) 131154bv64 -> 82bv8 - (_ (as-array) (k!15)) 1940bv64 -> 1bv8 - (_ (as-array) (k!15)) 1942bv64 -> 2bv8 - else -> 0bv8 -} -memory_store64_le -> { - (_ (as-array) (k!11)) 92bv64 0bv64 -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) - else -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) -} -tickleBool -> { - else -> true -} -*** STATE - #4 -> - Gamma_#4 -> - Gamma_malloc_base -> - Gamma_malloc_count -> - Gamma_malloc_end -> - Gamma_malloc_id -> - Gamma_mem -> (lambda (_ (x!1 (bv64))) (= (x!1) 0bv64)) - Gamma_R0 -> - Gamma_R1 -> - Gamma_R16 -> - Gamma_R17 -> - Gamma_R2 -> - Gamma_R29 -> false - Gamma_R30 -> false - Gamma_R31 -> - Gamma_stack -> (lambda (_ (x!1 (bv64))) (= (x!1) 84bv64)) - malloc_base -> - malloc_count -> 0 - malloc_end -> - malloc_id -> - mem -> (_ (as-array) (k!10)) - R0 -> - R1 -> - R16 -> - R17 -> - R2 -> - R29 -> 0bv64 - R30 -> 0bv64 - R31 -> 100bv64 - stack -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) -*** END_STATE -*** STATE lmain -*** END_STATE -*** STATE %000002e0 - #4 -> 84bv64 - Gamma_#4 -> - Gamma_stack -> (_ (as (const) (Array (bv64) (Bool))) false) - stack -> (store (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ (bv96) 64) (_ (bv8) 8)) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) -*** END_STATE -*** STATE %000002e6 - Gamma_stack -> (_ (as (const) (Array (bv64) (Bool))) false) - stack -> (store (store (_ (as (const) (Array (bv64) (bv8))) 0bv8) (_ 33554432 64) (_ 128 8)) (_ (bv0) 64) (_ (bv8) 8)) -*** END_STATE -*** STATE l00000315 - Gamma_mem -> (lambda (_ (x!1 (bv64))) (= (x!1) 0bv64)) - Gamma_R0 -> true - Gamma_R1 -> true - Gamma_R16 -> - Gamma_R17 -> - Gamma_R2 -> true - Gamma_R29 -> - Gamma_R30 -> true - Gamma_R31 -> - mem -> (_ (as-array) (k!15)) - R0 -> 131152bv64 - R1 -> 131128bv64 - R16 -> - R17 -> - R2 -> 14bv64 - R29 -> 84bv64 - R30 -> 1908bv64 - R31 -> 84bv64 -*** END_STATE -*** END_MODEL diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/proverlog.smt2 b/src/test/correct/malloc_memcpy_strlen_memset_free/proverlog.smt2 deleted file mode 100644 index 60523a952..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/proverlog.smt2 +++ /dev/null @@ -1,307 +0,0 @@ -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |mallocmemcpystrlenmemsetfreebpl.65:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |mallocmemcpystrlenmemsetfreebpl.81:57| - :skolemid |18| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |mallocmemcpystrlenmemsetfreebpl.37:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |mallocmemcpystrlenmemsetfreebpl.73:37| - :skolemid |5| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |mallocmemcpystrlenmemsetfreebpl.65:56| - :skolemid |17| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@2) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@0 index@@2))))))))) - :qid |mallocmemcpystrlenmemsetfreebpl.57:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@0 index@@2)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@3) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000001)) (select gammaMap@@1 index@@3))))) - :qid |mallocmemcpystrlenmemsetfreebpl.53:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@1 index@@3)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@4) (select gammaMap@@2 index@@4)) - :qid |mallocmemcpystrlenmemsetfreebpl.61:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@2 index@@4)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020061)) -(assert (= $buf_addr #x0000000000020078)) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@1 index@@5) (select memory@@1 index@@5)) - :qid |mallocmemcpystrlenmemsetfreebpl.77:36| - :skolemid |6| - :pattern ( (memory_load8_le memory@@1 index@@5)) -))) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@6 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@2 index@@6 value@@0) (|lambda#1| index@@6 #x0000000000000008 value@@0 index@@6 memory@@2)) - :qid |mallocmemcpystrlenmemsetfreebpl.81:38| - :skolemid |7| - :pattern ( (memory_store64_le memory@@2 index@@6 value@@0)) -))) -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(set-info :boogie-vc-id rely_transitive) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 4) (let ((anon0_correct (=> (and (and (= mem@0 mem) (= Gamma_mem@0 Gamma_mem)) (and (= (memory_load8_le mem@0 #x0000000000000990) #x01) (= (memory_load8_le mem@0 #x0000000000000991) #x00))) (=> (and (and (and (= (memory_load8_le mem@0 #x0000000000000992) #x02) (= (memory_load8_le mem@0 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@0 #x000000000001fdc9) #x08))) (and (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00)))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x80) (= (memory_load8_le mem@0 #x000000000001fdd1) #x08))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@0 #x000000000001ffd9) #x08))) (and (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@0 #x0000000000020058) #x58) (= (memory_load8_le mem@0 #x0000000000020059) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005a) #x02) (= (memory_load8_le mem@0 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005c) #x00) (= (memory_load8_le mem@0 #x000000000002005d) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000002005e) #x00) (= (memory_load8_le mem@0 #x000000000002005f) #x00)) (and (= mem@1 mem@0) (= Gamma_mem@1 Gamma_mem@0))) (and (and (= (memory_load8_le mem@1 #x0000000000000990) #x01) (= (memory_load8_le mem@1 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@1 #x0000000000000992) #x02) (= (memory_load8_le mem@1 #x0000000000000993) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@1 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@1 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@1 #x000000000001fdca) #x00) (= (memory_load8_le mem@1 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdcc) #x00) (= (memory_load8_le mem@1 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdce) #x00) (= (memory_load8_le mem@1 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x000000000001fdd0) #x80) (= (memory_load8_le mem@1 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@1 #x000000000001fdd2) #x00) (= (memory_load8_le mem@1 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001fdd4) #x00) (= (memory_load8_le mem@1 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@1 #x000000000001fdd6) #x00) (= (memory_load8_le mem@1 #x000000000001fdd7) #x00))))) (and (and (and (and (= (memory_load8_le mem@1 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@1 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@1 #x000000000001ffda) #x00) (= (memory_load8_le mem@1 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000001ffdc) #x00) (= (memory_load8_le mem@1 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@1 #x000000000001ffde) #x00) (= (memory_load8_le mem@1 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@1 #x0000000000020058) #x58) (= (memory_load8_le mem@1 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@1 #x000000000002005a) #x02) (= (memory_load8_le mem@1 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@1 #x000000000002005c) #x00) (= (memory_load8_le mem@1 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@1 #x000000000002005e) #x00) (= (memory_load8_le mem@1 #x000000000002005f) #x00))))))) (and (=> (= (ControlFlow 0 2) (- 0 3)) (= mem@1 mem)) (=> (= mem@1 mem) (=> (= (ControlFlow 0 2) (- 0 1)) (= Gamma_mem@1 Gamma_mem))))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= (ControlFlow 0 4) 2) anon0_correct))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(pop 1) -; Valid -(get-info :rlimit) -(reset) -(set-option :print-success false) -(set-info :smt-lib-version 2.6) -(set-option :smt.mbqi false) -(set-option :model.compact false) -(set-option :model.v2 true) -(set-option :pp.bv_literals false) -; done setting options - - -(declare-fun tickleBool (Bool) Bool) -(assert (and (tickleBool true) (tickleBool false))) -(declare-fun gamma_store64 ((Array (_ BitVec 64) Bool) (_ BitVec 64) Bool) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#0| ((_ BitVec 64) (_ BitVec 64) Bool (Array (_ BitVec 64) Bool)) (Array (_ BitVec 64) Bool)) -(declare-fun |lambda#1| ((_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (_ BitVec 64) (Array (_ BitVec 64) (_ BitVec 8))) (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun L ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) Bool) -(declare-fun memory_load64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 64)) -(declare-fun gamma_load64 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load32 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun gamma_load8 ((Array (_ BitVec 64) Bool) (_ BitVec 64)) Bool) -(declare-fun $password_addr () (_ BitVec 64)) -(declare-fun $stext_addr () (_ BitVec 64)) -(declare-fun $buf_addr () (_ BitVec 64)) -(declare-fun memory_load8_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64)) (_ BitVec 8)) -(declare-fun memory_store64_le ((Array (_ BitVec 64) (_ BitVec 8)) (_ BitVec 64) (_ BitVec 64)) (Array (_ BitVec 64) (_ BitVec 8))) -(assert (forall ((gammaMap (Array (_ BitVec 64) Bool)) (index (_ BitVec 64)) (value Bool) ) (! (= (gamma_store64 gammaMap index value) (|lambda#0| index #x0000000000000008 value gammaMap)) - :qid |mallocmemcpystrlenmemsetfreebpl.65:34| - :skolemid |4| - :pattern ( (gamma_store64 gammaMap index value)) -))) -(assert (forall ((|l#0| (_ BitVec 64)) (|l#1| (_ BitVec 64)) (|l#2| (_ BitVec 64)) (|l#3| (_ BitVec 64)) (|l#4| (Array (_ BitVec 64) (_ BitVec 8))) (i (_ BitVec 64)) ) (! (= (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i) (ite (ite (bvule |l#0| (bvadd |l#0| |l#1|)) (and (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|))) (or (bvule |l#0| i) (bvult i (bvadd |l#0| |l#1|)))) ((_ extract 7 0) (bvlshr |l#2| (bvmul (bvsub i |l#3|) #x0000000000000008))) (select |l#4| i))) - :qid |mallocmemcpystrlenmemsetfreebpl.81:57| - :skolemid |18| - :pattern ( (select (|lambda#1| |l#0| |l#1| |l#2| |l#3| |l#4|) i)) -))) -(assert (forall ((memory (Array (_ BitVec 64) (_ BitVec 8))) (index@@0 (_ BitVec 64)) ) (! (= (L memory index@@0) false) - :qid |mallocmemcpystrlenmemsetfreebpl.37:22| - :skolemid |0| - :pattern ( (L memory index@@0)) -))) -(assert (forall ((memory@@0 (Array (_ BitVec 64) (_ BitVec 8))) (index@@1 (_ BitVec 64)) ) (! (= (memory_load64_le memory@@0 index@@1) (concat (select memory@@0 (bvadd index@@1 #x0000000000000007)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000006)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000005)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000004)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000003)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000002)) (concat (select memory@@0 (bvadd index@@1 #x0000000000000001)) (select memory@@0 index@@1))))))))) - :qid |mallocmemcpystrlenmemsetfreebpl.73:37| - :skolemid |5| - :pattern ( (memory_load64_le memory@@0 index@@1)) -))) -(assert (forall ((|l#0@@0| (_ BitVec 64)) (|l#1@@0| (_ BitVec 64)) (|l#2@@0| Bool) (|l#3@@0| (Array (_ BitVec 64) Bool)) (i@@0 (_ BitVec 64)) ) (! (= (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0) (ite (ite (bvule |l#0@@0| (bvadd |l#0@@0| |l#1@@0|)) (and (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|))) (or (bvule |l#0@@0| i@@0) (bvult i@@0 (bvadd |l#0@@0| |l#1@@0|)))) |l#2@@0| (select |l#3@@0| i@@0))) - :qid |mallocmemcpystrlenmemsetfreebpl.65:56| - :skolemid |17| - :pattern ( (select (|lambda#0| |l#0@@0| |l#1@@0| |l#2@@0| |l#3@@0|) i@@0)) -))) -(assert (forall ((gammaMap@@0 (Array (_ BitVec 64) Bool)) (index@@2 (_ BitVec 64)) ) (! (= (gamma_load64 gammaMap@@0 index@@2) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000007)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000006)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000005)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000004)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000003)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000002)) (and (select gammaMap@@0 (bvadd index@@2 #x0000000000000001)) (select gammaMap@@0 index@@2))))))))) - :qid |mallocmemcpystrlenmemsetfreebpl.57:33| - :skolemid |2| - :pattern ( (gamma_load64 gammaMap@@0 index@@2)) -))) -(assert (forall ((gammaMap@@1 (Array (_ BitVec 64) Bool)) (index@@3 (_ BitVec 64)) ) (! (= (gamma_load32 gammaMap@@1 index@@3) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000003)) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000002)) (and (select gammaMap@@1 (bvadd index@@3 #x0000000000000001)) (select gammaMap@@1 index@@3))))) - :qid |mallocmemcpystrlenmemsetfreebpl.53:33| - :skolemid |1| - :pattern ( (gamma_load32 gammaMap@@1 index@@3)) -))) -(assert (forall ((gammaMap@@2 (Array (_ BitVec 64) Bool)) (index@@4 (_ BitVec 64)) ) (! (= (gamma_load8 gammaMap@@2 index@@4) (select gammaMap@@2 index@@4)) - :qid |mallocmemcpystrlenmemsetfreebpl.61:32| - :skolemid |3| - :pattern ( (gamma_load8 gammaMap@@2 index@@4)) -))) -(assert (= $password_addr #x0000000000020060)) -(assert (= $stext_addr #x0000000000020061)) -(assert (= $buf_addr #x0000000000020078)) -(assert (forall ((memory@@1 (Array (_ BitVec 64) (_ BitVec 8))) (index@@5 (_ BitVec 64)) ) (! (= (memory_load8_le memory@@1 index@@5) (select memory@@1 index@@5)) - :qid |mallocmemcpystrlenmemsetfreebpl.77:36| - :skolemid |6| - :pattern ( (memory_load8_le memory@@1 index@@5)) -))) -(assert (forall ((memory@@2 (Array (_ BitVec 64) (_ BitVec 8))) (index@@6 (_ BitVec 64)) (value@@0 (_ BitVec 64)) ) (! (= (memory_store64_le memory@@2 index@@6 value@@0) (|lambda#1| index@@6 #x0000000000000008 value@@0 index@@6 memory@@2)) - :qid |mallocmemcpystrlenmemsetfreebpl.81:38| - :skolemid |7| - :pattern ( (memory_store64_le memory@@2 index@@6 value@@0)) -))) -; Valid - -(push 1) -(declare-fun ControlFlow (Int Int) Int) -(declare-fun R31@0 () (_ BitVec 64)) -(declare-fun R31 () (_ BitVec 64)) -(declare-fun |#4@0| () (_ BitVec 64)) -(declare-fun stack@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R29 () (_ BitVec 64)) -(declare-fun Gamma_stack@0 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_stack () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R29 () Bool) -(declare-fun stack@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R30 () (_ BitVec 64)) -(declare-fun Gamma_stack@1 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R30 () Bool) -(declare-fun R29@0 () (_ BitVec 64)) -(declare-fun stack@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@2 () (Array (_ BitVec 64) Bool)) -(declare-fun stack@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@3 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R0@0 () Bool) -(declare-fun malloc_count@0 () Int) -(declare-fun malloc_count () Int) -(declare-fun malloc_end@0 () (Array Int (_ BitVec 64))) -(declare-fun malloc_base@0 () (Array Int (_ BitVec 64))) -(declare-fun R0@0 () (_ BitVec 64)) -(declare-fun malloc_base () (Array Int (_ BitVec 64))) -(declare-fun malloc_end () (Array Int (_ BitVec 64))) -(declare-fun Gamma_mem () (Array (_ BitVec 64) Bool)) -(declare-fun mem () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun stack@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@4 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@0 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@0 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@1 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@1 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@2 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@2 () (Array (_ BitVec 64) Bool)) -(declare-fun R8@0 () (_ BitVec 64)) -(declare-fun Gamma_R8@0 () Bool) -(declare-fun stack@5 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@5 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@1 () (_ BitVec 64)) -(declare-fun stack@6 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@6 () (Array (_ BitVec 64) Bool)) -(declare-fun Gamma_R0@1 () Bool) -(declare-fun R0@2 () (_ BitVec 64)) -(declare-fun R1@0 () (_ BitVec 64)) -(declare-fun Gamma_R1@0 () Bool) -(declare-fun R0@3 () (_ BitVec 64)) -(declare-fun Gamma_R0@2 () Bool) -(declare-fun Gamma_mem@3 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@3 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun R8@1 () (_ BitVec 64)) -(declare-fun Gamma_R8@1 () Bool) -(declare-fun mem@4 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@4 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@4 () (_ BitVec 64)) -(declare-fun Gamma_R0@3 () Bool) -(declare-fun R8@2 () (_ BitVec 64)) -(declare-fun Gamma_R8@2 () Bool) -(declare-fun mem@5 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@5 () (Array (_ BitVec 64) Bool)) -(declare-fun R9@0 () (_ BitVec 64)) -(declare-fun Gamma_R9@0 () Bool) -(declare-fun R9@1 () (_ BitVec 64)) -(declare-fun stack@7 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@7 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@6 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@6 () (Array (_ BitVec 64) Bool)) -(declare-fun R9@2 () (_ BitVec 64)) -(declare-fun Gamma_R9@1 () Bool) -(declare-fun stack@8 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_stack@8 () (Array (_ BitVec 64) Bool)) -(declare-fun mem@7 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@7 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@5 () (_ BitVec 64)) -(declare-fun Gamma_R0@4 () Bool) -(declare-fun Gamma_R0@5 () Bool) -(declare-fun R0@6 () (_ BitVec 64)) -(declare-fun R0@7 () (_ BitVec 64)) -(declare-fun Gamma_R0@6 () Bool) -(declare-fun mem@8 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@8 () (Array (_ BitVec 64) Bool)) -(declare-fun R8@3 () (_ BitVec 64)) -(declare-fun Gamma_R8@3 () Bool) -(declare-fun mem@9 () (Array (_ BitVec 64) (_ BitVec 8))) -(declare-fun Gamma_mem@9 () (Array (_ BitVec 64) Bool)) -(declare-fun R0@8 () (_ BitVec 64)) -(declare-fun Gamma_R0@7 () Bool) -(set-info :boogie-vc-id main) -(set-option :timeout 0) -(set-option :rlimit 0) -(assert (not - (=> (= (ControlFlow 0 0) 7) (let ((lmain_correct (=> (and (and (= R31@0 (bvadd R31 #xffffffffffffffc0)) (= |#4@0| (bvadd R31@0 #x0000000000000030))) (and (= stack@0 (memory_store64_le stack |#4@0| R29)) (= Gamma_stack@0 (gamma_store64 Gamma_stack |#4@0| Gamma_R29)))) (=> (and (and (and (= stack@1 (memory_store64_le stack@0 (bvadd |#4@0| #x0000000000000008) R30)) (= Gamma_stack@1 (gamma_store64 Gamma_stack@0 (bvadd |#4@0| #x0000000000000008) Gamma_R30))) (= R29@0 (bvadd R31@0 #x0000000000000030))) (and (and (= stack@2 (memory_store64_le stack@1 (bvadd R29@0 #xfffffffffffffff8) #x0000000000000000)) (= Gamma_stack@2 (gamma_store64 Gamma_stack@1 (bvadd R29@0 #xfffffffffffffff8) true))) (and (= stack@3 (memory_store64_le stack@2 (bvadd R29@0 #xfffffffffffffff0) #x0000000000000000)) (= Gamma_stack@3 (gamma_store64 Gamma_stack@2 (bvadd R29@0 #xfffffffffffffff0) true))))) (and (=> (= (ControlFlow 0 2) (- 0 6)) (bvugt #x000000000000000b #x0000000000000000)) (=> (bvugt #x000000000000000b #x0000000000000000) (and (=> (= (ControlFlow 0 2) (- 0 5)) (= true true)) (=> (= true true) (=> (= Gamma_R0@0 true) (=> (and (and (= malloc_count@0 (+ malloc_count 1)) (bvugt (select malloc_end@0 malloc_count@0) (select malloc_base@0 malloc_count@0))) (and (= R0@0 (select malloc_base@0 malloc_count@0)) (= (select malloc_end@0 malloc_count@0) (bvadd R0@0 #x000000000000000b)))) (=> (and (and (and (and (forall ((i@@1 Int) ) (! (=> (not (= i@@1 malloc_count@0)) (or (bvugt (select malloc_base@0 malloc_count@0) (select malloc_end@0 i@@1)) (bvult (select malloc_end@0 malloc_count@0) (select malloc_base@0 i@@1)))) - :qid |mallocmemcpystrlenmemsetfreebpl.472:19| - :skolemid |9| -)) (forall ((i@@2 Int) ) (! (=> (not (= i@@2 malloc_count@0)) (and (= (select malloc_base@0 i@@2) (select malloc_base i@@2)) (= (select malloc_end@0 i@@2) (select malloc_end i@@2)))) - :qid |mallocmemcpystrlenmemsetfreebpl.473:19| - :skolemid |10| -))) (and (bvuge R0@0 #x0000000005f5e100) (forall ((i@@3 (_ BitVec 64)) ) (! (=> (and (bvuge i@@3 R0@0) (bvult i@@3 (bvadd R0@0 #x000000000000000b))) (and (select Gamma_mem i@@3) (gamma_load8 Gamma_mem i@@3))) - :qid |mallocmemcpystrlenmemsetfreebpl.475:19| - :skolemid |11| -)))) (and (and (= (memory_load8_le mem #x0000000000000990) #x01) (= (memory_load8_le mem #x0000000000000991) #x00)) (and (= (memory_load8_le mem #x0000000000000992) #x02) (= (memory_load8_le mem #x0000000000000993) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001fdc8) #xd0) (= (memory_load8_le mem #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem #x000000000001fdca) #x00) (= (memory_load8_le mem #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcc) #x00) (= (memory_load8_le mem #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem #x000000000001fdce) #x00) (= (memory_load8_le mem #x000000000001fdcf) #x00))))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdd0) #x80) (= (memory_load8_le mem #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem #x000000000001fdd2) #x00) (= (memory_load8_le mem #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd4) #x00) (= (memory_load8_le mem #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem #x000000000001fdd6) #x00) (= (memory_load8_le mem #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem #x000000000001ffd8) #xd4) (= (memory_load8_le mem #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem #x000000000001ffda) #x00) (= (memory_load8_le mem #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdc) #x00) (= (memory_load8_le mem #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem #x000000000001ffde) #x00) (= (memory_load8_le mem #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020058) #x58) (= (memory_load8_le mem #x0000000000020059) #x00)) (and (= (memory_load8_le mem #x000000000002005a) #x02) (= (memory_load8_le mem #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem #x000000000002005c) #x00) (= (memory_load8_le mem #x000000000002005d) #x00)) (and (= (memory_load8_le mem #x000000000002005e) #x00) (= (memory_load8_le mem #x000000000002005f) #x00)))) (and (and (and (= stack@4 (memory_store64_le stack@3 (bvadd R31@0 #x0000000000000018) #x0000000000020000)) (= Gamma_stack@4 (gamma_store64 Gamma_stack@3 (bvadd R31@0 #x0000000000000018) true))) (and (= mem@0 mem) (= Gamma_mem@0 Gamma_mem))) (and (and (= (memory_load8_le mem@0 #x0000000000000990) #x01) (= (memory_load8_le mem@0 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@0 #x0000000000000992) #x02) (= (memory_load8_le mem@0 #x0000000000000993) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@0 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@0 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001fdca) #x00) (= (memory_load8_le mem@0 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdcc) #x00) (= (memory_load8_le mem@0 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdce) #x00) (= (memory_load8_le mem@0 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x000000000001fdd0) #x80) (= (memory_load8_le mem@0 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@0 #x000000000001fdd2) #x00) (= (memory_load8_le mem@0 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001fdd4) #x00) (= (memory_load8_le mem@0 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@0 #x000000000001fdd6) #x00) (= (memory_load8_le mem@0 #x000000000001fdd7) #x00))))) (and (and (and (and (= (memory_load8_le mem@0 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@0 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@0 #x000000000001ffda) #x00) (= (memory_load8_le mem@0 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000001ffdc) #x00) (= (memory_load8_le mem@0 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@0 #x000000000001ffde) #x00) (= (memory_load8_le mem@0 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@0 #x0000000000020058) #x58) (= (memory_load8_le mem@0 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005a) #x02) (= (memory_load8_le mem@0 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@0 #x000000000002005c) #x00) (= (memory_load8_le mem@0 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@0 #x000000000002005e) #x00) (= (memory_load8_le mem@0 #x000000000002005f) #x00))))))) (and (=> (= (ControlFlow 0 2) (- 0 4)) (=> (L mem@0 (bvadd #x0000000000020000 #x0000000000000078)) Gamma_R0@0)) (=> (=> (L mem@0 (bvadd #x0000000000020000 #x0000000000000078)) Gamma_R0@0) (=> (and (= mem@1 (memory_store64_le mem@0 (bvadd #x0000000000020000 #x0000000000000078) R0@0)) (= Gamma_mem@1 (gamma_store64 Gamma_mem@0 (bvadd #x0000000000020000 #x0000000000000078) Gamma_R0@0))) (=> (and (and (and (= mem@2 mem@1) (= Gamma_mem@2 Gamma_mem@1)) (and (= (memory_load8_le mem@2 #x0000000000000990) #x01) (= (memory_load8_le mem@2 #x0000000000000991) #x00))) (and (and (= (memory_load8_le mem@2 #x0000000000000992) #x02) (= (memory_load8_le mem@2 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)))) (=> (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08))))) (=> (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00)) (and (= R8@0 (memory_load64_le mem@2 (bvadd #x0000000000020000 #x0000000000000078))) (= Gamma_R8@0 (or (gamma_load64 Gamma_mem@2 (bvadd #x0000000000020000 #x0000000000000078)) (L mem@2 (bvadd #x0000000000020000 #x0000000000000078)))))))) (and (and (and (and (= stack@5 (memory_store64_le stack@4 (bvadd R31@0 #x0000000000000008) R8@0)) (= Gamma_stack@5 (gamma_store64 Gamma_stack@4 (bvadd R31@0 #x0000000000000008) Gamma_R8@0))) (= R0@1 (bvadd #x0000000000020000 #x0000000000000061))) (and (= stack@6 (memory_store64_le stack@5 R31@0 R0@1)) (= Gamma_stack@6 (gamma_store64 Gamma_stack@5 R31@0 true)))) (and (and (and (= Gamma_R0@1 true) (forall ((i@@4 (_ BitVec 64)) ) (! (=> (and (bvule R0@1 i@@4) (bvult i@@4 (bvadd R0@1 R0@2))) (not (= (select mem@2 i@@4) #x00))) - :qid |mallocmemcpystrlenmemsetfreebpl.783:19| - :skolemid |16| -))) (and (= (memory_load8_le mem@2 (bvadd R0@1 R0@2)) #x00) (bvult R0@1 (bvadd (bvadd R0@1 R0@2) #x0000000000000001)))) (and (and (= (memory_load8_le mem@2 #x0000000000000990) #x01) (= (memory_load8_le mem@2 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@2 #x0000000000000992) #x02) (= (memory_load8_le mem@2 #x0000000000000993) #x00)))))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@2 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@2 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdca) #x00) (= (memory_load8_le mem@2 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdcc) #x00) (= (memory_load8_le mem@2 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdce) #x00) (= (memory_load8_le mem@2 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x000000000001fdd0) #x80) (= (memory_load8_le mem@2 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@2 #x000000000001fdd2) #x00) (= (memory_load8_le mem@2 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001fdd4) #x00) (= (memory_load8_le mem@2 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@2 #x000000000001fdd6) #x00) (= (memory_load8_le mem@2 #x000000000001fdd7) #x00))))) (and (and (and (and (= (memory_load8_le mem@2 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@2 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@2 #x000000000001ffda) #x00) (= (memory_load8_le mem@2 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000001ffdc) #x00) (= (memory_load8_le mem@2 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@2 #x000000000001ffde) #x00) (= (memory_load8_le mem@2 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@2 #x0000000000020058) #x58) (= (memory_load8_le mem@2 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005a) #x02) (= (memory_load8_le mem@2 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@2 #x000000000002005c) #x00) (= (memory_load8_le mem@2 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@2 #x000000000002005e) #x00) (= (memory_load8_le mem@2 #x000000000002005f) #x00)))))) (and (and (and (and (and (= R1@0 (memory_load64_le stack@6 R31@0)) (= Gamma_R1@0 (gamma_load64 Gamma_stack@6 R31@0))) (and (= R0@3 (memory_load64_le stack@6 (bvadd R31@0 #x0000000000000008))) (= Gamma_R0@2 (gamma_load64 Gamma_stack@6 (bvadd R31@0 #x0000000000000008))))) (and (and (forall ((i@@5 (_ BitVec 64)) ) (! (= (select Gamma_mem@3 i@@5) (ite (and (bvule R0@3 i@@5) (bvult i@@5 (bvadd R0@3 R0@2))) (gamma_load8 Gamma_mem@3 (bvadd (bvsub i@@5 R0@3) R1@0)) (gamma_load8 Gamma_mem@2 i@@5))) - :qid |mallocmemcpystrlenmemsetfreebpl.551:19| - :skolemid |12| -)) (forall ((i@@6 (_ BitVec 64)) ) (! (= (select mem@3 i@@6) (ite (and (bvule R0@3 i@@6) (bvult i@@6 (bvadd R0@3 R0@2))) (memory_load8_le mem@3 (bvadd (bvsub i@@6 R0@3) R1@0)) (memory_load8_le mem@2 i@@6))) - :qid |mallocmemcpystrlenmemsetfreebpl.552:19| - :skolemid |13| -))) (and (= (memory_load8_le mem@3 #x0000000000000990) #x01) (= (memory_load8_le mem@3 #x0000000000000991) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x0000000000000992) #x02) (= (memory_load8_le mem@3 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@3 #x000000000001fdc9) #x08))) (and (and (= (memory_load8_le mem@3 #x000000000001fdca) #x00) (= (memory_load8_le mem@3 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdcc) #x00) (= (memory_load8_le mem@3 #x000000000001fdcd) #x00))))) (and (and (and (and (= (memory_load8_le mem@3 #x000000000001fdce) #x00) (= (memory_load8_le mem@3 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd0) #x80) (= (memory_load8_le mem@3 #x000000000001fdd1) #x08))) (and (and (= (memory_load8_le mem@3 #x000000000001fdd2) #x00) (= (memory_load8_le mem@3 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@3 #x000000000001fdd4) #x00) (= (memory_load8_le mem@3 #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000001fdd6) #x00) (= (memory_load8_le mem@3 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@3 #x000000000001ffd9) #x08))) (and (and (= (memory_load8_le mem@3 #x000000000001ffda) #x00) (= (memory_load8_le mem@3 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@3 #x000000000001ffdc) #x00) (= (memory_load8_le mem@3 #x000000000001ffdd) #x00))))))) (=> (and (and (and (and (and (and (and (= (memory_load8_le mem@3 #x000000000001ffde) #x00) (= (memory_load8_le mem@3 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@3 #x0000000000020058) #x58) (= (memory_load8_le mem@3 #x0000000000020059) #x00))) (and (and (= (memory_load8_le mem@3 #x000000000002005a) #x02) (= (memory_load8_le mem@3 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@3 #x000000000002005c) #x00) (= (memory_load8_le mem@3 #x000000000002005d) #x00)))) (and (and (and (= (memory_load8_le mem@3 #x000000000002005e) #x00) (= (memory_load8_le mem@3 #x000000000002005f) #x00)) (and (= R8@1 (memory_load64_le stack@6 (bvadd R31@0 #x0000000000000018))) (= Gamma_R8@1 (gamma_load64 Gamma_stack@6 (bvadd R31@0 #x0000000000000018))))) (and (and (= mem@4 mem@3) (= Gamma_mem@4 Gamma_mem@3)) (and (= (memory_load8_le mem@4 #x0000000000000990) #x01) (= (memory_load8_le mem@4 #x0000000000000991) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x0000000000000992) #x02) (= (memory_load8_le mem@4 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@4 #x000000000001fdc9) #x08))) (and (and (= (memory_load8_le mem@4 #x000000000001fdca) #x00) (= (memory_load8_le mem@4 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdcc) #x00) (= (memory_load8_le mem@4 #x000000000001fdcd) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdce) #x00) (= (memory_load8_le mem@4 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd0) #x80) (= (memory_load8_le mem@4 #x000000000001fdd1) #x08))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd2) #x00) (= (memory_load8_le mem@4 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd4) #x00) (= (memory_load8_le mem@4 #x000000000001fdd5) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd6) #x00) (= (memory_load8_le mem@4 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@4 #x000000000001ffd9) #x08))) (and (and (= (memory_load8_le mem@4 #x000000000001ffda) #x00) (= (memory_load8_le mem@4 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffdc) #x00) (= (memory_load8_le mem@4 #x000000000001ffdd) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001ffde) #x00) (= (memory_load8_le mem@4 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@4 #x0000000000020058) #x58) (= (memory_load8_le mem@4 #x0000000000020059) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000002005a) #x02) (= (memory_load8_le mem@4 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005c) #x00) (= (memory_load8_le mem@4 #x000000000002005d) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x000000000002005e) #x00) (= (memory_load8_le mem@4 #x000000000002005f) #x00)) (and (= R0@4 (memory_load64_le mem@4 (bvadd R8@1 #x0000000000000078))) (= Gamma_R0@3 (or (gamma_load64 Gamma_mem@4 (bvadd R8@1 #x0000000000000078)) (L mem@4 (bvadd R8@1 #x0000000000000078)))))) (and (and (= (memory_load8_le mem@4 #x0000000000000990) #x01) (= (memory_load8_le mem@4 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@4 #x0000000000000992) #x02) (= (memory_load8_le mem@4 #x0000000000000993) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@4 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdca) #x00) (= (memory_load8_le mem@4 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdcc) #x00) (= (memory_load8_le mem@4 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdce) #x00) (= (memory_load8_le mem@4 #x000000000001fdcf) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@4 #x000000000001fdd0) #x80) (= (memory_load8_le mem@4 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@4 #x000000000001fdd2) #x00) (= (memory_load8_le mem@4 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001fdd4) #x00) (= (memory_load8_le mem@4 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@4 #x000000000001fdd6) #x00) (= (memory_load8_le mem@4 #x000000000001fdd7) #x00)))) (and (and (and (= (memory_load8_le mem@4 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@4 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@4 #x000000000001ffda) #x00) (= (memory_load8_le mem@4 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000001ffdc) #x00) (= (memory_load8_le mem@4 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@4 #x000000000001ffde) #x00) (= (memory_load8_le mem@4 #x000000000001ffdf) #x00))))) (and (and (and (and (= (memory_load8_le mem@4 #x0000000000020058) #x58) (= (memory_load8_le mem@4 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005a) #x02) (= (memory_load8_le mem@4 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@4 #x000000000002005c) #x00) (= (memory_load8_le mem@4 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@4 #x000000000002005e) #x00) (= (memory_load8_le mem@4 #x000000000002005f) #x00)))) (and (and (and (= R8@2 (memory_load64_le stack@6 (bvadd R31@0 #x0000000000000018))) (= Gamma_R8@2 (gamma_load64 Gamma_stack@6 (bvadd R31@0 #x0000000000000018)))) (and (= mem@5 mem@4) (= Gamma_mem@5 Gamma_mem@4))) (and (and (= (memory_load8_le mem@5 #x0000000000000990) #x01) (= (memory_load8_le mem@5 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@5 #x0000000000000992) #x02) (= (memory_load8_le mem@5 #x0000000000000993) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@5 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@5 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdca) #x00) (= (memory_load8_le mem@5 #x000000000001fdcb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdcc) #x00) (= (memory_load8_le mem@5 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdce) #x00) (= (memory_load8_le mem@5 #x000000000001fdcf) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x000000000001fdd0) #x80) (= (memory_load8_le mem@5 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@5 #x000000000001fdd2) #x00) (= (memory_load8_le mem@5 #x000000000001fdd3) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001fdd4) #x00) (= (memory_load8_le mem@5 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@5 #x000000000001fdd6) #x00) (= (memory_load8_le mem@5 #x000000000001fdd7) #x00))))) (and (and (and (and (= (memory_load8_le mem@5 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@5 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@5 #x000000000001ffda) #x00) (= (memory_load8_le mem@5 #x000000000001ffdb) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000001ffdc) #x00) (= (memory_load8_le mem@5 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@5 #x000000000001ffde) #x00) (= (memory_load8_le mem@5 #x000000000001ffdf) #x00)))) (and (and (and (= (memory_load8_le mem@5 #x0000000000020058) #x58) (= (memory_load8_le mem@5 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005a) #x02) (= (memory_load8_le mem@5 #x000000000002005b) #x00))) (and (and (= (memory_load8_le mem@5 #x000000000002005c) #x00) (= (memory_load8_le mem@5 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@5 #x000000000002005e) #x00) (= (memory_load8_le mem@5 #x000000000002005f) #x00)))))))) (=> (and (and (and (and (and (and (and (and (= R9@0 (memory_load64_le mem@5 (bvadd R8@2 #x0000000000000078))) (= Gamma_R9@0 (or (gamma_load64 Gamma_mem@5 (bvadd R8@2 #x0000000000000078)) (L mem@5 (bvadd R8@2 #x0000000000000078))))) (= R9@1 (bvadd R9@0 #x0000000000000004))) (and (= stack@7 (memory_store64_le stack@6 (bvadd R29@0 #xfffffffffffffff8) R9@1)) (= Gamma_stack@7 (gamma_store64 Gamma_stack@6 (bvadd R29@0 #xfffffffffffffff8) Gamma_R9@0)))) (and (and (= mem@6 mem@5) (= Gamma_mem@6 Gamma_mem@5)) (and (= (memory_load8_le mem@6 #x0000000000000990) #x01) (= (memory_load8_le mem@6 #x0000000000000991) #x00)))) (and (and (and (= (memory_load8_le mem@6 #x0000000000000992) #x02) (= (memory_load8_le mem@6 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@6 #x000000000001fdc9) #x08))) (and (and (= (memory_load8_le mem@6 #x000000000001fdca) #x00) (= (memory_load8_le mem@6 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdcc) #x00) (= (memory_load8_le mem@6 #x000000000001fdcd) #x00))))) (and (and (and (and (= (memory_load8_le mem@6 #x000000000001fdce) #x00) (= (memory_load8_le mem@6 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdd0) #x80) (= (memory_load8_le mem@6 #x000000000001fdd1) #x08))) (and (and (= (memory_load8_le mem@6 #x000000000001fdd2) #x00) (= (memory_load8_le mem@6 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@6 #x000000000001fdd4) #x00) (= (memory_load8_le mem@6 #x000000000001fdd5) #x00)))) (and (and (and (= (memory_load8_le mem@6 #x000000000001fdd6) #x00) (= (memory_load8_le mem@6 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@6 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@6 #x000000000001ffd9) #x08))) (and (and (= (memory_load8_le mem@6 #x000000000001ffda) #x00) (= (memory_load8_le mem@6 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@6 #x000000000001ffdc) #x00) (= (memory_load8_le mem@6 #x000000000001ffdd) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@6 #x000000000001ffde) #x00) (= (memory_load8_le mem@6 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@6 #x0000000000020058) #x58) (= (memory_load8_le mem@6 #x0000000000020059) #x00))) (and (and (= (memory_load8_le mem@6 #x000000000002005a) #x02) (= (memory_load8_le mem@6 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@6 #x000000000002005c) #x00) (= (memory_load8_le mem@6 #x000000000002005d) #x00)))) (and (and (and (= (memory_load8_le mem@6 #x000000000002005e) #x00) (= (memory_load8_le mem@6 #x000000000002005f) #x00)) (and (= R9@2 (memory_load64_le mem@6 (bvadd R8@2 #x0000000000000078))) (= Gamma_R9@1 (or (gamma_load64 Gamma_mem@6 (bvadd R8@2 #x0000000000000078)) (L mem@6 (bvadd R8@2 #x0000000000000078)))))) (and (and (= stack@8 (memory_store64_le stack@7 (bvadd R31@0 #x0000000000000010) R9@2)) (= Gamma_stack@8 (gamma_store64 Gamma_stack@7 (bvadd R31@0 #x0000000000000010) Gamma_R9@1))) (and (= mem@7 mem@6) (= Gamma_mem@7 Gamma_mem@6))))) (and (and (and (and (= (memory_load8_le mem@7 #x0000000000000990) #x01) (= (memory_load8_le mem@7 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@7 #x0000000000000992) #x02) (= (memory_load8_le mem@7 #x0000000000000993) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@7 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@7 #x000000000001fdca) #x00) (= (memory_load8_le mem@7 #x000000000001fdcb) #x00)))) (and (and (and (= (memory_load8_le mem@7 #x000000000001fdcc) #x00) (= (memory_load8_le mem@7 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdce) #x00) (= (memory_load8_le mem@7 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001fdd0) #x80) (= (memory_load8_le mem@7 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@7 #x000000000001fdd2) #x00) (= (memory_load8_le mem@7 #x000000000001fdd3) #x00))))))) (and (and (and (and (and (and (= (memory_load8_le mem@7 #x000000000001fdd4) #x00) (= (memory_load8_le mem@7 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdd6) #x00) (= (memory_load8_le mem@7 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@7 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@7 #x000000000001ffda) #x00) (= (memory_load8_le mem@7 #x000000000001ffdb) #x00)))) (and (and (and (= (memory_load8_le mem@7 #x000000000001ffdc) #x00) (= (memory_load8_le mem@7 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@7 #x000000000001ffde) #x00) (= (memory_load8_le mem@7 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@7 #x0000000000020058) #x58) (= (memory_load8_le mem@7 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@7 #x000000000002005a) #x02) (= (memory_load8_le mem@7 #x000000000002005b) #x00))))) (and (and (and (and (= (memory_load8_le mem@7 #x000000000002005c) #x00) (= (memory_load8_le mem@7 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@7 #x000000000002005e) #x00) (= (memory_load8_le mem@7 #x000000000002005f) #x00))) (and (and (= R0@5 (memory_load64_le mem@7 (bvadd R8@2 #x0000000000000078))) (= Gamma_R0@4 (or (gamma_load64 Gamma_mem@7 (bvadd R8@2 #x0000000000000078)) (L mem@7 (bvadd R8@2 #x0000000000000078))))) (and (= Gamma_R0@5 true) (forall ((i@@7 (_ BitVec 64)) ) (! (=> (and (bvule R0@5 i@@7) (bvult i@@7 (bvadd R0@5 R0@6))) (not (= (select mem@7 i@@7) #x00))) - :qid |mallocmemcpystrlenmemsetfreebpl.783:19| - :skolemid |16| -))))) (and (and (and (= (memory_load8_le mem@7 (bvadd R0@5 R0@6)) #x00) (bvult R0@5 (bvadd (bvadd R0@5 R0@6) #x0000000000000001))) (and (= (memory_load8_le mem@7 #x0000000000000990) #x01) (= (memory_load8_le mem@7 #x0000000000000991) #x00))) (and (and (= (memory_load8_le mem@7 #x0000000000000992) #x02) (= (memory_load8_le mem@7 #x0000000000000993) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@7 #x000000000001fdc9) #x08)))))) (and (and (and (and (and (= (memory_load8_le mem@7 #x000000000001fdca) #x00) (= (memory_load8_le mem@7 #x000000000001fdcb) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdcc) #x00) (= (memory_load8_le mem@7 #x000000000001fdcd) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001fdce) #x00) (= (memory_load8_le mem@7 #x000000000001fdcf) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdd0) #x80) (= (memory_load8_le mem@7 #x000000000001fdd1) #x08)))) (and (and (and (= (memory_load8_le mem@7 #x000000000001fdd2) #x00) (= (memory_load8_le mem@7 #x000000000001fdd3) #x00)) (and (= (memory_load8_le mem@7 #x000000000001fdd4) #x00) (= (memory_load8_le mem@7 #x000000000001fdd5) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001fdd6) #x00) (= (memory_load8_le mem@7 #x000000000001fdd7) #x00)) (and (= (memory_load8_le mem@7 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@7 #x000000000001ffd9) #x08))))) (and (and (and (and (= (memory_load8_le mem@7 #x000000000001ffda) #x00) (= (memory_load8_le mem@7 #x000000000001ffdb) #x00)) (and (= (memory_load8_le mem@7 #x000000000001ffdc) #x00) (= (memory_load8_le mem@7 #x000000000001ffdd) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000001ffde) #x00) (= (memory_load8_le mem@7 #x000000000001ffdf) #x00)) (and (= (memory_load8_le mem@7 #x0000000000020058) #x58) (= (memory_load8_le mem@7 #x0000000000020059) #x00)))) (and (and (and (= (memory_load8_le mem@7 #x000000000002005a) #x02) (= (memory_load8_le mem@7 #x000000000002005b) #x00)) (and (= (memory_load8_le mem@7 #x000000000002005c) #x00) (= (memory_load8_le mem@7 #x000000000002005d) #x00))) (and (and (= (memory_load8_le mem@7 #x000000000002005e) #x00) (= (memory_load8_le mem@7 #x000000000002005f) #x00)) (and (= R0@7 (memory_load64_le stack@8 (bvadd R31@0 #x0000000000000010))) (= Gamma_R0@6 (gamma_load64 Gamma_stack@8 (bvadd R31@0 #x0000000000000010)))))))))) (and (=> (= (ControlFlow 0 2) (- 0 3)) true) (=> (and (and (= (memory_load64_le mem@8 $buf_addr) (memory_load64_le mem@7 $buf_addr)) (= (memory_load8_le mem@8 $password_addr) (memory_load8_le mem@7 $password_addr))) (and (forall ((i@@8 (_ BitVec 64)) ) (! (= (select Gamma_mem@8 i@@8) (ite (and (bvule R0@7 i@@8) (bvult i@@8 (bvadd R0@7 R0@6))) true (gamma_load8 Gamma_mem@7 i@@8))) - :qid |mallocmemcpystrlenmemsetfreebpl.630:19| - :skolemid |14| -)) (forall ((i@@9 (_ BitVec 64)) ) (! (= (select mem@8 i@@9) (ite (and (bvule R0@7 i@@9) (bvult i@@9 (bvadd R0@7 R0@6))) ((_ extract 7 0) #x0000000000000001) (memory_load8_le mem@7 i@@9))) - :qid |mallocmemcpystrlenmemsetfreebpl.631:19| - :skolemid |15| -)))) (=> (and (and (and (and (= (memory_load8_le mem@8 #x0000000000000990) #x01) (= (memory_load8_le mem@8 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@8 #x0000000000000992) #x02) (= (memory_load8_le mem@8 #x0000000000000993) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@8 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@8 #x000000000001fdca) #x00) (= (memory_load8_le mem@8 #x000000000001fdcb) #x00)))) (and (and (and (= (memory_load8_le mem@8 #x000000000001fdcc) #x00) (= (memory_load8_le mem@8 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@8 #x000000000001fdce) #x00) (= (memory_load8_le mem@8 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001fdd0) #x80) (= (memory_load8_le mem@8 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@8 #x000000000001fdd2) #x00) (= (memory_load8_le mem@8 #x000000000001fdd3) #x00))))) (=> (and (and (and (and (and (and (= (memory_load8_le mem@8 #x000000000001fdd4) #x00) (= (memory_load8_le mem@8 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@8 #x000000000001fdd6) #x00) (= (memory_load8_le mem@8 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@8 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@8 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@8 #x000000000001ffda) #x00) (= (memory_load8_le mem@8 #x000000000001ffdb) #x00)))) (and (and (and (= (memory_load8_le mem@8 #x000000000001ffdc) #x00) (= (memory_load8_le mem@8 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@8 #x000000000001ffde) #x00) (= (memory_load8_le mem@8 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@8 #x0000000000020058) #x58) (= (memory_load8_le mem@8 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@8 #x000000000002005a) #x02) (= (memory_load8_le mem@8 #x000000000002005b) #x00))))) (and (and (and (and (= (memory_load8_le mem@8 #x000000000002005c) #x00) (= (memory_load8_le mem@8 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@8 #x000000000002005e) #x00) (= (memory_load8_le mem@8 #x000000000002005f) #x00))) (and (and (= R8@3 (memory_load64_le stack@8 (bvadd R31@0 #x0000000000000018))) (= Gamma_R8@3 (gamma_load64 Gamma_stack@8 (bvadd R31@0 #x0000000000000018)))) (and (= mem@9 mem@8) (= Gamma_mem@9 Gamma_mem@8)))) (and (and (and (= (memory_load8_le mem@9 #x0000000000000990) #x01) (= (memory_load8_le mem@9 #x0000000000000991) #x00)) (and (= (memory_load8_le mem@9 #x0000000000000992) #x02) (= (memory_load8_le mem@9 #x0000000000000993) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdc8) #xd0) (= (memory_load8_le mem@9 #x000000000001fdc9) #x08)) (and (= (memory_load8_le mem@9 #x000000000001fdca) #x00) (= (memory_load8_le mem@9 #x000000000001fdcb) #x00)))))) (and (and (and (and (and (= (memory_load8_le mem@9 #x000000000001fdcc) #x00) (= (memory_load8_le mem@9 #x000000000001fdcd) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdce) #x00) (= (memory_load8_le mem@9 #x000000000001fdcf) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001fdd0) #x80) (= (memory_load8_le mem@9 #x000000000001fdd1) #x08)) (and (= (memory_load8_le mem@9 #x000000000001fdd2) #x00) (= (memory_load8_le mem@9 #x000000000001fdd3) #x00)))) (and (and (and (= (memory_load8_le mem@9 #x000000000001fdd4) #x00) (= (memory_load8_le mem@9 #x000000000001fdd5) #x00)) (and (= (memory_load8_le mem@9 #x000000000001fdd6) #x00) (= (memory_load8_le mem@9 #x000000000001fdd7) #x00))) (and (and (= (memory_load8_le mem@9 #x000000000001ffd8) #xd4) (= (memory_load8_le mem@9 #x000000000001ffd9) #x08)) (and (= (memory_load8_le mem@9 #x000000000001ffda) #x00) (= (memory_load8_le mem@9 #x000000000001ffdb) #x00))))) (and (and (and (and (= (memory_load8_le mem@9 #x000000000001ffdc) #x00) (= (memory_load8_le mem@9 #x000000000001ffdd) #x00)) (and (= (memory_load8_le mem@9 #x000000000001ffde) #x00) (= (memory_load8_le mem@9 #x000000000001ffdf) #x00))) (and (and (= (memory_load8_le mem@9 #x0000000000020058) #x58) (= (memory_load8_le mem@9 #x0000000000020059) #x00)) (and (= (memory_load8_le mem@9 #x000000000002005a) #x02) (= (memory_load8_le mem@9 #x000000000002005b) #x00)))) (and (and (and (= (memory_load8_le mem@9 #x000000000002005c) #x00) (= (memory_load8_le mem@9 #x000000000002005d) #x00)) (and (= (memory_load8_le mem@9 #x000000000002005e) #x00) (= (memory_load8_le mem@9 #x000000000002005f) #x00))) (and (and (= R0@8 (memory_load64_le mem@9 (bvadd R8@3 #x0000000000000078))) (= Gamma_R0@7 (or (gamma_load64 Gamma_mem@9 (bvadd R8@3 #x0000000000000078)) (L mem@9 (bvadd R8@3 #x0000000000000078))))) (= (ControlFlow 0 2) (- 0 1))))))) (forall ((i@@10 Int) (j (_ BitVec 64)) ) (! (=> (and (and (= (select malloc_base@0 i@@10) R0@8) (bvuge j R0@8)) (bvult j (select malloc_end@0 i@@10))) (select Gamma_mem@9 j)) - :qid |mallocmemcpystrlenmemsetfreebpl.142:20| - :skolemid |8| -))))))))))))))))))))))))))) -(let ((PreconditionGeneratedEntry_correct (=> (= (gamma_load8 Gamma_mem $password_addr) false) (=> (and (and (= malloc_count 0) (gamma_load32 Gamma_mem (memory_load64_le mem $stext_addr))) (and (= R31 #x0000000000000064) (= (memory_load8_le mem #x0000000000020050) #x00))) (=> (and (and (and (and (and (and (= (memory_load8_le mem #x0000000000020051) #x00) (= (memory_load8_le mem #x0000000000020052) #x00)) (and (= (memory_load8_le mem #x0000000000020053) #x00) (= (memory_load8_le mem #x0000000000020054) #x00))) (and (and (= (memory_load8_le mem #x0000000000020055) #x00) (= (memory_load8_le mem #x0000000000020056) #x00)) (and (= (memory_load8_le mem #x0000000000020057) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (memory_load8_le mem #x0000000000020060) #x07))))) (and (and (and (and (= (memory_load8_le mem #x0000000000020061) #x75) (= (memory_load8_le mem #x0000000000020062) #x73)) (and (= (memory_load8_le mem #x0000000000020063) #x65) (= (memory_load8_le mem #x0000000000020064) #x72))) (and (and (= (memory_load8_le mem #x0000000000020065) #x3a) (= (memory_load8_le mem #x0000000000020066) #x70)) (and (= (memory_load8_le mem #x0000000000020067) #x61) (= (memory_load8_le mem #x0000000000020068) #x73)))) (and (and (and (= (memory_load8_le mem #x0000000000020069) #x73) (= (memory_load8_le mem #x000000000002006a) #x00)) (and (= (memory_load8_le mem #x000000000002006b) #x00) (= (memory_load8_le mem #x0000000000000990) #x01))) (and (and (= (memory_load8_le mem #x0000000000000991) #x00) (= (memory_load8_le mem #x0000000000000992) #x02)) (and (= (memory_load8_le mem #x0000000000000993) #x00) (= (memory_load8_le mem #x000000000001fdc8) #xd0)))))) (and (and (and (and (and (= (memory_load8_le mem #x000000000001fdc9) #x08) (= (memory_load8_le mem #x000000000001fdca) #x00)) (and (= (memory_load8_le mem #x000000000001fdcb) #x00) (= (memory_load8_le mem #x000000000001fdcc) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdcd) #x00) (= (memory_load8_le mem #x000000000001fdce) #x00)) (and (= (memory_load8_le mem #x000000000001fdcf) #x00) (= (memory_load8_le mem #x000000000001fdd0) #x80)))) (and (and (and (= (memory_load8_le mem #x000000000001fdd1) #x08) (= (memory_load8_le mem #x000000000001fdd2) #x00)) (and (= (memory_load8_le mem #x000000000001fdd3) #x00) (= (memory_load8_le mem #x000000000001fdd4) #x00))) (and (and (= (memory_load8_le mem #x000000000001fdd5) #x00) (= (memory_load8_le mem #x000000000001fdd6) #x00)) (and (= (memory_load8_le mem #x000000000001fdd7) #x00) (= (memory_load8_le mem #x000000000001ffd8) #xd4))))) (and (and (and (and (= (memory_load8_le mem #x000000000001ffd9) #x08) (= (memory_load8_le mem #x000000000001ffda) #x00)) (and (= (memory_load8_le mem #x000000000001ffdb) #x00) (= (memory_load8_le mem #x000000000001ffdc) #x00))) (and (and (= (memory_load8_le mem #x000000000001ffdd) #x00) (= (memory_load8_le mem #x000000000001ffde) #x00)) (and (= (memory_load8_le mem #x000000000001ffdf) #x00) (= (memory_load8_le mem #x0000000000020058) #x58)))) (and (and (and (= (memory_load8_le mem #x0000000000020059) #x00) (= (memory_load8_le mem #x000000000002005a) #x02)) (and (= (memory_load8_le mem #x000000000002005b) #x00) (= (memory_load8_le mem #x000000000002005c) #x00))) (and (and (= (memory_load8_le mem #x000000000002005d) #x00) (= (memory_load8_le mem #x000000000002005e) #x00)) (and (= (memory_load8_le mem #x000000000002005f) #x00) (= (ControlFlow 0 7) 2))))))) lmain_correct))))) -PreconditionGeneratedEntry_correct))) -)) -(check-sat) -(get-info :reason-unknown) diff --git a/src/test/scala/SystemTests.scala b/src/test/scala/SystemTests.scala index 33880c406..bbb3e4329 100644 --- a/src/test/scala/SystemTests.scala +++ b/src/test/scala/SystemTests.scala @@ -86,7 +86,7 @@ class SystemTests extends AnyFunSuite { val args = mutable.ArrayBuffer("--adt", ADTPath, "--relf", RELFPath, "--output", outPath) if (File(specPath).exists) args ++= Seq("--spec", specPath) - Main.main(args) + Main.main(args.toArray) val translateTime = timer.checkPoint("translate-boogie") Logger.info(outPath + " done") val extraSpec = List.from(File(directoryPath).listFiles()).map(_.toString).filter(_.endsWith(".bpl")).filterNot(_.endsWith(outPath)) From bb889eb2c16d1a1f2a2c7b94135b4400a6c2ee9a Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Fri, 12 Jan 2024 14:34:53 +1000 Subject: [PATCH 30/36] fix clang target --- src/test/make/clang.mk | 1 + src/test/make/clang_O2.mk | 2 +- src/test/make/clang_no_plt_no_pic.mk | 2 +- src/test/make/clang_pic.mk | 2 +- src/test/make/lift-directories.mk | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/test/make/clang.mk b/src/test/make/clang.mk index 6bbd0c4a6..c6174bb84 100644 --- a/src/test/make/clang.mk +++ b/src/test/make/clang.mk @@ -1,2 +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 index 5a99618a9..fd5e39827 100644 --- a/src/test/make/clang_O2.mk +++ b/src/test/make/clang_O2.mk @@ -1,3 +1,3 @@ CC=$(CLANG) -CFLAGS += -target $(TARGET) -O2 +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 index 701740b58..cdec016f9 100644 --- a/src/test/make/clang_no_plt_no_pic.mk +++ b/src/test/make/clang_no_plt_no_pic.mk @@ -1,3 +1,3 @@ CC=$(CLANG) -CFLAGS += -target $(TARGET) -fno-plt -fno-pic +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 index 49b498694..860454d2f 100644 --- a/src/test/make/clang_pic.mk +++ b/src/test/make/clang_pic.mk @@ -1,3 +1,3 @@ CC=$(CLANG) -CFLAGS += -target $(TARGET) -fPIC +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 index 939d40fa4..0a7d2e718 100644 --- a/src/test/make/lift-directories.mk +++ b/src/test/make/lift-directories.mk @@ -9,7 +9,7 @@ NAME=$(notdir $(shell pwd)) GIT_ROOT?=$(realpath ../../../../) GCC ?= aarch64-linux-gnu-gcc -CLANG ?= clang-15 +CLANG ?= clang-15 -target $(TARGET) CC ?= $(GCC) #CFLAGS=-fno-pic -fno-plt TARGET=aarch64-linux-gnu From 31c97b59078f3b5da8ab607eebfc2ff845823f40 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Mon, 15 Jan 2024 12:21:07 +1000 Subject: [PATCH 31/36] SystemTests check for verification failure message --- src/test/scala/SystemTests.scala | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/test/scala/SystemTests.scala b/src/test/scala/SystemTests.scala index bbb3e4329..7a5079c7f 100644 --- a/src/test/scala/SystemTests.scala +++ b/src/test/scala/SystemTests.scala @@ -95,13 +95,18 @@ class SystemTests extends AnyFunSuite { 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" @@ -115,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) From 2a334d734cdf6073f16741a466806f26d9cc6ee2 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Mon, 15 Jan 2024 12:25:29 +1000 Subject: [PATCH 32/36] add test and expected files --- .../malloc_memcpy_strlen_memset_free.adt | 1852 +++++++--------- .../malloc_memcpy_strlen_memset_free.bir | 914 ++++---- .../malloc_memcpy_strlen_memset_free.relf | 207 +- .../malloc_memcpy_strlen_memset_free.adt | 824 ++++---- .../malloc_memcpy_strlen_memset_free.bir | 172 +- .../malloc_memcpy_strlen_memset_free.relf | 207 +- .../malloc_memcpy_strlen_memset_free.adt | 832 ++++---- .../malloc_memcpy_strlen_memset_free.bir | 172 +- .../malloc_memcpy_strlen_memset_free.relf | 207 +- .../malloc_memcpy_strlen_memset_free.adt | 672 +++--- .../malloc_memcpy_strlen_memset_free.bir | 24 +- .../malloc_memcpy_strlen_memset_free.relf | 207 +- .../malloc_memcpy_strlen_memset_free.expected | 71 +- .../malloc_memcpy_strlen_memset_free.expected | 86 +- .../malloc_memcpy_strlen_memset_free.adt | 1864 +++++++---------- .../malloc_memcpy_strlen_memset_free.bir | 918 ++++---- .../malloc_memcpy_strlen_memset_free.expected | 770 +++---- .../malloc_memcpy_strlen_memset_free.relf | 207 +- .../malloc_memcpy_strlen_memset_free.adt | 828 ++++---- .../malloc_memcpy_strlen_memset_free.bir | 172 +- .../malloc_memcpy_strlen_memset_free.expected | 825 ++++++++ .../malloc_memcpy_strlen_memset_free.relf | 207 +- .../malloc_memcpy_strlen_memset_free.adt | 836 ++++---- .../malloc_memcpy_strlen_memset_free.bir | 172 +- .../malloc_memcpy_strlen_memset_free.expected | 824 ++++++++ .../malloc_memcpy_strlen_memset_free.relf | 207 +- .../malloc_memcpy_strlen_memset_free.adt | 787 +++++++ .../malloc_memcpy_strlen_memset_free.bir | 363 ++++ .../malloc_memcpy_strlen_memset_free.expected | 1068 ++++++++++ .../malloc_memcpy_strlen_memset_free.relf | 147 ++ .../gcc/malloc_memcpy_strlen_memset_free.adt | 88 +- .../gcc/malloc_memcpy_strlen_memset_free.bir | 88 +- .../malloc_memcpy_strlen_memset_free.expected | 838 ++++++++ .../malloc_memcpy_strlen_memset_free.adt | 88 +- .../malloc_memcpy_strlen_memset_free.bir | 88 +- .../malloc_memcpy_strlen_memset_free.expected | 823 ++++++++ .../malloc_memcpy_strlen_memset_free.adt | 797 +++++++ .../malloc_memcpy_strlen_memset_free.bir | 371 ++++ .../malloc_memcpy_strlen_memset_free.expected | 838 ++++++++ .../malloc_memcpy_strlen_memset_free.relf | 143 ++ .../malloc_memcpy_strlen_memset_free.adt | 799 +++++++ .../malloc_memcpy_strlen_memset_free.bir | 371 ++++ .../malloc_memcpy_strlen_memset_free.expected | 1087 ++++++++++ .../malloc_memcpy_strlen_memset_free.relf | 145 ++ 44 files changed, 16183 insertions(+), 7023 deletions(-) create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.expected create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.expected create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.expected create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt index fc7fff40f..6be3f033b 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt @@ -1,1183 +1,775 @@ 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 x86_64)\n(base-address 0)\n(bias 0)\n(bits 64)\n(code-region 4668 9 4668)\n(code-region 4256 410 4256)\n(code-region 4240 8 4240)\n(code-region 4128 112 4128)\n(code-region 4096 23 4096)\n(code-start 4256)\n(code-start 4496)\n(entry-point 4256)\n(external-reference 16320 __libc_start_main)\n(external-reference 16328 _ITM_deregisterTMCloneTable)\n(external-reference 16336 __gmon_start__)\n(external-reference 16344 _ITM_registerTMCloneTable)\n(external-reference 16352 __cxa_finalize)\n(external-reference 16384 free)\n(external-reference 16392 puts)\n(external-reference 16400 strlen)\n(external-reference 16408 memset)\n(external-reference 16416 memcpy)\n(external-reference 16424 malloc)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry _init 4096 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.2.5 0 0)\n(llvm:code-entry main 4496 170)\n(llvm:code-entry _start 4256 34)\n(llvm:code-entry malloc@GLIBC_2.2.5 0 0)\n(llvm:code-entry memcpy@GLIBC_2.14 0 0)\n(llvm:code-entry memset@GLIBC_2.2.5 0 0)\n(llvm:code-entry strlen@GLIBC_2.2.5 0 0)\n(llvm:code-entry _fini 4668 0)\n(llvm:code-entry puts@GLIBC_2.2.5 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry free@GLIBC_2.2.5 0 0)\n(llvm:code-entry frame_dummy 4480 0)\n(llvm:code-entry __do_global_dtors_aux 4416 0)\n(llvm:code-entry register_tm_clones 4352 0)\n(llvm:code-entry deregister_tm_clones 4304 0)\n(llvm:code-entry .fini 4668 9)\n(llvm:code-entry .text 4256 410)\n(llvm:code-entry .plt.got 4240 8)\n(llvm:code-entry .plt 4128 112)\n(llvm:code-entry .init 4096 23)\n(llvm:elf-program-header 12 11728 560)\n(llvm:elf-program-header 11 0 0)\n(llvm:elf-program-header 10 8196 44)\n(llvm:elf-program-header 09 824 32)\n(llvm:elf-program-header 08 856 68)\n(llvm:elf-program-header 07 824 32)\n(llvm:elf-program-header 06 11744 480)\n(llvm:elf-program-header 05 11728 636)\n(llvm:elf-program-header 04 8192 220)\n(llvm:elf-program-header 03 4096 581)\n(llvm:elf-program-header 02 0 1872)\n(llvm:elf-program-header 01 792 28)\n(llvm:elf-program-header 00 64 728)\n(llvm:elf-program-header-flags 12 false true false false)\n(llvm:elf-program-header-flags 11 false true true false)\n(llvm:elf-program-header-flags 10 false true false false)\n(llvm:elf-program-header-flags 09 false true false false)\n(llvm:elf-program-header-flags 08 false true false false)\n(llvm:elf-program-header-flags 07 false true false false)\n(llvm:elf-program-header-flags 06 false true true false)\n(llvm:elf-program-header-flags 05 true true true false)\n(llvm:elf-program-header-flags 04 true true false false)\n(llvm:elf-program-header-flags 03 true true false true)\n(llvm:elf-program-header-flags 02 true true false false)\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 12 15824 560)\n(llvm:elf-virtual-program-header 11 0 0)\n(llvm:elf-virtual-program-header 10 8196 44)\n(llvm:elf-virtual-program-header 09 824 32)\n(llvm:elf-virtual-program-header 08 856 68)\n(llvm:elf-virtual-program-header 07 824 32)\n(llvm:elf-virtual-program-header 06 15840 480)\n(llvm:elf-virtual-program-header 05 15824 656)\n(llvm:elf-virtual-program-header 04 8192 220)\n(llvm:elf-virtual-program-header 03 4096 581)\n(llvm:elf-virtual-program-header 02 0 1872)\n(llvm:elf-virtual-program-header 01 792 28)\n(llvm:elf-virtual-program-header 00 64 728)\n(llvm:entry-point 4256)\n(llvm:name-reference 16424 malloc)\n(llvm:name-reference 16416 memcpy)\n(llvm:name-reference 16408 memset)\n(llvm:name-reference 16400 strlen)\n(llvm:name-reference 16392 puts)\n(llvm:name-reference 16384 free)\n(llvm:name-reference 16352 __cxa_finalize)\n(llvm:name-reference 16344 _ITM_registerTMCloneTable)\n(llvm:name-reference 16336 __gmon_start__)\n(llvm:name-reference 16328 _ITM_deregisterTMCloneTable)\n(llvm:name-reference 16320 __libc_start_main)\n(llvm:section-entry .shstrtab 0 282 14101)\n(llvm:section-entry .strtab 0 613 13488)\n(llvm:section-entry .symtab 0 1056 12432)\n(llvm:section-entry .comment 0 63 12364)\n(llvm:section-entry .bss 16464 16 12364)\n(llvm:section-entry .data 16432 28 12336)\n(llvm:section-entry .got.plt 16360 72 12264)\n(llvm:section-entry .got 16320 40 12224)\n(llvm:section-entry .dynamic 15840 480 11744)\n(llvm:section-entry .fini_array 15832 8 11736)\n(llvm:section-entry .init_array 15824 8 11728)\n(llvm:section-entry .eh_frame 8240 172 8240)\n(llvm:section-entry .eh_frame_hdr 8196 44 8196)\n(llvm:section-entry .rodata 8192 4 8192)\n(llvm:section-entry .fini 4668 9 4668)\n(llvm:section-entry .text 4256 410 4256)\n(llvm:section-entry .plt.got 4240 8 4240)\n(llvm:section-entry .plt 4128 112 4128)\n(llvm:section-entry .init 4096 23 4096)\n(llvm:section-entry .rela.plt 1728 144 1728)\n(llvm:section-entry .rela.dyn 1536 192 1536)\n(llvm:section-entry .gnu.version_r 1472 64 1472)\n(llvm:section-entry .gnu.version 1442 24 1442)\n(llvm:section-entry .dynstr 1256 185 1256)\n(llvm:section-entry .dynsym 968 288 968)\n(llvm:section-entry .gnu.hash 928 36 928)\n(llvm:section-entry .note.ABI-tag 892 32 892)\n(llvm:section-entry .note.gnu.build-id 856 36 856)\n(llvm:section-entry .note.gnu.property 824 32 824)\n(llvm:section-entry .interp 792 28 792)\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.got 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 .note.gnu.property true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry _init 4096 0 4096 4096)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry main 4496 170 4496 4496)\n(llvm:symbol-entry _start 4256 34 4256 4256)\n(llvm:symbol-entry malloc@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.14 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry _fini 4668 0 4668 4668)\n(llvm:symbol-entry puts@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry free@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry frame_dummy 4480 0 4480 4480)\n(llvm:symbol-entry __do_global_dtors_aux 4416 0 4416 4416)\n(llvm:symbol-entry register_tm_clones 4352 0 4352 4352)\n(llvm:symbol-entry deregister_tm_clones 4304 0 4304 4304)\n(mapped 0 1872 0)\n(mapped 4096 581 4096)\n(mapped 8192 220 8192)\n(mapped 15824 636 11728)\n(named-region 0 1872 02)\n(named-region 4096 581 03)\n(named-region 8192 220 04)\n(named-region 15824 656 05)\n(named-region 792 28 .interp)\n(named-region 824 32 .note.gnu.property)\n(named-region 856 36 .note.gnu.build-id)\n(named-region 892 32 .note.ABI-tag)\n(named-region 928 36 .gnu.hash)\n(named-region 968 288 .dynsym)\n(named-region 1256 185 .dynstr)\n(named-region 1442 24 .gnu.version)\n(named-region 1472 64 .gnu.version_r)\n(named-region 1536 192 .rela.dyn)\n(named-region 1728 144 .rela.plt)\n(named-region 4096 23 .init)\n(named-region 4128 112 .plt)\n(named-region 4240 8 .plt.got)\n(named-region 4256 410 .text)\n(named-region 4668 9 .fini)\n(named-region 8192 4 .rodata)\n(named-region 8196 44 .eh_frame_hdr)\n(named-region 8240 172 .eh_frame)\n(named-region 15824 8 .init_array)\n(named-region 15832 8 .fini_array)\n(named-region 15840 480 .dynamic)\n(named-region 16320 40 .got)\n(named-region 16360 72 .got.plt)\n(named-region 16432 28 .data)\n(named-region 16464 16 .bss)\n(named-region 0 63 .comment)\n(named-region 0 1056 .symtab)\n(named-region 0 613 .strtab)\n(named-region 0 282 .shstrtab)\n(named-symbol 4304 deregister_tm_clones)\n(named-symbol 4352 register_tm_clones)\n(named-symbol 4416 __do_global_dtors_aux)\n(named-symbol 4480 frame_dummy)\n(named-symbol 0 free@GLIBC_2.2.5)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 puts@GLIBC_2.2.5)\n(named-symbol 4668 _fini)\n(named-symbol 0 strlen@GLIBC_2.2.5)\n(named-symbol 0 memset@GLIBC_2.2.5)\n(named-symbol 0 memcpy@GLIBC_2.14)\n(named-symbol 0 malloc@GLIBC_2.2.5)\n(named-symbol 4256 _start)\n(named-symbol 4496 main)\n(named-symbol 0 __cxa_finalize@GLIBC_2.2.5)\n(named-symbol 4096 _init)\n(named-symbol 0 free)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 puts)\n(named-symbol 0 strlen)\n(named-symbol 0 memset)\n(named-symbol 0 memcpy)\n(named-symbol 0 malloc)\n(named-symbol 0 __cxa_finalize)\n(require libc.so.6)\n(section 792 28)\n(section 824 32)\n(section 856 36)\n(section 892 32)\n(section 928 36)\n(section 968 288)\n(section 1256 185)\n(section 1442 24)\n(section 1472 64)\n(section 1536 192)\n(section 1728 144)\n(section 4096 23)\n(section 4128 112)\n(section 4240 8)\n(section 4256 410)\n(section 4668 9)\n(section 8192 4)\n(section 8196 44)\n(section 8240 172)\n(section 15824 8)\n(section 15832 8)\n(section 15840 480)\n(section 16320 40)\n(section 16360 72)\n(section 16432 28)\n(section 16464 16)\n(section 0 63)\n(section 0 1056)\n(section 0 613)\n(section 0 282)\n(segment 0 1872 true false false)\n(segment 4096 581 true false true)\n(segment 8192 220 true false false)\n(segment 15824 656 true true false)\n(subarch \"\")\n(symbol-chunk 4256 34 4256)\n(symbol-chunk 4496 170 4496)\n(symbol-value 4304 4304)\n(symbol-value 4352 4352)\n(symbol-value 4416 4416)\n(symbol-value 4480 4480)\n(symbol-value 4668 4668)\n(symbol-value 4256 4256)\n(symbol-value 4496 4496)\n(symbol-value 4096 4096)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), -Attr("abi-name","\"x86_64-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x00\x10"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xe0\x2d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\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\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\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\x53\xe5\x74\x64\x04\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\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\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xe0\x2d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\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\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\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\x53\xe5\x74\x64\x04\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2c\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\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x78\x38\x36\x2d\x36\x34\x2e\x73\x6f\x2e\x32\x00\x00\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x47\x4e\x55\x00\x02\x80\x00\xc0\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x48\x00\xe0\xd5\xf2\x7e\x44\x0d\x91\xf5\xa6\xab\xd0\x4c\x33\x43\x84\xdb\xc8\xbc\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xd1\x65\xce\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e"), -Section(".interp", 0x318, "\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x78\x38\x36\x2d\x36\x34\x2e\x73\x6f\x2e\x32\x00"), -Section(".note.gnu.property", 0x338, "\x04\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x47\x4e\x55\x00\x02\x80\x00\xc0\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"), -Section(".note.gnu.build-id", 0x358, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x48\x00\xe0\xd5\xf2\x7e\x44\x0d\x91\xf5\xa6\xab\xd0\x4c\x33\x43\x84\xdb\xc8\xbc"), -Section(".note.ABI-tag", 0x37C, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x3A0, "\x02\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xd1\x65\xce\x6d"), -Section(".dynsym", 0x3C8, "\x00\x00\x00\x00\x00\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\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\x01\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\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\x41\x00\x00\x00\x12\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\x9f\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"), -Section(".dynstr", 0x4E8, "\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\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\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", 0x5A2, "\x00\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x04\x00\x02\x00\x01\x00\x02\x00"), -Section(".gnu.version_r", 0x5C0, "\x01\x00\x03\x00\x48\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x94\x91\x96\x06\x00\x00\x04\x00\x52\x00\x00\x00\x10\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x5d\x00\x00\x00\x10\x00\x00\x00\x75\x1a\x69\x09\x00\x00\x02\x00\x68\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x600, "\xd0\x3d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x80\x11\x00\x00\x00\x00\x00\x00\xd8\x3d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x40\x11\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\xc0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x6C0, "\x00\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".plt", 0x1020, "\xff\x35\xca\x2f\x00\x00\xff\x25\xcc\x2f\x00\x00\x0f\x1f\x40\x00\xff\x25\xca\x2f\x00\x00\x68\x00\x00\x00\x00\xe9\xe0\xff\xff\xff\xff\x25\xc2\x2f\x00\x00\x68\x01\x00\x00\x00\xe9\xd0\xff\xff\xff\xff\x25\xba\x2f\x00\x00\x68\x02\x00\x00\x00\xe9\xc0\xff\xff\xff\xff\x25\xb2\x2f\x00\x00\x68\x03\x00\x00\x00\xe9\xb0\xff\xff\xff\xff\x25\xaa\x2f\x00\x00\x68\x04\x00\x00\x00\xe9\xa0\xff\xff\xff\xff\x25\xa2\x2f\x00\x00\x68\x05\x00\x00\x00\xe9\x90\xff\xff\xff"), -Section(".plt.got", 0x1090, "\xff\x25\x4a\x2f\x00\x00\x66\x90"), -Section(".text", 0x10A0, "\x31\xed\x49\x89\xd1\x5e\x48\x89\xe2\x48\x83\xe4\xf0\x50\x54\x45\x31\xc0\x31\xc9\x48\x8d\x3d\xd5\x00\x00\x00\xff\x15\xff\x2e\x00\x00\xf4\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x0f\x1f\x40\x00\x48\x8d\x3d\x79\x2f\x00\x00\x48\x8d\x05\x72\x2f\x00\x00\x48\x39\xf8\x74\x15\x48\x8b\x05\xde\x2e\x00\x00\x48\x85\xc0\x74\x09\xff\xe0\x0f\x1f\x80\x00\x00\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\x48\x8d\x3d\x49\x2f\x00\x00\x48\x8d\x35\x42\x2f\x00\x00\x48\x29\xfe\x48\x89\xf0\x48\xc1\xee\x3f\x48\xc1\xf8\x03\x48\x01\xc6\x48\xd1\xfe\x74\x14\x48\x8b\x05\xad\x2e\x00\x00\x48\x85\xc0\x74\x08\xff\xe0\x66\x0f\x1f\x44\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\xf3\x0f\x1e\xfa\x80\x3d\x05\x2f\x00\x00\x00\x75\x2b\x55\x48\x83\x3d\x8a\x2e\x00\x00\x00\x48\x89\xe5\x74\x0c\x48\x8b\x3d\xd6\x2e\x00\x00\xe8\x29\xff\xff\xff\xe8\x64\xff\xff\xff\xc6\x05\xdd\x2e\x00\x00\x01\x5d\xc3\x0f\x1f\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\xf3\x0f\x1e\xfa\xe9\x77\xff\xff\xff\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x48\x83\xec\x20\x48\xc7\x45\xf8\x00\x00\x00\x00\x48\xc7\x45\xf0\x00\x00\x00\x00\xbf\x0b\x00\x00\x00\xe8\xce\xfe\xff\xff\x48\x89\x05\x9f\x2e\x00\x00\x48\x8b\x05\x98\x2e\x00\x00\x48\x89\x45\xe0\x48\x8d\x3d\x76\x2e\x00\x00\xe8\x80\xfe\xff\xff\x48\x8b\x7d\xe0\x48\x89\xc2\x48\x8d\x35\x63\x2e\x00\x00\xe8\x8d\xfe\xff\xff\x48\x8b\x3d\x6e\x2e\x00\x00\xe8\x51\xfe\xff\xff\x48\x8b\x05\x62\x2e\x00\x00\x48\x83\xc0\x04\x48\x89\x45\xf8\x48\x8b\x05\x53\x2e\x00\x00\x48\x89\x45\xe8\x48\x8b\x3d\x48\x2e\x00\x00\xe8\x3b\xfe\xff\xff\x48\x8b\x7d\xe8\x48\x89\xc2\xbe\x01\x00\x00\x00\xe8\x3a\xfe\xff\xff\x48\x8b\x3d\x2b\x2e\x00\x00\xe8\xfe\xfd\xff\xff\x31\xc0\x48\x83\xc4\x20\x5d\xc3"), -Section(".init", 0x1000, "\x48\x83\xec\x08\x48\x8b\x05\xc5\x2f\x00\x00\x48\x85\xc0\x74\x02\xff\xd0\x48\x83\xc4\x08\xc3"), -Section(".fini", 0x123C, "\x48\x83\xec\x08\x48\x83\xc4\x08\xc3"), -Section(".eh_frame_hdr", 0x2004, "\x01\x1b\x03\x3b\x28\x00\x00\x00\x04\x00\x00\x00\x1c\xf0\xff\xff\x74\x00\x00\x00\x8c\xf0\xff\xff\x9c\x00\x00\x00\x9c\xf0\xff\xff\x44\x00\x00\x00\x8c\xf1\xff\xff\xb4\x00\x00\x00"), -Section(".eh_frame", 0x2030, "\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x1b\x0c\x07\x08\x90\x01\x07\x10\x14\x00\x00\x00\x1c\x00\x00\x00\x50\xf0\xff\xff\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x1b\x0c\x07\x08\x90\x01\x00\x00\x24\x00\x00\x00\x1c\x00\x00\x00\xa0\xef\xff\xff\x70\x00\x00\x00\x00\x0e\x10\x46\x0e\x18\x4a\x0f\x0b\x77\x08\x80\x00\x3f\x1a\x3b\x2a\x33\x24\x22\x00\x00\x00\x00\x14\x00\x00\x00\x44\x00\x00\x00\xe8\xef\xff\xff\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x5c\x00\x00\x00\xd0\xf0\xff\xff\xaa\x00\x00\x00\x00\x41\x0e\x10\x86\x02\x43\x0d\x06\x02\xa5\x0c\x07\x08\x00\x00\x00\x00\x00\x00"), -Section(".rodata", 0x2000, "\x01\x00\x02\x00"), -Section(".fini_array", 0x3DD8, "\x40\x11\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x3DE0, "\x01\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x3c\x12\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\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\xd8\x3d\x00\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\xa0\x03\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xc8\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\x3f\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x90\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\xc0\x06\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x06\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\xc0\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\xa2\x05\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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", 0x3DD0, "\x80\x11\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x3FC0, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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.plt", 0x3FE8, "\xe0\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x10\x00\x00\x00\x00\x00\x00\x46\x10\x00\x00\x00\x00\x00\x00\x56\x10\x00\x00\x00\x00\x00\x00\x66\x10\x00\x00\x00\x00\x00\x00\x76\x10\x00\x00\x00\x00\x00\x00\x86\x10\x00\x00\x00\x00\x00\x00"), -Section(".data", 0x4030, "\x00\x00\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00")]), -Memmap([Annotation(Region(0x0,0x74F), Attr("segment","02 0 1872")), -Annotation(Region(0x0,0x119), Attr("section","\".shstrtab\"")), -Annotation(Region(0x0,0x264), Attr("section","\".strtab\"")), -Annotation(Region(0x0,0x41F), Attr("section","\".symtab\"")), -Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), -Annotation(Region(0x318,0x333), Attr("section","\".interp\"")), -Annotation(Region(0x338,0x357), Attr("section","\".note.gnu.property\"")), -Annotation(Region(0x358,0x37B), Attr("section","\".note.gnu.build-id\"")), -Annotation(Region(0x37C,0x39B), Attr("section","\".note.ABI-tag\"")), -Annotation(Region(0x3A0,0x3C3), Attr("section","\".gnu.hash\"")), -Annotation(Region(0x3C8,0x4E7), Attr("section","\".dynsym\"")), -Annotation(Region(0x4E8,0x5A0), Attr("section","\".dynstr\"")), -Annotation(Region(0x5A2,0x5B9), Attr("section","\".gnu.version\"")), -Annotation(Region(0x5C0,0x5FF), Attr("section","\".gnu.version_r\"")), -Annotation(Region(0x600,0x6BF), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x6C0,0x74F), Attr("section","\".rela.plt\"")), -Annotation(Region(0x1000,0x1244), Attr("segment","03 0x1000 581")), -Annotation(Region(0x1020,0x108F), Attr("section","\".plt\"")), -Annotation(Region(0x1090,0x1097), Attr("section","\".plt.got\"")), -Annotation(Region(0x1090,0x1097), Attr("code-region","()")), -Annotation(Region(0x10A0,0x10C1), Attr("symbol","\"_start\"")), -Annotation(Region(0x10A0,0x10C1), Attr("symbol-info","_start 0x10A0 34")), -Annotation(Region(0x10A0,0x1239), Attr("section","\".text\"")), -Annotation(Region(0x1190,0x1239), Attr("symbol","\"main\"")), -Annotation(Region(0x1000,0x1016), Attr("section","\".init\"")), -Annotation(Region(0x1000,0x1016), Attr("code-region","()")), -Annotation(Region(0x1020,0x108F), Attr("code-region","()")), -Annotation(Region(0x10A0,0x1239), Attr("code-region","()")), -Annotation(Region(0x1190,0x1239), Attr("symbol-info","main 0x1190 170")), -Annotation(Region(0x123C,0x1244), Attr("section","\".fini\"")), -Annotation(Region(0x123C,0x1244), Attr("code-region","()")), -Annotation(Region(0x2000,0x20DB), Attr("segment","04 0x2000 220")), -Annotation(Region(0x2004,0x202F), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x2030,0x20DB), Attr("section","\".eh_frame\"")), -Annotation(Region(0x2000,0x2003), Attr("section","\".rodata\"")), -Annotation(Region(0x3DD0,0x404B), Attr("segment","05 0x3DD0 656")), -Annotation(Region(0x3DD8,0x3DDF), Attr("section","\".fini_array\"")), -Annotation(Region(0x3DE0,0x3FBF), Attr("section","\".dynamic\"")), -Annotation(Region(0x3DD0,0x3DD7), Attr("section","\".init_array\"")), -Annotation(Region(0x3FC0,0x3FE7), Attr("section","\".got\"")), -Annotation(Region(0x3FE8,0x402F), Attr("section","\".got.plt\"")), -Annotation(Region(0x4030,0x404B), Attr("section","\".data\""))]), -Program(Tid(3_025, "%00000bd1"), Attrs([]), - Subs([Sub(Tid(2_865, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1090"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(3_026, "%00000bd2"), +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 2492 20 2492)\n(code-region 2048 444 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 168)\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 2492 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 2492 20)\n(llvm:code-entry .text 2048 444)\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 2516 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 2776)\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 2516 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 2776)\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 2576 200 2576)\n(llvm:section-entry .eh_frame_hdr 2516 60 2516)\n(llvm:section-entry .rodata 2512 4 2512)\n(llvm:section-entry .fini 2492 20 2492)\n(llvm:section-entry .text 2048 444 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 168 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 2492 0 2492 2492)\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 2776 0)\n(mapped 130488 692 64952)\n(named-region 0 2776 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 444 .text)\n(named-region 2492 20 .fini)\n(named-region 2512 4 .rodata)\n(named-region 2516 60 .eh_frame_hdr)\n(named-region 2576 200 .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 2492 _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 444)\n(section 2492 20)\n(section 2512 4)\n(section 2516 60)\n(section 2576 200)\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 2776 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 168 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 2492 2492)\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e"), +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", 0x9BC, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9D0, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9D4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x2c\xfe\xff\xff\x50\x00\x00\x00\x7c\xfe\xff\xff\x64\x00\x00\x00\xac\xfe\xff\xff\x78\x00\x00\x00\xec\xfe\xff\xff\x8c\x00\x00\x00\x3c\xff\xff\xff\xb0\x00\x00\x00\x40\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0xA10, "\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\xd4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x10\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x2c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x58\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\x84\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\x24\x00\x00\x00\x18\x00\x00\x00\x60\xfe\xff\xff\xa8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x90\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\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\xbc\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x80\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x9d\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x79\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x85\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x92\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xAD7), Attr("segment","02 0 2776")), +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,0x9BB), Attr("symbol","\"main\"")), +Annotation(Region(0x914,0x9BB), Attr("symbol-info","main 0x914 168")), +Annotation(Region(0x9BC,0x9CF), Attr("section","\".fini\"")), +Annotation(Region(0x9D0,0x9D3), Attr("section","\".rodata\"")), +Annotation(Region(0x9D4,0xA0F), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA10,0xAD7), 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,0x9BB), Attr("section","\".text\"")), +Annotation(Region(0x800,0x9BB), Attr("code-region","()")), +Annotation(Region(0x9BC,0x9CF), Attr("code-region","()"))]), +Program(Tid(2_333, "%0000091d"), Attrs([]), + Subs([Sub(Tid(2_262, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_334, "%0000091e"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("__cxa_finalize_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(2_154, "@__cxa_finalize"), Attrs([Attr("address","0x1090")]), - Phis([]), Defs([]), Jmps([Call(Tid(2_862, "%00000b2e"), - Attrs([Attr("address","0x1090"), Attr("insn","jmpq *0x2f4a(%rip)")]), - Int(1,1), (Direct(Tid(2_860, "@__cxa_finalize:external")),))]))])), -Sub(Tid(2_866, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1140")]), - "__do_global_dtors_aux", Args([Arg(Tid(3_027, "%00000bd3"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_299, "@__cxa_finalize"), + Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_727, "%000006bf"), 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_734, "%000006c6"), 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_739, "%000006cb"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_263, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_335, "%0000091f"), 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("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(1_293, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x1140")]), Phis([]), -Defs([Def(Tid(1_317, "%00000525"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("#12582884",Imm(8)), -Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8)), -Def(Tid(1_321, "%00000529"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("CF",Imm(1)), -LT(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),Int(0,8))), -Def(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("OF",Imm(1)), -HIGH(1,AND(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),XOR(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),Var("#12582884",Imm(8)))))), -Def(Tid(1_332, "%00000534"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("AF",Imm(1)), -EQ(Int(16,8),AND(Int(16,8),XOR(Var("#12582884",Imm(8)),Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8))))), -Def(Tid(1_337, "%00000539"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(8)),XOR(RSHIFT(Var("#12582884",Imm(8)),Int(4,8)),Var("#12582884",Imm(8))),Let(Var("$1",Imm(8)),XOR(RSHIFT(Var("$0",Imm(8)),Int(2,8)),Var("$0",Imm(8))),XOR(RSHIFT(Var("$1",Imm(8)),Int(1,8)),Var("$1",Imm(8)))))))), -Def(Tid(1_341, "%0000053d"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582884",Imm(8)))), Def(Tid(1_345, "%00000541"), - Attrs([Attr("address","0x1144"), Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), - Var("ZF",Imm(1)), EQ(Int(0,8),Var("#12582884",Imm(8))))]), -Jmps([Goto(Tid(1_352, "%00000548"), Attrs([Attr("address","0x114B"), -Attr("insn","jne 0x2b")]), NOT(Var("ZF",Imm(1))), -Direct(Tid(1_349, "%00000545"))), Goto(Tid(3_017, "%00000bc9"), Attrs([]), - Int(1,1), Direct(Tid(1_981, "%000007bd")))])), Blk(Tid(1_349, "%00000545"), - Attrs([Attr("address","0x1178")]), Phis([]), -Defs([Def(Tid(1_366, "%00000556"), Attrs([Attr("address","0x1178"), -Attr("insn","retq")]), Var("#12582882",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(1_370, "%0000055a"), Attrs([Attr("address","0x1178"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_373, "%0000055d"), - Attrs([Attr("address","0x1178"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582882",Imm(64))),))])), Blk(Tid(1_981, "%000007bd"), - Attrs([Attr("address","0x114D")]), Phis([]), -Defs([Def(Tid(1_993, "%000007c9"), Attrs([Attr("address","0x114D"), -Attr("insn","pushq %rbp")]), Var("#12582870",Imm(64)), Var("RBP",Imm(64))), -Def(Tid(1_997, "%000007cd"), Attrs([Attr("address","0x114D"), -Attr("insn","pushq %rbp")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_003, "%000007d3"), - Attrs([Attr("address","0x114D"), Attr("insn","pushq %rbp")]), +LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(794, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(801, "%00000321"), + Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(806, "%00000326"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#34",Imm(64))), Def(Tid(822, "%00000336"), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(830, "%0000033e"), + Attrs([Attr("address","0x8C8"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582870",Imm(64)),LittleEndian(),64)), -Def(Tid(2_027, "%000007eb"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("#12582869",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64)), -Def(Tid(2_031, "%000007ef"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("CF",Imm(1)), -LT(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),Int(0,64))), -Def(Tid(2_037, "%000007f5"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("OF",Imm(1)), -HIGH(1,AND(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),XOR(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),Var("#12582869",Imm(64)))))), -Def(Tid(2_042, "%000007fa"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(Var("#12582869",Imm(64)),Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64))))), -Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582869",Imm(64)),Int(4,64)),Var("#12582869",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_051, "%00000803"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582869",Imm(64)))), Def(Tid(2_055, "%00000807"), - Attrs([Attr("address","0x114E"), Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582869",Imm(64)))), -Def(Tid(2_063, "%0000080f"), Attrs([Attr("address","0x1156"), -Attr("insn","movq %rsp, %rbp")]), Var("RBP",Imm(64)), Var("RSP",Imm(64)))]), -Jmps([Goto(Tid(2_070, "%00000816"), Attrs([Attr("address","0x1159"), -Attr("insn","je 0xc")]), Var("ZF",Imm(1)), Direct(Tid(2_067, "%00000813"))), -Goto(Tid(3_018, "%00000bca"), Attrs([]), Int(1,1), -Direct(Tid(2_140, "%0000085c")))])), Blk(Tid(2_140, "%0000085c"), - Attrs([Attr("address","0x115B")]), Phis([]), -Defs([Def(Tid(2_146, "%00000862"), Attrs([Attr("address","0x115B"), -Attr("insn","movq 0x2ed6(%rip), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16440,64),LittleEndian(),64)), -Def(Tid(2_158, "%0000086e"), Attrs([Attr("address","0x1162"), -Attr("insn","callq -0xd7")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_163, "%00000873"), - Attrs([Attr("address","0x1162"), Attr("insn","callq -0xd7")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4455,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_165, "%00000875"), Attrs([Attr("address","0x1162"), -Attr("insn","callq -0xd7")]), Int(1,1), -(Direct(Tid(2_865, "@__cxa_finalize")),Direct(Tid(2_067, "%00000813"))))])), -Blk(Tid(2_067, "%00000813"), Attrs([Attr("address","0x1167")]), Phis([]), -Defs([Def(Tid(2_082, "%00000822"), Attrs([Attr("address","0x1167"), -Attr("insn","callq -0x9c")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_087, "%00000827"), - Attrs([Attr("address","0x1167"), Attr("insn","callq -0x9c")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4460,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_089, "%00000829"), Attrs([Attr("address","0x1167"), -Attr("insn","callq -0x9c")]), Int(1,1), -(Direct(Tid(2_874, "@deregister_tm_clones")),Direct(Tid(2_091, "%0000082b"))))])), -Blk(Tid(2_091, "%0000082b"), Attrs([Attr("address","0x116C")]), Phis([]), -Defs([Def(Tid(2_097, "%00000831"), Attrs([Attr("address","0x116C"), -Attr("insn","movb $0x1, 0x2edd(%rip)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Int(16464,64),Int(1,8),LittleEndian(),8)), -Def(Tid(2_109, "%0000083d"), Attrs([Attr("address","0x1173"), -Attr("insn","popq %rbp")]), Var("RBP",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(2_113, "%00000841"), Attrs([Attr("address","0x1173"), -Attr("insn","popq %rbp")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_126, "%0000084e"), - Attrs([Attr("address","0x1174"), Attr("insn","retq")]), - Var("#12582867",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(2_130, "%00000852"), Attrs([Attr("address","0x1174"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(2_133, "%00000855"), - Attrs([Attr("address","0x1174"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582867",Imm(64))),))]))])), Sub(Tid(2_869, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x123C")]), - "_fini", Args([Arg(Tid(3_028, "%00000bd4"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(836, "%00000344"), Attrs([Attr("address","0x8CC"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x8D0"), +Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), +Def(Tid(857, "%00000359"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(849, "%00000351"))), Goto(Tid(2_323, "%00000913"), Attrs([]), + Int(1,1), Direct(Tid(1_233, "%000004d1")))])), Blk(Tid(1_233, "%000004d1"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8D8"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_245, "%000004dd"), 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)), +Def(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_251, "%000004e3"), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), + Var("#67",Imm(1)), Direct(Tid(1_249, "%000004e1"))), +Goto(Tid(2_324, "%00000914"), Attrs([]), Int(1,1), +Direct(Tid(1_281, "%00000501")))])), Blk(Tid(1_281, "%00000501"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x8E4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_293, "%0000050d"), 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_298, "%00000512"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_301, "%00000515"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Int(1,1), +(Direct(Tid(2_262, "@__cxa_finalize")),Direct(Tid(1_249, "%000004e1"))))])), +Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_276, "@deregister_tm_clones")),Direct(Tid(1_266, "%000004f2"))))])), +Blk(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8F4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_279, "%000004ff"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_325, "%00000915"), Attrs([]), Int(1,1), +Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(865, "%00000361"), + 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(875, "%0000036b"), 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(879, "%0000036f"), 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(882, "%00000372"), 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(887, "%00000377"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_267, "@__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_336, "%00000920"), + 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_337, "%00000921"), 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_338, "%00000922"), 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_339, "%00000923"), 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_340, "%00000924"), 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(606, "@__libc_start_main"), + Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_694, "%0000069e"), 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, #0x10]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R16",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_709, "%000006ad"), 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_714, "%000006b2"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_268, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9BC")]), + "_fini", Args([Arg(Tid(2_341, "%00000925"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("_fini_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(21, "@_fini"), - Attrs([Attr("address","0x123C")]), Phis([]), Defs([Def(Tid(56, "%00000038"), - Attrs([Attr("address","0x123C"), Attr("insn","subq $0x8, %rsp")]), - Var("#12582911",Imm(64)), Var("RSP",Imm(64))), Def(Tid(60, "%0000003c"), - Attrs([Attr("address","0x123C"), Attr("insn","subq $0x8, %rsp")]), - Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(8,64))), -Def(Tid(64, "%00000040"), Attrs([Attr("address","0x123C"), -Attr("insn","subq $0x8, %rsp")]), Var("CF",Imm(1)), -LT(Var("#12582911",Imm(64)),Int(8,64))), Def(Tid(70, "%00000046"), - Attrs([Attr("address","0x123C"), Attr("insn","subq $0x8, %rsp")]), - Var("OF",Imm(1)), -HIGH(1,AND(XOR(Var("#12582911",Imm(64)),Int(8,64)),XOR(Var("#12582911",Imm(64)),Var("RSP",Imm(64)))))), -Def(Tid(75, "%0000004b"), Attrs([Attr("address","0x123C"), -Attr("insn","subq $0x8, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582911",Imm(64))),Int(8,64))))), -Def(Tid(80, "%00000050"), Attrs([Attr("address","0x123C"), -Attr("insn","subq $0x8, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(84, "%00000054"), Attrs([Attr("address","0x123C"), -Attr("insn","subq $0x8, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(88, "%00000058"), - Attrs([Attr("address","0x123C"), Attr("insn","subq $0x8, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(117, "%00000075"), Attrs([Attr("address","0x1240"), -Attr("insn","addq $0x8, %rsp")]), Var("#12582908",Imm(64)), -Var("RSP",Imm(64))), Def(Tid(121, "%00000079"), - Attrs([Attr("address","0x1240"), Attr("insn","addq $0x8, %rsp")]), - Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(8,64))), -Def(Tid(126, "%0000007e"), Attrs([Attr("address","0x1240"), -Attr("insn","addq $0x8, %rsp")]), Var("CF",Imm(1)), -LT(Var("RSP",Imm(64)),Var("#12582908",Imm(64)))), Def(Tid(134, "%00000086"), - Attrs([Attr("address","0x1240"), Attr("insn","addq $0x8, %rsp")]), - Var("OF",Imm(1)), -AND(EQ(HIGH(1,Var("#12582908",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582908",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582908",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), -Def(Tid(139, "%0000008b"), Attrs([Attr("address","0x1240"), -Attr("insn","addq $0x8, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582908",Imm(64))),Int(8,64))))), -Def(Tid(144, "%00000090"), Attrs([Attr("address","0x1240"), -Attr("insn","addq $0x8, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(148, "%00000094"), Attrs([Attr("address","0x1240"), -Attr("insn","addq $0x8, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(152, "%00000098"), - Attrs([Attr("address","0x1240"), Attr("insn","addq $0x8, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(165, "%000000a5"), Attrs([Attr("address","0x1244"), -Attr("insn","retq")]), Var("#12582905",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(169, "%000000a9"), Attrs([Attr("address","0x1244"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(172, "%000000ac"), - Attrs([Attr("address","0x1244"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582905",Imm(64))),))]))])), Sub(Tid(2_870, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1000")]), - "_init", Args([Arg(Tid(3_029, "%00000bd5"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(32, "@_fini"), + Attrs([Attr("address","0x9BC")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9C0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9C0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9C0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9C0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9C4"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9C8"), +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(76, "%0000004c"), Attrs([Attr("address","0x9C8"), +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(79, "%0000004f"), Attrs([Attr("address","0x9C8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0x9CC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_269, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), + "_init", Args([Arg(Tid(2_342, "%00000926"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("_init_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(2_625, "@_init"), - Attrs([Attr("address","0x1000")]), Phis([]), -Defs([Def(Tid(2_649, "%00000a59"), Attrs([Attr("address","0x1000"), -Attr("insn","subq $0x8, %rsp")]), Var("#12582855",Imm(64)), -Var("RSP",Imm(64))), Def(Tid(2_653, "%00000a5d"), - Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), - Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(8,64))), -Def(Tid(2_657, "%00000a61"), Attrs([Attr("address","0x1000"), -Attr("insn","subq $0x8, %rsp")]), Var("CF",Imm(1)), -LT(Var("#12582855",Imm(64)),Int(8,64))), Def(Tid(2_663, "%00000a67"), - Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), - Var("OF",Imm(1)), -HIGH(1,AND(XOR(Var("#12582855",Imm(64)),Int(8,64)),XOR(Var("#12582855",Imm(64)),Var("RSP",Imm(64)))))), -Def(Tid(2_668, "%00000a6c"), Attrs([Attr("address","0x1000"), -Attr("insn","subq $0x8, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582855",Imm(64))),Int(8,64))))), -Def(Tid(2_673, "%00000a71"), Attrs([Attr("address","0x1000"), -Attr("insn","subq $0x8, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_677, "%00000a75"), Attrs([Attr("address","0x1000"), -Attr("insn","subq $0x8, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(2_681, "%00000a79"), - Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(2_689, "%00000a81"), Attrs([Attr("address","0x1004"), -Attr("insn","movq 0x2fc5(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16336,64),LittleEndian(),64)), -Def(Tid(2_707, "%00000a93"), Attrs([Attr("address","0x100B"), -Attr("insn","testq %rax, %rax")]), Var("#12582852",Imm(64)), -Var("RAX",Imm(64))), Def(Tid(2_710, "%00000a96"), - Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), - Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_713, "%00000a99"), - Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), - Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_716, "%00000a9c"), - Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), - Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_721, "%00000aa1"), - Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), - Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582852",Imm(64)),Int(4,64)),Var("#12582852",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_725, "%00000aa5"), Attrs([Attr("address","0x100B"), -Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582852",Imm(64)))), Def(Tid(2_729, "%00000aa9"), - Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582852",Imm(64))))]), -Jmps([Goto(Tid(2_736, "%00000ab0"), Attrs([Attr("address","0x100E"), -Attr("insn","je 0x2")]), Var("ZF",Imm(1)), Direct(Tid(2_733, "%00000aad"))), -Goto(Tid(3_019, "%00000bcb"), Attrs([]), Int(1,1), -Direct(Tid(2_823, "%00000b07")))])), Blk(Tid(2_823, "%00000b07"), - Attrs([Attr("address","0x1010")]), Phis([]), -Defs([Def(Tid(2_835, "%00000b13"), Attrs([Attr("address","0x1010"), -Attr("insn","callq *%rax")]), Var("#12582846",Imm(64)), Var("RAX",Imm(64))), -Def(Tid(2_839, "%00000b17"), Attrs([Attr("address","0x1010"), -Attr("insn","callq *%rax")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_844, "%00000b1c"), - Attrs([Attr("address","0x1010"), Attr("insn","callq *%rax")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4114,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_847, "%00000b1f"), Attrs([Attr("address","0x1010"), -Attr("insn","callq *%rax")]), Int(1,1), -(Indirect(Var("#12582846",Imm(64))),Direct(Tid(2_733, "%00000aad"))))])), -Blk(Tid(2_733, "%00000aad"), Attrs([Attr("address","0x1012")]), Phis([]), -Defs([Def(Tid(2_766, "%00000ace"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("#12582850",Imm(64)), -Var("RSP",Imm(64))), Def(Tid(2_770, "%00000ad2"), - Attrs([Attr("address","0x1012"), Attr("insn","addq $0x8, %rsp")]), - Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(8,64))), -Def(Tid(2_775, "%00000ad7"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("CF",Imm(1)), -LT(Var("RSP",Imm(64)),Var("#12582850",Imm(64)))), -Def(Tid(2_783, "%00000adf"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("OF",Imm(1)), -AND(EQ(HIGH(1,Var("#12582850",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582850",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582850",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), -Def(Tid(2_788, "%00000ae4"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582850",Imm(64))),Int(8,64))))), -Def(Tid(2_793, "%00000ae9"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_797, "%00000aed"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(2_801, "%00000af1"), - Attrs([Attr("address","0x1012"), Attr("insn","addq $0x8, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(2_814, "%00000afe"), Attrs([Attr("address","0x1016"), -Attr("insn","retq")]), Var("#12582847",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(2_818, "%00000b02"), Attrs([Attr("address","0x1016"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(2_821, "%00000b05"), - Attrs([Attr("address","0x1016"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582847",Imm(64))),))]))])), Sub(Tid(2_872, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x10A0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(3_030, "%00000bd6"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(2_035, "@_init"), + Attrs([Attr("address","0x728")]), Phis([]), +Defs([Def(Tid(2_044, "%000007fc"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#98",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(2_049, "%00000801"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#98",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(2_054, "%00000806"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#98",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(2_058, "%0000080a"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#98",Imm(64))), Def(Tid(2_065, "%00000811"), + Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_070, "%00000816"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(2_072, "%00000818"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), +(Direct(Tid(2_274, "@call_weak_fn")),Direct(Tid(2_074, "%0000081a"))))])), +Blk(Tid(2_074, "%0000081a"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(2_082, "%00000822"), 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(2_086, "%00000826"), 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(2_089, "%00000829"), 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(2_094, "%0000082e"), + Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_270, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("stub","()"), Attr("entry-point","()")]), "_start", + Args([Arg(Tid(2_343, "%00000927"), 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(532, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(538, "%0000021a"), Attrs([Attr("address","0x804"), +Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), +Def(Tid(544, "%00000220"), Attrs([Attr("address","0x808"), +Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), +Def(Tid(552, "%00000228"), Attrs([Attr("address","0x80C"), +Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), +Def(Tid(560, "%00000230"), 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(567, "%00000237"), Attrs([Attr("address","0x814"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(574, "%0000023e"), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(580, "%00000244"), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(588, "%0000024c"), + 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(594, "%00000252"), Attrs([Attr("address","0x824"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(600, "%00000258"), Attrs([Attr("address","0x828"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(605, "%0000025d"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(608, "%00000260"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Int(1,1), +(Direct(Tid(2_267, "@__libc_start_main")),Direct(Tid(610, "%00000262"))))])), +Blk(Tid(610, "%00000262"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(613, "%00000265"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Int(1,1), +(Direct(Tid(2_273, "@abort")),Direct(Tid(2_326, "%00000916"))))])), +Blk(Tid(2_326, "%00000916"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_327, "%00000917"), Attrs([]), Int(1,1), +(Direct(Tid(2_274, "@call_weak_fn")),))]))])), Sub(Tid(2_273, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(614, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_827, "%00000723"), 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_834, "%0000072a"), 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_839, "%0000072f"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_274, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_344, "%00000928"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("_start_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(586, "@_start"), - Attrs([Attr("address","0x10A0")]), Phis([]), -Defs([Def(Tid(596, "%00000254"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("RBP",Imm(64)), Int(0,64)), -Def(Tid(599, "%00000257"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(602, "%0000025a"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("ZF",Imm(1)), Int(1,1)), -Def(Tid(605, "%0000025d"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("PF",Imm(1)), Int(1,1)), -Def(Tid(608, "%00000260"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("OF",Imm(1)), Int(0,1)), -Def(Tid(611, "%00000263"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("CF",Imm(1)), Int(0,1)), -Def(Tid(614, "%00000266"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("SF",Imm(1)), Int(0,1)), -Def(Tid(622, "%0000026e"), Attrs([Attr("address","0x10A2"), -Attr("insn","movq %rdx, %r9")]), Var("R9",Imm(64)), Var("RDX",Imm(64))), -Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x10A5"), -Attr("insn","popq %rsi")]), Var("RSI",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(638, "%0000027e"), Attrs([Attr("address","0x10A5"), -Attr("insn","popq %rsi")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(646, "%00000286"), - Attrs([Attr("address","0x10A6"), Attr("insn","movq %rsp, %rdx")]), - Var("RDX",Imm(64)), Var("RSP",Imm(64))), Def(Tid(664, "%00000298"), - Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), - Var("RSP",Imm(64)), AND(Var("RSP",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(667, "%0000029b"), Attrs([Attr("address","0x10A9"), -Attr("insn","andq $-0x10, %rsp")]), Var("OF",Imm(1)), Int(0,1)), -Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x10A9"), -Attr("insn","andq $-0x10, %rsp")]), Var("CF",Imm(1)), Int(0,1)), -Def(Tid(673, "%000002a1"), Attrs([Attr("address","0x10A9"), -Attr("insn","andq $-0x10, %rsp")]), Var("AF",Imm(1)), -Unknown("bits",Imm(1))), Def(Tid(678, "%000002a6"), - Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), - Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(682, "%000002aa"), Attrs([Attr("address","0x10A9"), -Attr("insn","andq $-0x10, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(686, "%000002ae"), - Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x10AD"), -Attr("insn","pushq %rax")]), Var("#12582903",Imm(64)), Var("RAX",Imm(64))), -Def(Tid(704, "%000002c0"), Attrs([Attr("address","0x10AD"), -Attr("insn","pushq %rax")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(710, "%000002c6"), - Attrs([Attr("address","0x10AD"), Attr("insn","pushq %rax")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582903",Imm(64)),LittleEndian(),64)), -Def(Tid(724, "%000002d4"), Attrs([Attr("address","0x10AE"), -Attr("insn","pushq %rsp")]), Var("#12582902",Imm(64)), Var("RSP",Imm(64))), -Def(Tid(728, "%000002d8"), Attrs([Attr("address","0x10AE"), -Attr("insn","pushq %rsp")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(734, "%000002de"), - Attrs([Attr("address","0x10AE"), Attr("insn","pushq %rsp")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582902",Imm(64)),LittleEndian(),64)), -Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("R8",Imm(64)), Int(0,64)), -Def(Tid(749, "%000002ed"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(752, "%000002f0"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("ZF",Imm(1)), Int(1,1)), -Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("PF",Imm(1)), Int(1,1)), -Def(Tid(758, "%000002f6"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("OF",Imm(1)), Int(0,1)), -Def(Tid(761, "%000002f9"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("CF",Imm(1)), Int(0,1)), -Def(Tid(764, "%000002fc"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("SF",Imm(1)), Int(0,1)), -Def(Tid(776, "%00000308"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("RCX",Imm(64)), Int(0,64)), -Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(782, "%0000030e"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("ZF",Imm(1)), Int(1,1)), -Def(Tid(785, "%00000311"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("PF",Imm(1)), Int(1,1)), -Def(Tid(788, "%00000314"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("OF",Imm(1)), Int(0,1)), -Def(Tid(791, "%00000317"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("CF",Imm(1)), Int(0,1)), -Def(Tid(794, "%0000031a"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("SF",Imm(1)), Int(0,1)), -Def(Tid(800, "%00000320"), Attrs([Attr("address","0x10B4"), -Attr("insn","leaq 0xd5(%rip), %rdi")]), Var("RDI",Imm(64)), Int(4496,64)), -Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x10BB"), -Attr("insn","callq *0x2eff(%rip)")]), Var("#12582901",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16320,64),LittleEndian(),64)), -Def(Tid(818, "%00000332"), Attrs([Attr("address","0x10BB"), -Attr("insn","callq *0x2eff(%rip)")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(823, "%00000337"), - Attrs([Attr("address","0x10BB"), Attr("insn","callq *0x2eff(%rip)")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4289,64),LittleEndian(),64))]), -Jmps([Call(Tid(826, "%0000033a"), Attrs([Attr("address","0x10BB"), -Attr("insn","callq *0x2eff(%rip)")]), Int(1,1), -(Direct(Tid(824, "@__libc_start_main")),Direct(Tid(828, "%0000033c"))))])), -Blk(Tid(828, "%0000033c"), Attrs([Attr("address","0x10C1")]), Phis([]), -Defs([]), Jmps([Call(Tid(831, "%0000033f"), Attrs([Attr("address","0x10C1"), -Attr("insn","hlt")]), Int(1,1), -(Direct(Tid(829, "@intrinsic:hlt")),Direct(Tid(833, "%00000341"))))])), -Blk(Tid(833, "%00000341"), Attrs([Attr("address","0x10C2")]), Phis([]), -Defs([]), Jmps([Call(Tid(3_020, "%00000bcc"), Attrs([]), Int(1,1), -(Direct(Tid(2_874, "@deregister_tm_clones")),))]))])), -Sub(Tid(2_874, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x10D0")]), - "deregister_tm_clones", Args([Arg(Tid(3_031, "%00000bd7"), +Attr("c.type","signed")]), Var("call_weak_fn_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(618, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(622, "%0000026e"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(630, "%00000276"), + 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)), +Def(Tid(642, "%00000282"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(636, "%0000027c"), + Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(634, "%0000027a"))), +Goto(Tid(2_328, "%00000918"), Attrs([]), Int(1,1), +Direct(Tid(1_381, "%00000565")))])), Blk(Tid(634, "%0000027a"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(647, "%00000287"), Attrs([Attr("address","0x844"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_381, "%00000565"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_384, "%00000568"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0x80")]), Int(1,1), +Direct(Tid(1_382, "@__gmon_start__")))])), Blk(Tid(1_382, "@__gmon_start__"), + Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x7C0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_802, "%0000070a"), 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_809, "%00000711"), 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_814, "%00000716"), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_276, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_345, "%00000929"), 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("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(843, "@deregister_tm_clones"), - Attrs([Attr("address","0x10D0")]), Phis([]), -Defs([Def(Tid(847, "%0000034f"), Attrs([Attr("address","0x10D0"), -Attr("insn","leaq 0x2f79(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16464,64)), -Def(Tid(853, "%00000355"), Attrs([Attr("address","0x10D7"), -Attr("insn","leaq 0x2f72(%rip), %rax")]), Var("RAX",Imm(64)), Int(16464,64)), -Def(Tid(882, "%00000372"), Attrs([Attr("address","0x10DE"), -Attr("insn","cmpq %rdi, %rax")]), Var("#12582900",Imm(64)), -MINUS(Var("RAX",Imm(64)),Var("RDI",Imm(64)))), Def(Tid(887, "%00000377"), - Attrs([Attr("address","0x10DE"), Attr("insn","cmpq %rdi, %rax")]), - Var("CF",Imm(1)), LT(Var("RAX",Imm(64)),Var("RDI",Imm(64)))), -Def(Tid(894, "%0000037e"), Attrs([Attr("address","0x10DE"), -Attr("insn","cmpq %rdi, %rax")]), Var("OF",Imm(1)), -HIGH(1,AND(XOR(Var("RAX",Imm(64)),Var("RDI",Imm(64))),XOR(Var("RAX",Imm(64)),Var("#12582900",Imm(64)))))), -Def(Tid(900, "%00000384"), Attrs([Attr("address","0x10DE"), -Attr("insn","cmpq %rdi, %rax")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("#12582900",Imm(64)),Var("RAX",Imm(64))),Var("RDI",Imm(64)))))), -Def(Tid(905, "%00000389"), Attrs([Attr("address","0x10DE"), -Attr("insn","cmpq %rdi, %rax")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582900",Imm(64)),Int(4,64)),Var("#12582900",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(909, "%0000038d"), Attrs([Attr("address","0x10DE"), -Attr("insn","cmpq %rdi, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582900",Imm(64)))), Def(Tid(913, "%00000391"), - Attrs([Attr("address","0x10DE"), Attr("insn","cmpq %rdi, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582900",Imm(64))))]), -Jmps([Goto(Tid(920, "%00000398"), Attrs([Attr("address","0x10E1"), -Attr("insn","je 0x15")]), Var("ZF",Imm(1)), Direct(Tid(917, "%00000395"))), -Goto(Tid(3_021, "%00000bcd"), Attrs([]), Int(1,1), -Direct(Tid(2_234, "%000008ba")))])), Blk(Tid(2_234, "%000008ba"), - Attrs([Attr("address","0x10E3")]), Phis([]), -Defs([Def(Tid(2_240, "%000008c0"), Attrs([Attr("address","0x10E3"), -Attr("insn","movq 0x2ede(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16328,64),LittleEndian(),64)), -Def(Tid(2_258, "%000008d2"), Attrs([Attr("address","0x10EA"), -Attr("insn","testq %rax, %rax")]), Var("#12582864",Imm(64)), -Var("RAX",Imm(64))), Def(Tid(2_261, "%000008d5"), - Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), - Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_264, "%000008d8"), - Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), - Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_267, "%000008db"), - Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), - Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_272, "%000008e0"), - Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), - Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582864",Imm(64)),Int(4,64)),Var("#12582864",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_276, "%000008e4"), Attrs([Attr("address","0x10EA"), -Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582864",Imm(64)))), Def(Tid(2_280, "%000008e8"), - Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582864",Imm(64))))]), -Jmps([Goto(Tid(2_286, "%000008ee"), Attrs([Attr("address","0x10ED"), -Attr("insn","je 0x9")]), Var("ZF",Imm(1)), Direct(Tid(917, "%00000395"))), -Goto(Tid(3_022, "%00000bce"), Attrs([]), Int(1,1), -Direct(Tid(2_290, "%000008f2")))])), Blk(Tid(917, "%00000395"), - Attrs([Attr("address","0x10F8")]), Phis([]), -Defs([Def(Tid(934, "%000003a6"), Attrs([Attr("address","0x10F8"), -Attr("insn","retq")]), Var("#12582898",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(938, "%000003aa"), Attrs([Attr("address","0x10F8"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(941, "%000003ad"), - Attrs([Attr("address","0x10F8"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582898",Imm(64))),))])), Blk(Tid(2_290, "%000008f2"), - Attrs([Attr("address","0x10EF")]), Phis([]), Defs([]), -Jmps([Call(Tid(2_294, "%000008f6"), Attrs([Attr("address","0x10EF"), -Attr("insn","jmpq *%rax")]), Int(1,1), -(Indirect(Var("RAX",Imm(64))),))]))])), Sub(Tid(2_877, "@frame_dummy"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1180")]), - "frame_dummy", Args([Arg(Tid(3_032, "%00000bd8"), +LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(653, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(657, "%00000291"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(664, "%00000298"), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x858"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(677, "%000002a5"), Attrs([Attr("address","0x85C"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(685, "%000002ad"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(689, "%000002b1"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(692, "%000002b4"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(698, "%000002ba"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(712, "%000002c8"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(706, "%000002c2"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(704, "%000002c0"))), Goto(Tid(2_329, "%00000919"), Attrs([]), + Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(1_342, "%0000053e"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_346, "%00000542"), Attrs([Attr("address","0x868"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_354, "%0000054a"), 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)), +Def(Tid(1_365, "%00000555"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_359, "%0000054f"), + Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), + Var("#75",Imm(1)), Direct(Tid(704, "%000002c0"))), +Goto(Tid(2_330, "%0000091a"), Attrs([]), Int(1,1), +Direct(Tid(1_368, "%00000558")))])), Blk(Tid(704, "%000002c0"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(717, "%000002cd"), Attrs([Attr("address","0x87C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_368, "%00000558"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_374, "%0000055e"), Attrs([Attr("address","0x874"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_379, "%00000563"), Attrs([Attr("address","0x878"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_279, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_346, "%0000092a"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("frame_dummy_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(1_380, "@frame_dummy"), - Attrs([Attr("address","0x1180")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_384, "%00000568"), Attrs([Attr("address","0x1184"), -Attr("insn","jmp -0x89")]), Int(1,1), -(Direct(Tid(2_885, "@register_tm_clones")),))]))])), Sub(Tid(2_878, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x1030"), -Attr("stub","()")]), "free", Args([Arg(Tid(3_033, "%00000bd9"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(893, "@frame_dummy"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(895, "%0000037f"), Attrs([Attr("address","0x910"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_286, "@register_tm_clones")),))]))])), Sub(Tid(2_280, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_347, "%0000092b"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), -Attr("c.type","void*")]), Var("free_ptr",Imm(64)), Var("RDI",Imm(64)), -Both())]), Blks([Blk(Tid(1_838, "@free"), Attrs([Attr("address","0x1030")]), - Phis([]), Defs([]), Jmps([Call(Tid(2_453, "%00000995"), - Attrs([Attr("address","0x1030"), Attr("insn","jmpq *0x2fca(%rip)")]), - Int(1,1), -(Direct(Tid(2_451, "@free:external")),Direct(Tid(2_455, "%00000997"))))])), -Blk(Tid(2_455, "%00000997"), Attrs([Attr("address","0x1036")]), Phis([]), -Defs([Def(Tid(2_464, "%000009a0"), Attrs([Attr("address","0x1036"), -Attr("insn","pushq $0x0")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_469, "%000009a5"), - Attrs([Attr("address","0x1036"), Attr("insn","pushq $0x0")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(0,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_473, "%000009a9"), Attrs([Attr("address","0x103B"), -Attr("insn","jmp -0x20")]), Int(1,1), -(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), -Sub(Tid(2_879, "@free@plt-0x10"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x1020"), Attr("stub","()")]), "free@plt-0x10", - Args([Arg(Tid(3_034, "%00000bda"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("free@plt-0x10_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(2_415, "@free@plt-0x10"), Attrs([Attr("address","0x1020")]), - Phis([]), Defs([Def(Tid(2_427, "%0000097b"), - Attrs([Attr("address","0x1020"), Attr("insn","pushq 0x2fca(%rip)")]), - Var("#12582862",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16368,64),LittleEndian(),64)), -Def(Tid(2_431, "%0000097f"), Attrs([Attr("address","0x1020"), -Attr("insn","pushq 0x2fca(%rip)")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_437, "%00000985"), - Attrs([Attr("address","0x1020"), Attr("insn","pushq 0x2fca(%rip)")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582862",Imm(64)),LittleEndian(),64))]), -Jmps([Call(Tid(2_443, "%0000098b"), Attrs([Attr("address","0x1026"), -Attr("insn","jmpq *0x2fcc(%rip)")]), Int(1,1), -(Indirect(Load(Var("mem",Mem(64,8)),Int(16376,64),LittleEndian(),64)),))]))])), -Sub(Tid(2_880, "@main"), +Attr("c.type","void*")]), Var("free_ptr",Imm(64)), Var("R0",Imm(64)), +Both())]), Blks([Blk(Tid(1_195, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x7F0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_877, "%00000755"), 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_884, "%0000075c"), 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_889, "%00000761"), + Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_281, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x1190")]), "main", Args([Arg(Tid(3_035, "%00000bdb"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_348, "%0000092c"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("main_argc",Imm(32)), -LOW(32,Var("RDI",Imm(64))), In()), Arg(Tid(3_036, "%00000bdc"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_349, "%0000092d"), Attrs([Attr("c.layout","**[char : 8]"), Attr("c.data","Top:u8 ptr ptr"), Attr("c.type"," const char**")]), Var("main_argv",Imm(64)), -Var("RSI",Imm(64)), Both()), Arg(Tid(3_037, "%00000bdd"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_350, "%0000092e"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("main_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(1_391, "@main"), - Attrs([Attr("address","0x1190")]), Phis([]), -Defs([Def(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x1190"), -Attr("insn","pushq %rbp")]), Var("#12582881",Imm(64)), Var("RBP",Imm(64))), -Def(Tid(1_407, "%0000057f"), Attrs([Attr("address","0x1190"), -Attr("insn","pushq %rbp")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_413, "%00000585"), - Attrs([Attr("address","0x1190"), Attr("insn","pushq %rbp")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582881",Imm(64)),LittleEndian(),64)), -Def(Tid(1_421, "%0000058d"), Attrs([Attr("address","0x1191"), -Attr("insn","movq %rsp, %rbp")]), Var("RBP",Imm(64)), Var("RSP",Imm(64))), -Def(Tid(1_447, "%000005a7"), Attrs([Attr("address","0x1194"), -Attr("insn","subq $0x20, %rsp")]), Var("#12582880",Imm(64)), -Var("RSP",Imm(64))), Def(Tid(1_451, "%000005ab"), - Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), - Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(32,64))), -Def(Tid(1_455, "%000005af"), Attrs([Attr("address","0x1194"), -Attr("insn","subq $0x20, %rsp")]), Var("CF",Imm(1)), -LT(Var("#12582880",Imm(64)),Int(32,64))), Def(Tid(1_461, "%000005b5"), - Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), - Var("OF",Imm(1)), -HIGH(1,AND(XOR(Var("#12582880",Imm(64)),Int(32,64)),XOR(Var("#12582880",Imm(64)),Var("RSP",Imm(64)))))), -Def(Tid(1_466, "%000005ba"), Attrs([Attr("address","0x1194"), -Attr("insn","subq $0x20, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582880",Imm(64))),Int(32,64))))), -Def(Tid(1_471, "%000005bf"), Attrs([Attr("address","0x1194"), -Attr("insn","subq $0x20, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_475, "%000005c3"), Attrs([Attr("address","0x1194"), -Attr("insn","subq $0x20, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(1_479, "%000005c7"), - Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(1_489, "%000005d1"), Attrs([Attr("address","0x1198"), -Attr("insn","movq $0x0, -0x8(%rbp)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(1_499, "%000005db"), Attrs([Attr("address","0x11A0"), -Attr("insn","movq $0x0, -0x10(%rbp)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(1_505, "%000005e1"), Attrs([Attr("address","0x11A8"), -Attr("insn","movl $0xb, %edi")]), Var("RDI",Imm(64)), Int(11,64)), -Def(Tid(1_517, "%000005ed"), Attrs([Attr("address","0x11AD"), -Attr("insn","callq -0x132")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_522, "%000005f2"), - Attrs([Attr("address","0x11AD"), Attr("insn","callq -0x132")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4530,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_524, "%000005f4"), Attrs([Attr("address","0x11AD"), -Attr("insn","callq -0x132")]), Int(1,1), -(Direct(Tid(2_881, "@malloc")),Direct(Tid(1_526, "%000005f6"))))])), -Blk(Tid(1_526, "%000005f6"), Attrs([Attr("address","0x11B2")]), Phis([]), -Defs([Def(Tid(1_534, "%000005fe"), Attrs([Attr("address","0x11B2"), -Attr("insn","movq %rax, 0x2e9f(%rip)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Int(16472,64),Var("RAX",Imm(64)),LittleEndian(),64)), -Def(Tid(1_542, "%00000606"), Attrs([Attr("address","0x11B9"), -Attr("insn","movq 0x2e98(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_554, "%00000612"), Attrs([Attr("address","0x11C0"), -Attr("insn","movq %rax, -0x20(%rbp)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551584,64)),Var("RAX",Imm(64)),LittleEndian(),64)), -Def(Tid(1_560, "%00000618"), Attrs([Attr("address","0x11C4"), -Attr("insn","leaq 0x2e76(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16449,64)), -Def(Tid(1_572, "%00000624"), Attrs([Attr("address","0x11CB"), -Attr("insn","callq -0x180")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_577, "%00000629"), - Attrs([Attr("address","0x11CB"), Attr("insn","callq -0x180")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4560,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_579, "%0000062b"), Attrs([Attr("address","0x11CB"), -Attr("insn","callq -0x180")]), Int(1,1), -(Direct(Tid(2_888, "@strlen")),Direct(Tid(1_581, "%0000062d"))))])), -Blk(Tid(1_581, "%0000062d"), Attrs([Attr("address","0x11D0")]), Phis([]), -Defs([Def(Tid(1_589, "%00000635"), Attrs([Attr("address","0x11D0"), -Attr("insn","movq -0x20(%rbp), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551584,64)),LittleEndian(),64)), -Def(Tid(1_597, "%0000063d"), Attrs([Attr("address","0x11D4"), -Attr("insn","movq %rax, %rdx")]), Var("RDX",Imm(64)), Var("RAX",Imm(64))), -Def(Tid(1_603, "%00000643"), Attrs([Attr("address","0x11D7"), -Attr("insn","leaq 0x2e63(%rip), %rsi")]), Var("RSI",Imm(64)), Int(16449,64)), -Def(Tid(1_615, "%0000064f"), Attrs([Attr("address","0x11DE"), -Attr("insn","callq -0x173")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_620, "%00000654"), - Attrs([Attr("address","0x11DE"), Attr("insn","callq -0x173")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4579,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_622, "%00000656"), Attrs([Attr("address","0x11DE"), -Attr("insn","callq -0x173")]), Int(1,1), -(Direct(Tid(2_882, "@memcpy")),Direct(Tid(1_624, "%00000658"))))])), -Blk(Tid(1_624, "%00000658"), Attrs([Attr("address","0x11E3")]), Phis([]), -Defs([Def(Tid(1_630, "%0000065e"), Attrs([Attr("address","0x11E3"), -Attr("insn","movq 0x2e6e(%rip), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_642, "%0000066a"), Attrs([Attr("address","0x11EA"), -Attr("insn","callq -0x1af")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_647, "%0000066f"), - Attrs([Attr("address","0x11EA"), Attr("insn","callq -0x1af")]), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(897, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(902, "%00000386"), + Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), + Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), +Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x918"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(915, "%00000393"), + Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4591,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_649, "%00000671"), Attrs([Attr("address","0x11EA"), -Attr("insn","callq -0x1af")]), Int(1,1), -(Direct(Tid(2_884, "@puts")),Direct(Tid(1_651, "%00000673"))))])), -Blk(Tid(1_651, "%00000673"), Attrs([Attr("address","0x11EF")]), Phis([]), -Defs([Def(Tid(1_657, "%00000679"), Attrs([Attr("address","0x11EF"), -Attr("insn","movq 0x2e62(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_686, "%00000696"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("#12582877",Imm(64)), -Var("RAX",Imm(64))), Def(Tid(1_690, "%0000069a"), - Attrs([Attr("address","0x11F6"), Attr("insn","addq $0x4, %rax")]), - Var("RAX",Imm(64)), PLUS(Var("RAX",Imm(64)),Int(4,64))), -Def(Tid(1_695, "%0000069f"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("CF",Imm(1)), -LT(Var("RAX",Imm(64)),Var("#12582877",Imm(64)))), -Def(Tid(1_703, "%000006a7"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("OF",Imm(1)), -AND(EQ(HIGH(1,Var("#12582877",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582877",Imm(64))),HIGH(1,Var("RAX",Imm(64)))),NOT(AND(HIGH(1,Var("#12582877",Imm(64))),HIGH(1,Var("RAX",Imm(64)))))))), -Def(Tid(1_708, "%000006ac"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RAX",Imm(64)),Var("#12582877",Imm(64))),Int(4,64))))), -Def(Tid(1_713, "%000006b1"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RAX",Imm(64)),Int(4,64)),Var("RAX",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_717, "%000006b5"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("RAX",Imm(64)))), Def(Tid(1_721, "%000006b9"), - Attrs([Attr("address","0x11F6"), Attr("insn","addq $0x4, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RAX",Imm(64)))), -Def(Tid(1_733, "%000006c5"), Attrs([Attr("address","0x11FA"), -Attr("insn","movq %rax, -0x8(%rbp)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551608,64)),Var("RAX",Imm(64)),LittleEndian(),64)), -Def(Tid(1_741, "%000006cd"), Attrs([Attr("address","0x11FE"), -Attr("insn","movq 0x2e53(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_753, "%000006d9"), Attrs([Attr("address","0x1205"), -Attr("insn","movq %rax, -0x18(%rbp)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551592,64)),Var("RAX",Imm(64)),LittleEndian(),64)), -Def(Tid(1_761, "%000006e1"), Attrs([Attr("address","0x1209"), -Attr("insn","movq 0x2e48(%rip), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_772, "%000006ec"), Attrs([Attr("address","0x1210"), -Attr("insn","callq -0x1c5")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_777, "%000006f1"), - Attrs([Attr("address","0x1210"), Attr("insn","callq -0x1c5")]), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(920, "%00000398"), Attrs([Attr("address","0x918"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x91C"), +Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(935, "%000003a7"), + Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4629,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_779, "%000006f3"), Attrs([Attr("address","0x1210"), -Attr("insn","callq -0x1c5")]), Int(1,1), -(Direct(Tid(2_888, "@strlen")),Direct(Tid(1_781, "%000006f5"))))])), -Blk(Tid(1_781, "%000006f5"), Attrs([Attr("address","0x1215")]), Phis([]), -Defs([Def(Tid(1_789, "%000006fd"), Attrs([Attr("address","0x1215"), -Attr("insn","movq -0x18(%rbp), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551592,64)),LittleEndian(),64)), -Def(Tid(1_797, "%00000705"), Attrs([Attr("address","0x1219"), -Attr("insn","movq %rax, %rdx")]), Var("RDX",Imm(64)), Var("RAX",Imm(64))), -Def(Tid(1_803, "%0000070b"), Attrs([Attr("address","0x121C"), -Attr("insn","movl $0x1, %esi")]), Var("RSI",Imm(64)), Int(1,64)), -Def(Tid(1_815, "%00000717"), Attrs([Attr("address","0x1221"), -Attr("insn","callq -0x1c6")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_820, "%0000071c"), - Attrs([Attr("address","0x1221"), Attr("insn","callq -0x1c6")]), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(943, "%000003af"), Attrs([Attr("address","0x924"), +Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x928"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(957, "%000003bd"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x18c")]), Int(1,1), +(Direct(Tid(2_282, "@malloc")),Direct(Tid(959, "%000003bf"))))])), +Blk(Tid(959, "%000003bf"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x930"), +Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), +Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x934"), +Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x938"), +Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x93C"), +Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x940"), +Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x944"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x948"), +Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(1_016, "%000003f8"), + Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4646,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_822, "%0000071e"), Attrs([Attr("address","0x1221"), -Attr("insn","callq -0x1c6")]), Int(1,1), -(Direct(Tid(2_883, "@memset")),Direct(Tid(1_824, "%00000720"))))])), -Blk(Tid(1_824, "%00000720"), Attrs([Attr("address","0x1226")]), Phis([]), -Defs([Def(Tid(1_830, "%00000726"), Attrs([Attr("address","0x1226"), -Attr("insn","movq 0x2e2b(%rip), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_842, "%00000732"), Attrs([Attr("address","0x122D"), -Attr("insn","callq -0x202")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_847, "%00000737"), - Attrs([Attr("address","0x122D"), Attr("insn","callq -0x202")]), +Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), +Jmps([Call(Tid(1_024, "%00000400"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x1e0")]), Int(1,1), +(Direct(Tid(2_289, "@strlen")),Direct(Tid(1_026, "%00000402"))))])), +Blk(Tid(1_026, "%00000402"), Attrs([Attr("address","0x954")]), Phis([]), +Defs([Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x954"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x958"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x95C"), +Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), +Jmps([Call(Tid(1_056, "%00000420"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x200")]), Int(1,1), +(Direct(Tid(2_283, "@memcpy")),Direct(Tid(1_058, "%00000422"))))])), +Blk(Tid(1_058, "%00000422"), Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_064, "%00000428"), Attrs([Attr("address","0x964"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x968"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), +Jmps([Call(Tid(1_080, "%00000438"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x18c")]), Int(1,1), +(Direct(Tid(2_285, "@puts")),Direct(Tid(1_082, "%0000043a"))))])), +Blk(Tid(1_082, "%0000043a"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x970"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x974"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x978"), +Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_111, "%00000457"), + Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4658,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_849, "%00000739"), Attrs([Attr("address","0x122D"), -Attr("insn","callq -0x202")]), Int(1,1), -(Direct(Tid(2_878, "@free")),Direct(Tid(1_851, "%0000073b"))))])), -Blk(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x1232")]), Phis([]), -Defs([Def(Tid(1_861, "%00000745"), Attrs([Attr("address","0x1232"), -Attr("insn","xorl %eax, %eax")]), Var("RAX",Imm(64)), Int(0,64)), -Def(Tid(1_864, "%00000748"), Attrs([Attr("address","0x1232"), -Attr("insn","xorl %eax, %eax")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_867, "%0000074b"), Attrs([Attr("address","0x1232"), -Attr("insn","xorl %eax, %eax")]), Var("ZF",Imm(1)), Int(1,1)), -Def(Tid(1_870, "%0000074e"), Attrs([Attr("address","0x1232"), -Attr("insn","xorl %eax, %eax")]), Var("PF",Imm(1)), Int(1,1)), -Def(Tid(1_873, "%00000751"), Attrs([Attr("address","0x1232"), -Attr("insn","xorl %eax, %eax")]), Var("OF",Imm(1)), Int(0,1)), -Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x1232"), -Attr("insn","xorl %eax, %eax")]), Var("CF",Imm(1)), Int(0,1)), -Def(Tid(1_879, "%00000757"), Attrs([Attr("address","0x1232"), -Attr("insn","xorl %eax, %eax")]), Var("SF",Imm(1)), Int(0,1)), -Def(Tid(1_908, "%00000774"), Attrs([Attr("address","0x1234"), -Attr("insn","addq $0x20, %rsp")]), Var("#12582874",Imm(64)), -Var("RSP",Imm(64))), Def(Tid(1_912, "%00000778"), - Attrs([Attr("address","0x1234"), Attr("insn","addq $0x20, %rsp")]), - Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(32,64))), -Def(Tid(1_917, "%0000077d"), Attrs([Attr("address","0x1234"), -Attr("insn","addq $0x20, %rsp")]), Var("CF",Imm(1)), -LT(Var("RSP",Imm(64)),Var("#12582874",Imm(64)))), -Def(Tid(1_925, "%00000785"), Attrs([Attr("address","0x1234"), -Attr("insn","addq $0x20, %rsp")]), Var("OF",Imm(1)), -AND(EQ(HIGH(1,Var("#12582874",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582874",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582874",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), -Def(Tid(1_930, "%0000078a"), Attrs([Attr("address","0x1234"), -Attr("insn","addq $0x20, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582874",Imm(64))),Int(32,64))))), -Def(Tid(1_935, "%0000078f"), Attrs([Attr("address","0x1234"), -Attr("insn","addq $0x20, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_939, "%00000793"), Attrs([Attr("address","0x1234"), -Attr("insn","addq $0x20, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(1_943, "%00000797"), - Attrs([Attr("address","0x1234"), Attr("insn","addq $0x20, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(1_955, "%000007a3"), Attrs([Attr("address","0x1238"), -Attr("insn","popq %rbp")]), Var("RBP",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(1_959, "%000007a7"), Attrs([Attr("address","0x1238"), -Attr("insn","popq %rbp")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_972, "%000007b4"), - Attrs([Attr("address","0x1239"), Attr("insn","retq")]), - Var("#12582871",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(1_976, "%000007b8"), Attrs([Attr("address","0x1239"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_979, "%000007bb"), - Attrs([Attr("address","0x1239"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582871",Imm(64))),))]))])), Sub(Tid(2_881, "@malloc"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x980"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x984"), +Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x988"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_140, "%00000474"), Attrs([Attr("address","0x98C"), +Attr("insn","bl #-0x21c")]), Var("R30",Imm(64)), Int(2448,64))]), +Jmps([Call(Tid(1_142, "%00000476"), Attrs([Attr("address","0x98C"), +Attr("insn","bl #-0x21c")]), Int(1,1), +(Direct(Tid(2_289, "@strlen")),Direct(Tid(1_144, "%00000478"))))])), +Blk(Tid(1_144, "%00000478"), Attrs([Attr("address","0x990")]), Phis([]), +Defs([Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x990"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_158, "%00000486"), Attrs([Attr("address","0x994"), +Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x998"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x99C"), +Attr("insn","bl #-0x1ec")]), Var("R30",Imm(64)), Int(2464,64))]), +Jmps([Call(Tid(1_173, "%00000495"), Attrs([Attr("address","0x99C"), +Attr("insn","bl #-0x1ec")]), Int(1,1), +(Direct(Tid(2_284, "@memset")),Direct(Tid(1_175, "%00000497"))))])), +Blk(Tid(1_175, "%00000497"), Attrs([Attr("address","0x9A0")]), Phis([]), +Defs([Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x9A0"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x9A4"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2476,64))]), +Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x1b8")]), Int(1,1), +(Direct(Tid(2_280, "@free")),Direct(Tid(1_199, "%000004af"))))])), +Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x9AC")]), Phis([]), +Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x9AC"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), +Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x9B0"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), +Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x9B0"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), +Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x9B4"), +Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_231, "%000004cf"), + Attrs([Attr("address","0x9B8"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_282, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x1080"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(3_038, "%00000bde"), Attrs([Attr("alloc-size","()"), +Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_351, "%0000092f"), 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("RDI",Imm(64)), In()), Arg(Tid(3_039, "%00000bdf"), +Var("R0",Imm(64)), In()), Arg(Tid(2_352, "%00000930"), Attrs([Attr("warn-unused","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("malloc_result",Imm(64)), Var("RAX",Imm(64)), Out())]), -Blks([Blk(Tid(1_513, "@malloc"), Attrs([Attr("address","0x1080")]), Phis([]), -Defs([]), Jmps([Call(Tid(2_578, "%00000a12"), - Attrs([Attr("address","0x1080"), Attr("insn","jmpq *0x2fa2(%rip)")]), - Int(1,1), -(Direct(Tid(2_576, "@malloc:external")),Direct(Tid(2_580, "%00000a14"))))])), -Blk(Tid(2_580, "%00000a14"), Attrs([Attr("address","0x1086")]), Phis([]), -Defs([Def(Tid(2_589, "%00000a1d"), Attrs([Attr("address","0x1086"), -Attr("insn","pushq $0x5")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_594, "%00000a22"), - Attrs([Attr("address","0x1086"), Attr("insn","pushq $0x5")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(5,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_598, "%00000a26"), Attrs([Attr("address","0x108B"), -Attr("insn","jmp -0x70")]), Int(1,1), -(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), Sub(Tid(2_882, "@memcpy"), + Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(955, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_752, "%000006d8"), 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_759, "%000006df"), 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_764, "%000006e4"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_283, "@memcpy"), Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), -Attr("address","0x1070"), Attr("stub","()")]), "memcpy", - Args([Arg(Tid(3_040, "%00000be0"), Attrs([Attr("nonnull","()"), +Attr("address","0x760"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_353, "%00000931"), Attrs([Attr("nonnull","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void restrict *")]), Var("memcpy_dst",Imm(64)), -Var("RDI",Imm(64)), Both()), Arg(Tid(3_041, "%00000be1"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_354, "%00000932"), Attrs([Attr("nonnull","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void restrict *")]), - Var("memcpy_src",Imm(64)), Var("RSI",Imm(64)), Both()), -Arg(Tid(3_042, "%00000be2"), Attrs([Attr("c.layout","[unsigned long : 64]"), + Var("memcpy_src",Imm(64)), Var("R1",Imm(64)), Both()), +Arg(Tid(2_355, "%00000933"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), - Var("memcpy_n",Imm(64)), Var("RDX",Imm(64)), In()), -Arg(Tid(3_043, "%00000be3"), Attrs([Attr("c.layout","*[ : 8]"), + Var("memcpy_n",Imm(64)), Var("R2",Imm(64)), In()), +Arg(Tid(2_356, "%00000934"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("RAX",Imm(64)), Out())]), -Blks([Blk(Tid(1_611, "@memcpy"), Attrs([Attr("address","0x1070")]), Phis([]), -Defs([]), Jmps([Call(Tid(2_553, "%000009f9"), - Attrs([Attr("address","0x1070"), Attr("insn","jmpq *0x2faa(%rip)")]), - Int(1,1), -(Direct(Tid(2_551, "@memcpy:external")),Direct(Tid(2_555, "%000009fb"))))])), -Blk(Tid(2_555, "%000009fb"), Attrs([Attr("address","0x1076")]), Phis([]), -Defs([Def(Tid(2_564, "%00000a04"), Attrs([Attr("address","0x1076"), -Attr("insn","pushq $0x4")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_569, "%00000a09"), - Attrs([Attr("address","0x1076"), Attr("insn","pushq $0x4")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_573, "%00000a0d"), Attrs([Attr("address","0x107B"), -Attr("insn","jmp -0x60")]), Int(1,1), -(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), Sub(Tid(2_883, "@memset"), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_054, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_652, "%00000674"), 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_659, "%0000067b"), Attrs([Attr("address","0x768"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_664, "%00000680"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_284, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x1060"), Attr("stub","()")]), "memset", - Args([Arg(Tid(3_044, "%00000be4"), Attrs([Attr("nonnull","()"), +Attr("address","0x7B0"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_357, "%00000935"), Attrs([Attr("nonnull","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), -Attr("c.type","void*")]), Var("memset_buf",Imm(64)), Var("RDI",Imm(64)), -Both()), Arg(Tid(3_045, "%00000be5"), +Attr("c.type","void*")]), Var("memset_buf",Imm(64)), Var("R0",Imm(64)), +Both()), Arg(Tid(2_358, "%00000936"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("memset_c",Imm(32)), -LOW(32,Var("RSI",Imm(64))), In()), Arg(Tid(3_046, "%00000be6"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_359, "%00000937"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), -Attr("c.type","unsigned long")]), Var("memset_n",Imm(64)), -Var("RDX",Imm(64)), In()), Arg(Tid(3_047, "%00000be7"), - Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), -Attr("c.type","void*")]), Var("memset_result",Imm(64)), Var("RAX",Imm(64)), -Out())]), Blks([Blk(Tid(1_811, "@memset"), Attrs([Attr("address","0x1060")]), - Phis([]), Defs([]), Jmps([Call(Tid(2_528, "%000009e0"), - Attrs([Attr("address","0x1060"), Attr("insn","jmpq *0x2fb2(%rip)")]), - Int(1,1), -(Direct(Tid(2_526, "@memset:external")),Direct(Tid(2_530, "%000009e2"))))])), -Blk(Tid(2_530, "%000009e2"), Attrs([Attr("address","0x1066")]), Phis([]), -Defs([Def(Tid(2_539, "%000009eb"), Attrs([Attr("address","0x1066"), -Attr("insn","pushq $0x3")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_544, "%000009f0"), - Attrs([Attr("address","0x1066"), Attr("insn","pushq $0x3")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(3,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_548, "%000009f4"), Attrs([Attr("address","0x106B"), -Attr("insn","jmp -0x50")]), Int(1,1), -(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), Sub(Tid(2_884, "@puts"), +Attr("c.type","unsigned long")]), Var("memset_n",Imm(64)), Var("R2",Imm(64)), +In()), Arg(Tid(2_360, "%00000938"), 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_171, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x7B0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_777, "%000006f1"), 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_784, "%000006f8"), 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_789, "%000006fd"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_285, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x1040"), Attr("stub","()")]), "puts", - Args([Arg(Tid(3_048, "%00000be8"), Attrs([Attr("c.layout","*[char : 8]"), +Attr("address","0x7E0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_361, "%00000939"), Attrs([Attr("c.layout","*[char : 8]"), Attr("c.data","Top:u8 ptr"), Attr("c.type"," const char*")]), - Var("puts_s",Imm(64)), Var("RDI",Imm(64)), In()), -Arg(Tid(3_049, "%00000be9"), Attrs([Attr("c.layout","[signed : 32]"), + Var("puts_s",Imm(64)), Var("R0",Imm(64)), In()), +Arg(Tid(2_362, "%0000093a"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(1_638, "@puts"), Attrs([Attr("address","0x1040")]), Phis([]), -Defs([]), Jmps([Call(Tid(2_478, "%000009ae"), - Attrs([Attr("address","0x1040"), Attr("insn","jmpq *0x2fc2(%rip)")]), - Int(1,1), -(Direct(Tid(2_476, "@puts:external")),Direct(Tid(2_480, "%000009b0"))))])), -Blk(Tid(2_480, "%000009b0"), Attrs([Attr("address","0x1046")]), Phis([]), -Defs([Def(Tid(2_489, "%000009b9"), Attrs([Attr("address","0x1046"), -Attr("insn","pushq $0x1")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_494, "%000009be"), - Attrs([Attr("address","0x1046"), Attr("insn","pushq $0x1")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(1,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_498, "%000009c2"), Attrs([Attr("address","0x104B"), -Attr("insn","jmp -0x30")]), Int(1,1), -(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), -Sub(Tid(2_885, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1100")]), - "register_tm_clones", Args([Arg(Tid(3_050, "%00000bea"), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_078, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x7E0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_852, "%0000073c"), 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_859, "%00000743"), 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_864, "%00000748"), + Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_286, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_363, "%0000093b"), 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("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(948, "@register_tm_clones"), Attrs([Attr("address","0x1100")]), - Phis([]), Defs([Def(Tid(952, "%000003b8"), Attrs([Attr("address","0x1100"), -Attr("insn","leaq 0x2f49(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16464,64)), -Def(Tid(958, "%000003be"), Attrs([Attr("address","0x1107"), -Attr("insn","leaq 0x2f42(%rip), %rsi")]), Var("RSI",Imm(64)), Int(16464,64)), -Def(Tid(990, "%000003de"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("#12582897",Imm(64)), -Var("RSI",Imm(64))), Def(Tid(994, "%000003e2"), - Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), - Var("#12582896",Imm(64)), Var("RDI",Imm(64))), Def(Tid(999, "%000003e7"), - Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), - Var("RSI",Imm(64)), MINUS(Var("RSI",Imm(64)),Var("RDI",Imm(64)))), -Def(Tid(1_004, "%000003ec"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("CF",Imm(1)), -LT(Var("#12582897",Imm(64)),Var("#12582896",Imm(64)))), -Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("OF",Imm(1)), -HIGH(1,AND(XOR(Var("#12582897",Imm(64)),Var("#12582896",Imm(64))),XOR(Var("#12582897",Imm(64)),Var("RSI",Imm(64)))))), -Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSI",Imm(64)),Var("#12582897",Imm(64))),Var("#12582896",Imm(64)))))), -Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_026, "%00000402"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("SF",Imm(1)), -HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_030, "%00000406"), - Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), -Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x1111"), -Attr("insn","movq %rsi, %rax")]), Var("RAX",Imm(64)), Var("RSI",Imm(64))), -Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("#12582894",Imm(64)), -Var("RSI",Imm(64))), Def(Tid(1_063, "%00000427"), - Attrs([Attr("address","0x1114"), Attr("insn","shrq $0x3f, %rsi")]), - Var("RSI",Imm(64)), RSHIFT(Var("RSI",Imm(64)),Int(63,64))), -Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("CF",Imm(1)), -HIGH(1,LSHIFT(Var("#12582894",Imm(64)),Int(1,64)))), -Def(Tid(1_071, "%0000042f"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("SF",Imm(1)), -HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_075, "%00000433"), - Attrs([Attr("address","0x1114"), Attr("insn","shrq $0x3f, %rsi")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), -Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("OF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_107, "%00000453"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("#12582892",Imm(64)), -Var("RAX",Imm(64))), Def(Tid(1_111, "%00000457"), - Attrs([Attr("address","0x1118"), Attr("insn","sarq $0x3, %rax")]), - Var("RAX",Imm(64)), ARSHIFT(Var("RAX",Imm(64)),Int(3,64))), -Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("CF",Imm(1)), -HIGH(1,LSHIFT(Var("#12582892",Imm(64)),Int(61,64)))), -Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("RAX",Imm(64)))), Def(Tid(1_123, "%00000463"), - Attrs([Attr("address","0x1118"), Attr("insn","sarq $0x3, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RAX",Imm(64)))), -Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RAX",Imm(64)),Int(4,64)),Var("RAX",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_131, "%0000046b"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("OF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_168, "%00000490"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("#12582890",Imm(64)), -Var("RSI",Imm(64))), Def(Tid(1_172, "%00000494"), - Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), - Var("#12582889",Imm(64)), Var("RAX",Imm(64))), Def(Tid(1_177, "%00000499"), - Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), - Var("RSI",Imm(64)), PLUS(Var("RSI",Imm(64)),Var("#12582889",Imm(64)))), -Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("CF",Imm(1)), -LT(Var("RSI",Imm(64)),Var("#12582890",Imm(64)))), -Def(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("OF",Imm(1)), -AND(EQ(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("#12582889",Imm(64)))),AND(OR(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("RSI",Imm(64)))),NOT(AND(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("RSI",Imm(64)))))))), -Def(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSI",Imm(64)),Var("#12582890",Imm(64))),Var("#12582889",Imm(64)))))), -Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("SF",Imm(1)), -HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_210, "%000004ba"), - Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), -Def(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("#12582887",Imm(64)), Var("RSI",Imm(64))), -Def(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("RSI",Imm(64)), -ARSHIFT(Var("RSI",Imm(64)),Int(1,64))), Def(Tid(1_239, "%000004d7"), - Attrs([Attr("address","0x111F"), Attr("insn","sarq %rsi")]), - Var("CF",Imm(1)), HIGH(1,LSHIFT(Var("#12582887",Imm(64)),Int(63,64)))), -Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("SF",Imm(1)), HIGH(1,Var("RSI",Imm(64)))), -Def(Tid(1_247, "%000004df"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("ZF",Imm(1)), -EQ(Int(0,64),Var("RSI",Imm(64)))), Def(Tid(1_252, "%000004e4"), - Attrs([Attr("address","0x111F"), Attr("insn","sarq %rsi")]), - Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_258, "%000004ea"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("OF",Imm(1)), Int(0,1))]), -Jmps([Goto(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x1122"), -Attr("insn","je 0x14")]), Var("ZF",Imm(1)), Direct(Tid(1_262, "%000004ee"))), -Goto(Tid(3_023, "%00000bcf"), Attrs([]), Int(1,1), -Direct(Tid(2_167, "%00000877")))])), Blk(Tid(2_167, "%00000877"), - Attrs([Attr("address","0x1124")]), Phis([]), -Defs([Def(Tid(2_173, "%0000087d"), Attrs([Attr("address","0x1124"), -Attr("insn","movq 0x2ead(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16344,64),LittleEndian(),64)), -Def(Tid(2_191, "%0000088f"), Attrs([Attr("address","0x112B"), -Attr("insn","testq %rax, %rax")]), Var("#12582866",Imm(64)), -Var("RAX",Imm(64))), Def(Tid(2_194, "%00000892"), - Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), - Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_197, "%00000895"), - Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), - Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_200, "%00000898"), - Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), - Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_205, "%0000089d"), - Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), - Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582866",Imm(64)),Int(4,64)),Var("#12582866",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_209, "%000008a1"), Attrs([Attr("address","0x112B"), -Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582866",Imm(64)))), Def(Tid(2_213, "%000008a5"), - Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582866",Imm(64))))]), -Jmps([Goto(Tid(2_219, "%000008ab"), Attrs([Attr("address","0x112E"), -Attr("insn","je 0x8")]), Var("ZF",Imm(1)), Direct(Tid(1_262, "%000004ee"))), -Goto(Tid(3_024, "%00000bd0"), Attrs([]), Int(1,1), -Direct(Tid(2_223, "%000008af")))])), Blk(Tid(1_262, "%000004ee"), - Attrs([Attr("address","0x1138")]), Phis([]), -Defs([Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x1138"), -Attr("insn","retq")]), Var("#12582885",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(1_283, "%00000503"), Attrs([Attr("address","0x1138"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_286, "%00000506"), - Attrs([Attr("address","0x1138"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582885",Imm(64))),))])), Blk(Tid(2_223, "%000008af"), - Attrs([Attr("address","0x1130")]), Phis([]), Defs([]), -Jmps([Call(Tid(2_227, "%000008b3"), Attrs([Attr("address","0x1130"), -Attr("insn","jmpq *%rax")]), Int(1,1), -(Indirect(Var("RAX",Imm(64))),))]))])), Sub(Tid(2_888, "@strlen"), +LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(719, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x880"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(730, "%000002da"), Attrs([Attr("address","0x884"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(736, "%000002e0"), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(743, "%000002e7"), + Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x890"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(758, "%000002f6"), + Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(766, "%000002fe"), 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,64)))), +Def(Tid(773, "%00000305"), Attrs([Attr("address","0x89C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(785, "%00000311"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(779, "%0000030b"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(777, "%00000309"))), Goto(Tid(2_331, "%0000091b"), Attrs([]), + Int(1,1), Direct(Tid(1_303, "%00000517")))])), Blk(Tid(1_303, "%00000517"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_315, "%00000523"), 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)), +Def(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_320, "%00000528"), + Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), + Var("#70",Imm(1)), Direct(Tid(777, "%00000309"))), +Goto(Tid(2_332, "%0000091c"), Attrs([]), Int(1,1), +Direct(Tid(1_329, "%00000531")))])), Blk(Tid(777, "%00000309"), + Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), +Jmps([Call(Tid(790, "%00000316"), Attrs([Attr("address","0x8B8"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_329, "%00000531"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x8B0"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8B4"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_289, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x1050"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(3_051, "%00000beb"), Attrs([Attr("nonnull","()"), +Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_364, "%0000093c"), 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("RDI",Imm(64)), -In()), Arg(Tid(3_052, "%00000bec"), +Attr("c.type"," const char*")]), Var("strlen_s",Imm(64)), Var("R0",Imm(64)), +In()), Arg(Tid(2_365, "%0000093d"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("RAX",Imm(64)), Out())]), Blks([Blk(Tid(1_568, "@strlen"), - Attrs([Attr("address","0x1050")]), Phis([]), Defs([]), -Jmps([Call(Tid(2_503, "%000009c7"), Attrs([Attr("address","0x1050"), -Attr("insn","jmpq *0x2fba(%rip)")]), Int(1,1), -(Direct(Tid(2_501, "@strlen:external")),Direct(Tid(2_505, "%000009c9"))))])), -Blk(Tid(2_505, "%000009c9"), Attrs([Attr("address","0x1056")]), Phis([]), -Defs([Def(Tid(2_514, "%000009d2"), Attrs([Attr("address","0x1056"), -Attr("insn","pushq $0x2")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_519, "%000009d7"), - Attrs([Attr("address","0x1056"), Attr("insn","pushq $0x2")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(2,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_523, "%000009db"), Attrs([Attr("address","0x105B"), -Attr("insn","jmp -0x40")]), Int(1,1), -(Direct(Tid(2_879, "@free@plt-0x10")),))]))])), -Sub(Tid(824, "@__libc_start_main"), - Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), -Attr("synthetic","()"), Attr("stub","()")]), "__libc_start_main", - Args([Arg(Tid(3_053, "%00000bed"), - 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("RDI",Imm(64)), In()), -Arg(Tid(3_054, "%00000bee"), 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("RSI",Imm(64))), In()), -Arg(Tid(3_055, "%00000bef"), 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("RDX",Imm(64)), Both()), -Arg(Tid(3_056, "%00000bf0"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("__libc_start_main_auxv",Imm(64)), Var("RCX",Imm(64)), Both()), -Arg(Tid(3_057, "%00000bf1"), 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("RAX",Imm(64))), -Out())]), Blks([])), Sub(Tid(829, "@intrinsic:hlt"), - Attrs([Attr("intrinsic","()"), Attr("synthetic","()"), Attr("stub","()")]), - "intrinsic:hlt", Args([]), Blks([])), Sub(Tid(2_451, "@free:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "free:external", Args([Arg(Tid(3_058, "%00000bf2"), - Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("free:external_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), -Sub(Tid(2_476, "@puts:external"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("synthetic","()"), Attr("stub","()")]), "puts:external", - Args([Arg(Tid(3_059, "%00000bf3"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts:external_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), -Blks([])), Sub(Tid(2_501, "@strlen:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "strlen:external", Args([Arg(Tid(3_060, "%00000bf4"), - Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("strlen:external_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), -Sub(Tid(2_526, "@memset:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "memset:external", Args([Arg(Tid(3_061, "%00000bf5"), - Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("memset:external_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), -Sub(Tid(2_551, "@memcpy:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "memcpy:external", Args([Arg(Tid(3_062, "%00000bf6"), - Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("memcpy:external_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), -Sub(Tid(2_576, "@malloc:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "malloc:external", Args([Arg(Tid(3_063, "%00000bf7"), - Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("malloc:external_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), -Sub(Tid(2_860, "@__cxa_finalize:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "__cxa_finalize:external", - Args([Arg(Tid(3_064, "%00000bf8"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("__cxa_finalize:external_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), -Out())]), -Blks([]))]))) \ No newline at end of file +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_022, "@strlen"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_669, "%00000685"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_677, "%0000068d"), 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_684, "%00000694"), 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_689, "%00000699"), + 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/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir index 831e29427..e1fe07e4d 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir @@ -1,555 +1,359 @@ -00000bd1: program -00000b31: sub __cxa_finalize(__cxa_finalize_result) -00000bd2: __cxa_finalize_result :: out u32 = low:32[RAX] - -0000086a: -00000b2e: call @__cxa_finalize:external with noreturn - -00000b32: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000bd3: __do_global_dtors_aux_result :: out u32 = low:32[RAX] - -0000050d: -00000525: #12582884 := mem[0x4050] -00000529: CF := mem[0x4050] < 0 -0000052f: OF := high:1[mem[0x4050] & (mem[0x4050] ^ #12582884)] -00000534: AF := 0x10 = (0x10 & (#12582884 ^ mem[0x4050])) -00000539: PF := - ~low:1[let $0 = #12582884 >> 4 ^ #12582884 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -0000053d: SF := high:1[#12582884] -00000541: ZF := 0 = #12582884 -00000548: when ~ZF goto %00000545 -00000bc9: goto %000007bd - -00000545: -00000556: #12582882 := mem[RSP, el]:u64 -0000055a: RSP := RSP + 8 -0000055d: call #12582882 with noreturn - -000007bd: -000007c9: #12582870 := RBP -000007cd: RSP := RSP - 8 -000007d3: mem := mem with [RSP, el]:u64 <- #12582870 -000007eb: #12582869 := mem[0x3FE0, el]:u64 -000007ef: CF := mem[0x3FE0, el]:u64 < 0 -000007f5: OF := high:1[mem[0x3FE0, el]:u64 & - (mem[0x3FE0, el]:u64 ^ #12582869)] -000007fa: AF := 0x10 = (0x10 & (#12582869 ^ mem[0x3FE0, el]:u64)) -000007ff: PF := - ~low:1[let $0 = #12582869 >> 4 ^ #12582869 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000803: SF := high:1[#12582869] -00000807: ZF := 0 = #12582869 -0000080f: RBP := RSP -00000816: when ZF goto %00000813 -00000bca: goto %0000085c - -0000085c: -00000862: RDI := mem[0x4038, el]:u64 -0000086e: RSP := RSP - 8 -00000873: mem := mem with [RSP, el]:u64 <- 0x1167 -00000875: call @__cxa_finalize with return %00000813 - -00000813: -00000822: RSP := RSP - 8 -00000827: mem := mem with [RSP, el]:u64 <- 0x116C -00000829: call @deregister_tm_clones with return %0000082b - -0000082b: -00000831: mem := mem with [0x4050] <- 1 -0000083d: RBP := mem[RSP, el]:u64 -00000841: RSP := RSP + 8 -0000084e: #12582867 := mem[RSP, el]:u64 -00000852: RSP := RSP + 8 -00000855: call #12582867 with noreturn - -00000b35: sub _fini(_fini_result) -00000bd4: _fini_result :: out u32 = low:32[RAX] - -00000015: -00000038: #12582911 := RSP -0000003c: RSP := RSP - 8 -00000040: CF := #12582911 < 8 -00000046: OF := high:1[(#12582911 ^ 8) & (#12582911 ^ RSP)] -0000004b: AF := 0x10 = (0x10 & (RSP ^ #12582911 ^ 8)) -00000050: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000054: SF := high:1[RSP] -00000058: ZF := 0 = RSP -00000075: #12582908 := RSP -00000079: RSP := RSP + 8 -0000007e: CF := RSP < #12582908 -00000086: OF := ~high:1[#12582908] & (high:1[#12582908] | high:1[RSP]) & - ~(high:1[#12582908] & high:1[RSP]) -0000008b: AF := 0x10 = (0x10 & (RSP ^ #12582908 ^ 8)) -00000090: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000094: SF := high:1[RSP] -00000098: ZF := 0 = RSP -000000a5: #12582905 := mem[RSP, el]:u64 -000000a9: RSP := RSP + 8 -000000ac: call #12582905 with noreturn - -00000b36: sub _init(_init_result) -00000bd5: _init_result :: out u32 = low:32[RAX] - -00000a41: -00000a59: #12582855 := RSP -00000a5d: RSP := RSP - 8 -00000a61: CF := #12582855 < 8 -00000a67: OF := high:1[(#12582855 ^ 8) & (#12582855 ^ RSP)] -00000a6c: AF := 0x10 = (0x10 & (RSP ^ #12582855 ^ 8)) -00000a71: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000a75: SF := high:1[RSP] -00000a79: ZF := 0 = RSP -00000a81: RAX := mem[0x3FD0, el]:u64 -00000a93: #12582852 := RAX -00000a96: OF := 0 -00000a99: CF := 0 -00000a9c: AF := unknown[bits]:u1 -00000aa1: PF := - ~low:1[let $0 = #12582852 >> 4 ^ #12582852 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000aa5: SF := high:1[#12582852] -00000aa9: ZF := 0 = #12582852 -00000ab0: when ZF goto %00000aad -00000bcb: goto %00000b07 - -00000b07: -00000b13: #12582846 := RAX -00000b17: RSP := RSP - 8 -00000b1c: mem := mem with [RSP, el]:u64 <- 0x1012 -00000b1f: call #12582846 with return %00000aad - -00000aad: -00000ace: #12582850 := RSP -00000ad2: RSP := RSP + 8 -00000ad7: CF := RSP < #12582850 -00000adf: OF := ~high:1[#12582850] & (high:1[#12582850] | high:1[RSP]) & - ~(high:1[#12582850] & high:1[RSP]) -00000ae4: AF := 0x10 = (0x10 & (RSP ^ #12582850 ^ 8)) -00000ae9: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000aed: SF := high:1[RSP] -00000af1: ZF := 0 = RSP -00000afe: #12582847 := mem[RSP, el]:u64 -00000b02: RSP := RSP + 8 -00000b05: call #12582847 with noreturn - -00000b38: sub _start(_start_result) -00000bd6: _start_result :: out u32 = low:32[RAX] - -0000024a: -00000254: RBP := 0 -00000257: AF := unknown[bits]:u1 -0000025a: ZF := 1 -0000025d: PF := 1 -00000260: OF := 0 -00000263: CF := 0 -00000266: SF := 0 -0000026e: R9 := RDX -0000027a: RSI := mem[RSP, el]:u64 -0000027e: RSP := RSP + 8 -00000286: RDX := RSP -00000298: RSP := RSP & 0xFFFFFFFFFFFFFFF0 -0000029b: OF := 0 -0000029e: CF := 0 -000002a1: AF := unknown[bits]:u1 -000002a6: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000002aa: SF := high:1[RSP] -000002ae: ZF := 0 = RSP -000002bc: #12582903 := RAX -000002c0: RSP := RSP - 8 -000002c6: mem := mem with [RSP, el]:u64 <- #12582903 -000002d4: #12582902 := RSP -000002d8: RSP := RSP - 8 -000002de: mem := mem with [RSP, el]:u64 <- #12582902 -000002ea: R8 := 0 -000002ed: AF := unknown[bits]:u1 -000002f0: ZF := 1 -000002f3: PF := 1 -000002f6: OF := 0 -000002f9: CF := 0 -000002fc: SF := 0 -00000308: RCX := 0 -0000030b: AF := unknown[bits]:u1 -0000030e: ZF := 1 -00000311: PF := 1 -00000314: OF := 0 -00000317: CF := 0 -0000031a: SF := 0 -00000320: RDI := 0x1190 -0000032e: #12582901 := mem[0x3FC0, el]:u64 -00000332: RSP := RSP - 8 -00000337: mem := mem with [RSP, el]:u64 <- 0x10C1 -0000033a: call @__libc_start_main with return %0000033c - -0000033c: -0000033f: call @intrinsic:hlt with return %00000341 - -00000341: -00000bcc: call @deregister_tm_clones with noreturn - -00000b3a: sub deregister_tm_clones(deregister_tm_clones_result) -00000bd7: deregister_tm_clones_result :: out u32 = low:32[RAX] - -0000034b: -0000034f: RDI := 0x4050 -00000355: RAX := 0x4050 -00000372: #12582900 := RAX - RDI -00000377: CF := RAX < RDI -0000037e: OF := high:1[(RAX ^ RDI) & (RAX ^ #12582900)] -00000384: AF := 0x10 = (0x10 & (#12582900 ^ RAX ^ RDI)) -00000389: PF := - ~low:1[let $0 = #12582900 >> 4 ^ #12582900 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -0000038d: SF := high:1[#12582900] -00000391: ZF := 0 = #12582900 -00000398: when ZF goto %00000395 -00000bcd: goto %000008ba - -000008ba: -000008c0: RAX := mem[0x3FC8, el]:u64 -000008d2: #12582864 := RAX -000008d5: OF := 0 -000008d8: CF := 0 -000008db: AF := unknown[bits]:u1 -000008e0: PF := - ~low:1[let $0 = #12582864 >> 4 ^ #12582864 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000008e4: SF := high:1[#12582864] -000008e8: ZF := 0 = #12582864 -000008ee: when ZF goto %00000395 -00000bce: goto %000008f2 - -00000395: -000003a6: #12582898 := mem[RSP, el]:u64 -000003aa: RSP := RSP + 8 -000003ad: call #12582898 with noreturn - -000008f2: -000008f6: call RAX with noreturn - -00000b3d: sub frame_dummy(frame_dummy_result) -00000bd8: frame_dummy_result :: out u32 = low:32[RAX] - -00000564: -00000568: call @register_tm_clones with noreturn - -00000b3e: sub free(free_ptr) -00000bd9: free_ptr :: in out u64 = RDI - -0000072e: -00000995: call @free:external with return %00000997 - -00000997: -000009a0: RSP := RSP - 8 -000009a5: mem := mem with [RSP, el]:u64 <- 0 -000009a9: call @free@plt-0x10 with noreturn - -00000b3f: sub free@plt-0x10(free@plt-0x10_result) -00000bda: free@plt-0x10_result :: out u32 = low:32[RAX] - -0000096f: -0000097b: #12582862 := mem[0x3FF0, el]:u64 -0000097f: RSP := RSP - 8 -00000985: mem := mem with [RSP, el]:u64 <- #12582862 -0000098b: call mem[0x3FF8, el]:u64 with noreturn - -00000b40: sub main(main_argc, main_argv, main_result) -00000bdb: main_argc :: in u32 = low:32[RDI] -00000bdc: main_argv :: in out u64 = RSI -00000bdd: main_result :: out u32 = low:32[RAX] - -0000056f: -0000057b: #12582881 := RBP -0000057f: RSP := RSP - 8 -00000585: mem := mem with [RSP, el]:u64 <- #12582881 -0000058d: RBP := RSP -000005a7: #12582880 := RSP -000005ab: RSP := RSP - 0x20 -000005af: CF := #12582880 < 0x20 -000005b5: OF := high:1[(#12582880 ^ 0x20) & (#12582880 ^ RSP)] -000005ba: AF := 0x10 = (0x10 & (RSP ^ #12582880 ^ 0x20)) -000005bf: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000005c3: SF := high:1[RSP] -000005c7: ZF := 0 = RSP -000005d1: mem := mem with [RBP - 8, el]:u64 <- 0 -000005db: mem := mem with [RBP - 0x10, el]:u64 <- 0 -000005e1: RDI := 0xB -000005ed: RSP := RSP - 8 -000005f2: mem := mem with [RSP, el]:u64 <- 0x11B2 -000005f4: call @malloc with return %000005f6 - -000005f6: -000005fe: mem := mem with [0x4058, el]:u64 <- RAX -00000606: RAX := mem[0x4058, el]:u64 -00000612: mem := mem with [RBP - 0x20, el]:u64 <- RAX -00000618: RDI := 0x4041 -00000624: RSP := RSP - 8 -00000629: mem := mem with [RSP, el]:u64 <- 0x11D0 -0000062b: call @strlen with return %0000062d - -0000062d: -00000635: RDI := mem[RBP - 0x20, el]:u64 -0000063d: RDX := RAX -00000643: RSI := 0x4041 -0000064f: RSP := RSP - 8 -00000654: mem := mem with [RSP, el]:u64 <- 0x11E3 -00000656: call @memcpy with return %00000658 - -00000658: -0000065e: RDI := mem[0x4058, el]:u64 -0000066a: RSP := RSP - 8 -0000066f: mem := mem with [RSP, el]:u64 <- 0x11EF -00000671: call @puts with return %00000673 - -00000673: -00000679: RAX := mem[0x4058, el]:u64 -00000696: #12582877 := RAX -0000069a: RAX := RAX + 4 -0000069f: CF := RAX < #12582877 -000006a7: OF := ~high:1[#12582877] & (high:1[#12582877] | high:1[RAX]) & - ~(high:1[#12582877] & high:1[RAX]) -000006ac: AF := 0x10 = (0x10 & (RAX ^ #12582877 ^ 4)) -000006b1: PF := - ~low:1[let $0 = RAX >> 4 ^ RAX in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000006b5: SF := high:1[RAX] -000006b9: ZF := 0 = RAX -000006c5: mem := mem with [RBP - 8, el]:u64 <- RAX -000006cd: RAX := mem[0x4058, el]:u64 -000006d9: mem := mem with [RBP - 0x18, el]:u64 <- RAX -000006e1: RDI := mem[0x4058, el]:u64 -000006ec: RSP := RSP - 8 -000006f1: mem := mem with [RSP, el]:u64 <- 0x1215 -000006f3: call @strlen with return %000006f5 - -000006f5: -000006fd: RDI := mem[RBP - 0x18, el]:u64 -00000705: RDX := RAX -0000070b: RSI := 1 -00000717: RSP := RSP - 8 -0000071c: mem := mem with [RSP, el]:u64 <- 0x1226 -0000071e: call @memset with return %00000720 - -00000720: -00000726: RDI := mem[0x4058, el]:u64 -00000732: RSP := RSP - 8 -00000737: mem := mem with [RSP, el]:u64 <- 0x1232 -00000739: call @free with return %0000073b - -0000073b: -00000745: RAX := 0 -00000748: AF := unknown[bits]:u1 -0000074b: ZF := 1 -0000074e: PF := 1 -00000751: OF := 0 -00000754: CF := 0 -00000757: SF := 0 -00000774: #12582874 := RSP -00000778: RSP := RSP + 0x20 -0000077d: CF := RSP < #12582874 -00000785: OF := ~high:1[#12582874] & (high:1[#12582874] | high:1[RSP]) & - ~(high:1[#12582874] & high:1[RSP]) -0000078a: AF := 0x10 = (0x10 & (RSP ^ #12582874 ^ 0x20)) -0000078f: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000793: SF := high:1[RSP] -00000797: ZF := 0 = RSP -000007a3: RBP := mem[RSP, el]:u64 -000007a7: RSP := RSP + 8 -000007b4: #12582871 := mem[RSP, el]:u64 -000007b8: RSP := RSP + 8 -000007bb: call #12582871 with noreturn - -00000b41: sub malloc(malloc_size, malloc_result) -00000bde: malloc_size :: in u64 = RDI -00000bdf: malloc_result :: out u64 = RAX - -000005e9: -00000a12: call @malloc:external with return %00000a14 - -00000a14: -00000a1d: RSP := RSP - 8 -00000a22: mem := mem with [RSP, el]:u64 <- 5 -00000a26: call @free@plt-0x10 with noreturn - -00000b42: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000be0: memcpy_dst :: in out u64 = RDI -00000be1: memcpy_src :: in out u64 = RSI -00000be2: memcpy_n :: in u64 = RDX -00000be3: memcpy_result :: out u64 = RAX - -0000064b: -000009f9: call @memcpy:external with return %000009fb - -000009fb: -00000a04: RSP := RSP - 8 -00000a09: mem := mem with [RSP, el]:u64 <- 4 -00000a0d: call @free@plt-0x10 with noreturn - -00000b43: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000be4: memset_buf :: in out u64 = RDI -00000be5: memset_c :: in u32 = low:32[RSI] -00000be6: memset_n :: in u64 = RDX -00000be7: memset_result :: out u64 = RAX - -00000713: -000009e0: call @memset:external with return %000009e2 - -000009e2: -000009eb: RSP := RSP - 8 -000009f0: mem := mem with [RSP, el]:u64 <- 3 -000009f4: call @free@plt-0x10 with noreturn - -00000b44: sub puts(puts_s, puts_result) -00000be8: puts_s :: in u64 = RDI -00000be9: puts_result :: out u32 = low:32[RAX] - -00000666: -000009ae: call @puts:external with return %000009b0 - -000009b0: -000009b9: RSP := RSP - 8 -000009be: mem := mem with [RSP, el]:u64 <- 1 -000009c2: call @free@plt-0x10 with noreturn - -00000b45: sub register_tm_clones(register_tm_clones_result) -00000bea: register_tm_clones_result :: out u32 = low:32[RAX] - -000003b4: -000003b8: RDI := 0x4050 -000003be: RSI := 0x4050 -000003de: #12582897 := RSI -000003e2: #12582896 := RDI -000003e7: RSI := RSI - RDI -000003ec: CF := #12582897 < #12582896 -000003f3: OF := high:1[(#12582897 ^ #12582896) & (#12582897 ^ RSI)] -000003f9: AF := 0x10 = (0x10 & (RSI ^ #12582897 ^ #12582896)) -000003fe: PF := - ~low:1[let $0 = RSI >> 4 ^ RSI in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000402: SF := high:1[RSI] -00000406: ZF := 0 = RSI -0000040e: RAX := RSI -00000423: #12582894 := RSI -00000427: RSI := RSI >> 0x3F -0000042b: CF := high:1[#12582894 << 1] -0000042f: SF := high:1[RSI] -00000433: ZF := 0 = RSI -00000438: PF := - ~low:1[let $0 = RSI >> 4 ^ RSI in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -0000043b: AF := unknown[bits]:u1 -0000043e: OF := unknown[bits]:u1 -00000453: #12582892 := RAX -00000457: RAX := RAX ~>> 3 -0000045b: CF := high:1[#12582892 << 0x3D] -0000045f: SF := high:1[RAX] -00000463: ZF := 0 = RAX -00000468: PF := - ~low:1[let $0 = RAX >> 4 ^ RAX in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -0000046b: AF := unknown[bits]:u1 -0000046e: OF := unknown[bits]:u1 -00000490: #12582890 := RSI -00000494: #12582889 := RAX -00000499: RSI := RSI + #12582889 -0000049e: CF := RSI < #12582890 -000004a7: OF := high:1[#12582890] = high:1[#12582889] & - (high:1[#12582890] | high:1[RSI]) & - ~(high:1[#12582890] & high:1[RSI]) -000004ad: AF := 0x10 = (0x10 & (RSI ^ #12582890 ^ #12582889)) -000004b2: PF := - ~low:1[let $0 = RSI >> 4 ^ RSI in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000004b6: SF := high:1[RSI] -000004ba: ZF := 0 = RSI -000004cf: #12582887 := RSI -000004d3: RSI := RSI ~>> 1 -000004d7: CF := high:1[#12582887 << 0x3F] -000004db: SF := high:1[RSI] -000004df: ZF := 0 = RSI -000004e4: PF := - ~low:1[let $0 = RSI >> 4 ^ RSI in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000004e7: AF := unknown[bits]:u1 -000004ea: OF := 0 -000004f1: when ZF goto %000004ee -00000bcf: goto %00000877 - -00000877: -0000087d: RAX := mem[0x3FD8, el]:u64 -0000088f: #12582866 := RAX -00000892: OF := 0 -00000895: CF := 0 -00000898: AF := unknown[bits]:u1 -0000089d: PF := - ~low:1[let $0 = #12582866 >> 4 ^ #12582866 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000008a1: SF := high:1[#12582866] -000008a5: ZF := 0 = #12582866 -000008ab: when ZF goto %000004ee -00000bd0: goto %000008af - -000004ee: -000004ff: #12582885 := mem[RSP, el]:u64 -00000503: RSP := RSP + 8 -00000506: call #12582885 with noreturn - -000008af: -000008b3: call RAX with noreturn - -00000b48: sub strlen(strlen_s, strlen_result) -00000beb: strlen_s :: in u64 = RDI -00000bec: strlen_result :: out u64 = RAX - -00000620: -000009c7: call @strlen:external with return %000009c9 - -000009c9: -000009d2: RSP := RSP - 8 -000009d7: mem := mem with [RSP, el]:u64 <- 2 -000009db: call @free@plt-0x10 with noreturn - -00000338: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000bed: __libc_start_main_main :: in u64 = RDI -00000bee: __libc_start_main_arg2 :: in u32 = low:32[RSI] -00000bef: __libc_start_main_arg3 :: in out u64 = RDX -00000bf0: __libc_start_main_auxv :: in out u64 = RCX -00000bf1: __libc_start_main_result :: out u32 = low:32[RAX] - -0000033d: sub intrinsic:hlt() - - -00000993: sub free:external(free:external_result) -00000bf2: free:external_result :: out u32 = low:32[RAX] - -000009ac: sub puts:external(puts:external_result) -00000bf3: puts:external_result :: out u32 = low:32[RAX] - -000009c5: sub strlen:external(strlen:external_result) -00000bf4: strlen:external_result :: out u32 = low:32[RAX] - -000009de: sub memset:external(memset:external_result) -00000bf5: memset:external_result :: out u32 = low:32[RAX] - -000009f7: sub memcpy:external(memcpy:external_result) -00000bf6: memcpy:external_result :: out u32 = low:32[RAX] - -00000a10: sub malloc:external(malloc:external_result) -00000bf7: malloc:external_result :: out u32 = low:32[RAX] - -00000b2c: sub __cxa_finalize:external(__cxa_finalize:external_result) -00000bf8: __cxa_finalize:external_result :: out u32 = low:32[RAX] +0000091d: program +000008d6: sub __cxa_finalize(__cxa_finalize_result) +0000091e: __cxa_finalize_result :: out u32 = low:32[R0] + +00000513: +000006b7: R16 := 0x20000 +000006bf: R17 := mem[R16 + 0x18, el]:u64 +000006c6: R16 := R16 + 0x18 +000006cb: call R17 with noreturn + +000008d7: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000091f: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000031a: +00000321: #34 := R31 - 0x20 +00000326: mem := mem with [#34, el]:u64 <- R29 +0000032b: mem := mem with [#34 + 8, el]:u64 <- R30 +0000032f: R31 := #34 +00000336: R29 := R31 +0000033e: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000344: R19 := 0x20000 +0000034d: R0 := pad:32[mem[R19 + 0x70]] +00000359: #36 := ~~0:0[R0] +00000353: when #36 goto %00000351 +00000913: goto %000004d1 + +000004d1: +000004d5: R0 := 0x1F000 +000004dd: R0 := mem[R0 + 0xFC8, el]:u64 +000004e9: #67 := R0 = 0 +000004e3: when #67 goto %000004e1 +00000914: goto %00000501 + +00000501: +00000505: R0 := 0x20000 +0000050d: R0 := mem[R0 + 0x58, el]:u64 +00000512: R30 := 0x8F0 +00000515: call @__cxa_finalize with return %000004e1 + +000004e1: +000004ee: R30 := 0x8F4 +000004f0: call @deregister_tm_clones with return %000004f2 + +000004f2: +000004f7: R0 := 1 +000004ff: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] +00000915: goto %00000351 + +00000351: +00000361: R19 := mem[R31 + 0x10, el]:u64 +0000036b: R29 := mem[R31, el]:u64 +0000036f: R30 := mem[R31 + 8, el]:u64 +00000372: R31 := R31 + 0x20 +00000377: call R30 with noreturn + +000008db: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000920: __libc_start_main_main :: in u64 = R0 +00000921: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000922: __libc_start_main_arg3 :: in out u64 = R2 +00000923: __libc_start_main_auxv :: in out u64 = R3 +00000924: __libc_start_main_result :: out u32 = low:32[R0] + +0000025e: +0000069e: R16 := 0x20000 +000006a6: R17 := mem[R16 + 0x10, el]:u64 +000006ad: R16 := R16 + 0x10 +000006b2: call R17 with noreturn + +000008dc: sub _fini(_fini_result) +00000925: _fini_result :: out u32 = low:32[R0] + +00000020: +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +000008dd: sub _init(_init_result) +00000926: _init_result :: out u32 = low:32[R0] + +000007f3: +000007fc: #98 := R31 - 0x10 +00000801: mem := mem with [#98, el]:u64 <- R29 +00000806: mem := mem with [#98 + 8, el]:u64 <- R30 +0000080a: R31 := #98 +00000811: R29 := R31 +00000816: R30 := 0x738 +00000818: call @call_weak_fn with return %0000081a + +0000081a: +00000822: R29 := mem[R31, el]:u64 +00000826: R30 := mem[R31 + 8, el]:u64 +00000829: R31 := R31 + 0x10 +0000082e: call R30 with noreturn + +000008de: sub _start(_start_result) +00000927: _start_result :: out u32 = low:32[R0] + +00000214: +0000021a: R29 := 0 +00000220: R30 := 0 +00000228: R5 := R0 +00000230: R1 := mem[R31, el]:u64 +00000237: R2 := R31 + 8 +0000023e: R6 := R31 +00000244: R0 := 0x1F000 +0000024c: R0 := mem[R0 + 0xFD8, el]:u64 +00000252: R3 := 0 +00000258: R4 := 0 +0000025d: R30 := 0x830 +00000260: call @__libc_start_main with return %00000262 + +00000262: +00000265: R30 := 0x834 +00000268: call @abort with return %00000916 + +00000916: +00000917: call @call_weak_fn with noreturn + +000008e1: sub abort() + + +00000266: +0000071b: R16 := 0x20000 +00000723: R17 := mem[R16 + 0x38, el]:u64 +0000072a: R16 := R16 + 0x38 +0000072f: call R17 with noreturn + +000008e2: sub call_weak_fn(call_weak_fn_result) +00000928: call_weak_fn_result :: out u32 = low:32[R0] + +0000026a: +0000026e: R0 := 0x1F000 +00000276: R0 := mem[R0 + 0xFD0, el]:u64 +00000282: #12 := R0 = 0 +0000027c: when #12 goto %0000027a +00000918: goto %00000565 + +0000027a: +00000287: call R30 with noreturn + +00000565: +00000568: goto @__gmon_start__ + +00000566: +00000702: R16 := 0x20000 +0000070a: R17 := mem[R16 + 0x30, el]:u64 +00000711: R16 := R16 + 0x30 +00000716: call R17 with noreturn + +000008e4: sub deregister_tm_clones(deregister_tm_clones_result) +00000929: deregister_tm_clones_result :: out u32 = low:32[R0] + +0000028d: +00000291: R0 := 0x20000 +00000298: R0 := R0 + 0x70 +0000029e: R1 := 0x20000 +000002a5: R1 := R1 + 0x70 +000002ad: #16 := 1 + ~R0 + R1 +000002b1: NF := 63:63[#16] +000002b4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002b7: ZF := #16 = 0 +000002ba: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002c8: #21 := ZF +000002c2: when #21 goto %000002c0 +00000919: goto %0000053e + +0000053e: +00000542: R1 := 0x1F000 +0000054a: R1 := mem[R1 + 0xFC0, el]:u64 +00000555: #75 := R1 = 0 +0000054f: when #75 goto %000002c0 +0000091a: goto %00000558 + +000002c0: +000002cd: call R30 with noreturn + +00000558: +0000055e: R16 := R1 +00000563: call R16 with noreturn + +000008e7: sub frame_dummy(frame_dummy_result) +0000092a: frame_dummy_result :: out u32 = low:32[R0] + +0000037d: +0000037f: call @register_tm_clones with noreturn + +000008e8: sub free(free_ptr) +0000092b: free_ptr :: in out u64 = R0 + +000004ab: +0000074d: R16 := 0x20000 +00000755: R17 := mem[R16 + 0x48, el]:u64 +0000075c: R16 := R16 + 0x48 +00000761: call R17 with noreturn + +000008e9: sub main(main_argc, main_argv, main_result) +0000092c: main_argc :: in u32 = low:32[R0] +0000092d: main_argv :: in out u64 = R1 +0000092e: main_result :: out u32 = low:32[R0] + +00000381: +00000386: R31 := R31 - 0x40 +0000038e: #42 := R31 + 0x30 +00000393: mem := mem with [#42, el]:u64 <- R29 +00000398: mem := mem with [#42 + 8, el]:u64 <- R30 +0000039f: R29 := R31 + 0x30 +000003a7: mem := mem with [R29 - 8, el]:u64 <- 0 +000003af: mem := mem with [R29 - 0x10, el]:u64 <- 0 +000003b5: R0 := 0xB +000003ba: R30 := 0x930 +000003bd: call @malloc with return %000003bf + +000003bf: +000003c3: R8 := 0x20000 +000003cb: mem := mem with [R31 + 0x18, el]:u64 <- R8 +000003d3: mem := mem with [R8 + 0x78, el]:u64 <- R0 +000003db: R8 := mem[R8 + 0x78, el]:u64 +000003e3: mem := mem with [R31 + 8, el]:u64 <- R8 +000003e9: R0 := 0x20000 +000003f0: R0 := R0 + 0x61 +000003f8: mem := mem with [R31, el]:u64 <- R0 +000003fd: R30 := 0x954 +00000400: call @strlen with return %00000402 + +00000402: +00000408: R1 := mem[R31, el]:u64 +00000410: R2 := R0 +00000418: R0 := mem[R31 + 8, el]:u64 +0000041d: R30 := 0x964 +00000420: call @memcpy with return %00000422 + +00000422: +00000428: R8 := mem[R31 + 0x18, el]:u64 +00000430: R0 := mem[R8 + 0x78, el]:u64 +00000435: R30 := 0x970 +00000438: call @puts with return %0000043a + +0000043a: +00000440: R8 := mem[R31 + 0x18, el]:u64 +00000448: R9 := mem[R8 + 0x78, el]:u64 +0000044f: R9 := R9 + 4 +00000457: mem := mem with [R29 - 8, el]:u64 <- R9 +0000045f: R9 := mem[R8 + 0x78, el]:u64 +00000467: mem := mem with [R31 + 0x10, el]:u64 <- R9 +0000046f: R0 := mem[R8 + 0x78, el]:u64 +00000474: R30 := 0x990 +00000476: call @strlen with return %00000478 + +00000478: +0000047e: R2 := R0 +00000486: R0 := mem[R31 + 0x10, el]:u64 +0000048d: R1 := 1 +00000492: R30 := 0x9A0 +00000495: call @memset with return %00000497 + +00000497: +0000049d: R8 := mem[R31 + 0x18, el]:u64 +000004a5: R0 := mem[R8 + 0x78, el]:u64 +000004aa: R30 := 0x9AC +000004ad: call @free with return %000004af + +000004af: +000004b6: R0 := 0 +000004bf: R29 := mem[R31 + 0x30, el]:u64 +000004c3: R30 := mem[R31 + 0x38, el]:u64 +000004ca: R31 := R31 + 0x40 +000004cf: call R30 with noreturn + +000008ea: sub malloc(malloc_size, malloc_result) +0000092f: malloc_size :: in u64 = R0 +00000930: malloc_result :: out u64 = R0 + +000003bb: +000006d0: R16 := 0x20000 +000006d8: R17 := mem[R16 + 0x20, el]:u64 +000006df: R16 := R16 + 0x20 +000006e4: call R17 with noreturn + +000008eb: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000931: memcpy_dst :: in out u64 = R0 +00000932: memcpy_src :: in out u64 = R1 +00000933: memcpy_n :: in u64 = R2 +00000934: memcpy_result :: out u64 = R0 + +0000041e: +0000066c: R16 := 0x20000 +00000674: R17 := mem[R16, el]:u64 +0000067b: R16 := R16 +00000680: call R17 with noreturn + +000008ec: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000935: memset_buf :: in out u64 = R0 +00000936: memset_c :: in u32 = low:32[R1] +00000937: memset_n :: in u64 = R2 +00000938: memset_result :: out u64 = R0 + +00000493: +000006e9: R16 := 0x20000 +000006f1: R17 := mem[R16 + 0x28, el]:u64 +000006f8: R16 := R16 + 0x28 +000006fd: call R17 with noreturn + +000008ed: sub puts(puts_s, puts_result) +00000939: puts_s :: in u64 = R0 +0000093a: puts_result :: out u32 = low:32[R0] + +00000436: +00000734: R16 := 0x20000 +0000073c: R17 := mem[R16 + 0x40, el]:u64 +00000743: R16 := R16 + 0x40 +00000748: call R17 with noreturn + +000008ee: sub register_tm_clones(register_tm_clones_result) +0000093b: register_tm_clones_result :: out u32 = low:32[R0] + +000002cf: +000002d3: R0 := 0x20000 +000002da: R0 := R0 + 0x70 +000002e0: R1 := 0x20000 +000002e7: R1 := R1 + 0x70 +000002ef: R1 := R1 - R0 +000002f6: R2 := R1 >> 0x3F +000002fe: R1 := R2 + (R1 ~>> 3) +00000305: R1 := R1 >> 1 +00000311: #30 := R1 = 0 +0000030b: when #30 goto %00000309 +0000091b: goto %00000517 + +00000517: +0000051b: R2 := 0x1F000 +00000523: R2 := mem[R2 + 0xFE0, el]:u64 +0000052e: #70 := R2 = 0 +00000528: when #70 goto %00000309 +0000091c: goto %00000531 + +00000309: +00000316: call R30 with noreturn + +00000531: +00000537: R16 := R2 +0000053c: call R16 with noreturn + +000008f1: sub strlen(strlen_s, strlen_result) +0000093c: strlen_s :: in u64 = R0 +0000093d: strlen_result :: out u64 = R0 + +000003fe: +00000685: R16 := 0x20000 +0000068d: R17 := mem[R16 + 8, el]:u64 +00000694: R16 := R16 + 8 +00000699: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf index 9e6a9a178..ff00bf9d2 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf @@ -1,82 +1,145 @@ -Relocation section '.rela.dyn' at offset 0x600 contains 8 entries: +Relocation section '.rela.dyn' at offset 0x578 contains 8 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -0000000000003dd0 0000000000000008 R_X86_64_RELATIVE 1180 -0000000000003dd8 0000000000000008 R_X86_64_RELATIVE 1140 -0000000000004038 0000000000000008 R_X86_64_RELATIVE 4038 -0000000000003fc0 0000000200000006 R_X86_64_GLOB_DAT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 -0000000000003fc8 0000000300000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -0000000000003fd0 0000000700000006 R_X86_64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 -0000000000003fd8 0000000a00000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 -0000000000003fe0 0000000b00000006 R_X86_64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.2.5 + 0 +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 0x6c0 contains 6 entries: +Relocation section '.rela.plt' at offset 0x638 contains 10 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -0000000000004000 0000000100000007 R_X86_64_JUMP_SLOT 0000000000000000 free@GLIBC_2.2.5 + 0 -0000000000004008 0000000400000007 R_X86_64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.2.5 + 0 -0000000000004010 0000000500000007 R_X86_64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.2.5 + 0 -0000000000004018 0000000600000007 R_X86_64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.2.5 + 0 -0000000000004020 0000000800000007 R_X86_64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.14 + 0 -0000000000004028 0000000900000007 R_X86_64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.2.5 + 0 +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 12 entries: +Symbol table '.dynsym' contains 15 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.2.5 (2) - 2: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) - 3: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.2.5 (2) - 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.2.5 (2) - 6: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.2.5 (2) - 7: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.14 (4) - 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.2.5 (2) - 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 11: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 (2) + 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 44 entries: +Symbol table '.symtab' contains 100 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o - 2: 000000000000037c 32 OBJECT LOCAL DEFAULT 4 __abi_tag - 3: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 4: 00000000000010d0 0 FUNC LOCAL DEFAULT 15 deregister_tm_clones - 5: 0000000000001100 0 FUNC LOCAL DEFAULT 15 register_tm_clones - 6: 0000000000001140 0 FUNC LOCAL DEFAULT 15 __do_global_dtors_aux - 7: 0000000000004050 1 OBJECT LOCAL DEFAULT 26 completed.0 - 8: 0000000000003dd8 0 OBJECT LOCAL DEFAULT 21 __do_global_dtors_aux_fini_array_entry - 9: 0000000000001180 0 FUNC LOCAL DEFAULT 15 frame_dummy - 10: 0000000000003dd0 0 OBJECT LOCAL DEFAULT 20 __frame_dummy_init_array_entry - 11: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 12: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 13: 00000000000020d8 0 OBJECT LOCAL DEFAULT 19 __FRAME_END__ - 14: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 15: 0000000000003de0 0 OBJECT LOCAL DEFAULT 22 _DYNAMIC - 16: 0000000000002004 0 NOTYPE LOCAL DEFAULT 18 __GNU_EH_FRAME_HDR - 17: 0000000000003fe8 0 OBJECT LOCAL DEFAULT 24 _GLOBAL_OFFSET_TABLE_ - 18: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.2.5 - 19: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 20: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 21: 0000000000004030 0 NOTYPE WEAK DEFAULT 25 data_start - 22: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.2.5 - 23: 000000000000404c 0 NOTYPE GLOBAL DEFAULT 25 _edata - 24: 000000000000123c 0 FUNC GLOBAL HIDDEN 16 _fini - 25: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.2.5 - 26: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.2.5 - 27: 0000000000004040 1 OBJECT GLOBAL DEFAULT 25 password - 28: 0000000000004030 0 NOTYPE GLOBAL DEFAULT 25 __data_start - 29: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 30: 0000000000004038 0 OBJECT GLOBAL HIDDEN 25 __dso_handle - 31: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.14 - 32: 0000000000002000 4 OBJECT GLOBAL DEFAULT 17 _IO_stdin_used - 33: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.2.5 - 34: 0000000000004060 0 NOTYPE GLOBAL DEFAULT 26 _end - 35: 00000000000010a0 34 FUNC GLOBAL DEFAULT 15 _start - 36: 0000000000004058 8 OBJECT GLOBAL DEFAULT 26 buf - 37: 0000000000004041 11 OBJECT GLOBAL DEFAULT 25 stext - 38: 000000000000404c 0 NOTYPE GLOBAL DEFAULT 26 __bss_start - 39: 0000000000001190 170 FUNC GLOBAL DEFAULT 15 main - 40: 0000000000004050 0 OBJECT GLOBAL HIDDEN 25 __TMC_END__ - 41: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 42: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 - 43: 0000000000001000 0 FUNC GLOBAL HIDDEN 12 _init + 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: 00000000000009bc 0 SECTION LOCAL DEFAULT 15 .fini + 16: 00000000000009d0 0 SECTION LOCAL DEFAULT 16 .rodata + 17: 00000000000009d4 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr + 18: 0000000000000a10 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: 0000000000000a24 0 NOTYPE LOCAL DEFAULT 18 $d + 32: 00000000000009d0 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: 00000000000009bc 0 NOTYPE LOCAL DEFAULT 15 $x + 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 39: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x + 40: 00000000000009c8 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: 0000000000000a38 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: 0000000000000a98 0 NOTYPE LOCAL DEFAULT 18 $d.4 + 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 62: 0000000000000ad4 0 NOTYPE LOCAL DEFAULT 18 $d + 63: 0000000000000ad4 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ + 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 65: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 66: 00000000000009d4 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: 00000000000009bc 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: 00000000000009d0 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 168 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/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 index fc9650154..72b8cc4de 100644 --- 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 @@ -1,754 +1,756 @@ 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 2392 20 2392)\n(code-region 1984 408 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 132)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2392 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2392 20)\n(llvm:code-entry .text 1984 408)\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 2416 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 2688)\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 2416 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 2688)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2480 208 2480)\n(llvm:section-entry .eh_frame_hdr 2416 60 2416)\n(llvm:section-entry .rodata 2412 4 2412)\n(llvm:section-entry .fini 2392 20 2392)\n(llvm:section-entry .text 1984 408 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 132 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2392 0 2392 2392)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2688 0)\n(mapped 130504 676 64968)\n(named-region 0 2688 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 408 .text)\n(named-region 2392 20 .fini)\n(named-region 2412 4 .rodata)\n(named-region 2416 60 .eh_frame_hdr)\n(named-region 2480 208 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2392 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 408)\n(section 2392 20)\n(section 2412 4)\n(section 2416 60)\n(section 2480 208)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2688 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 132 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2392 2392)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\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\x70\x09\x00\x00\x00\x00\x00\x00\x70\x09\x00\x00\x00\x00\x00\x00\x70\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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e\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"), -Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x80\x0a\x00\x00\x00\x00\x00\x00\x80\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\x70\x09\x00\x00\x00\x00\x00\x00\x70\x09\x00\x00\x00\x00\x00\x00\x70\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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7e\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x8a\xff\xff\x97\xa0\x3e\x40\xf9\x98\xff\xff\x97\xe0\x03\x1f\x2a"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\xad\xa4\x13\x05\x37\xf4\x89\x19\x7a\x0b\xac\x58\xc5\x5f\x88\xa1\xd1\x70\x21\x9e"), +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(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x958, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x96C, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x970, "\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", 0x9B0, "\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", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x58\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".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", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7e\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x8a\xff\xff\x97\xa0\x3e\x40\xf9\x98\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,0xA7F), Attr("segment","02 0 2688")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +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,0x947), Attr("section","\".symtab\"")), -Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +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,0x2B3), Attr("section","\".gnu.hash\"")), -Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), -Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), -Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), -Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), -Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), -Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), -Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x957), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x957), Attr("symbol-info","main 0x8D4 132")), -Annotation(Region(0x958,0x96B), Attr("section","\".fini\"")), -Annotation(Region(0x96C,0x96F), Attr("section","\".rodata\"")), -Annotation(Region(0x970,0x9AB), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x9B0,0xA7F), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), -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(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(0x7C0,0x957), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x957), Attr("code-region","()")), -Annotation(Region(0x958,0x96B), Attr("code-region","()"))]), -Program(Tid(2_126, "%0000084e"), Attrs([]), - Subs([Sub(Tid(2_055, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_127, "%0000084f"), +Annotation(Region(0x800,0x997), Attr("section","\".text\"")), +Annotation(Region(0x800,0x997), Attr("code-region","()")), +Annotation(Region(0x998,0x9AB), Attr("code-region","()"))]), +Program(Tid(2_235, "%000008bb"), Attrs([]), + Subs([Sub(Tid(2_164, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_236, "%000008bc"), 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_639, "%00000667"), Attrs([Attr("address","0x740"), + Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_639, "%00000667"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_647, "%0000066f"), Attrs([Attr("address","0x744"), +Def(Tid(1_647, "%0000066f"), 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_654, "%00000676"), Attrs([Attr("address","0x748"), +Def(Tid(1_654, "%00000676"), 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_659, "%0000067b"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_056, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_128, "%00000850"), +Sub(Tid(2_165, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_237, "%000008bd"), 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(758, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(765, "%000002fd"), - Attrs([Attr("address","0x880"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(765, "%000002fd"), + Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(770, "%00000302"), Attrs([Attr("address","0x880"), +Def(Tid(770, "%00000302"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(775, "%00000307"), Attrs([Attr("address","0x880"), +Def(Tid(775, "%00000307"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x880"), +Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), Var("#34",Imm(64))), Def(Tid(786, "%00000312"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(794, "%0000031a"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + 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(800, "%00000320"), Attrs([Attr("address","0x88C"), +Def(Tid(800, "%00000320"), Attrs([Attr("address","0x8CC"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(809, "%00000329"), Attrs([Attr("address","0x890"), +Def(Tid(809, "%00000329"), Attrs([Attr("address","0x8D0"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(821, "%00000335"), Attrs([Attr("address","0x894"), +Def(Tid(821, "%00000335"), Attrs([Attr("address","0x8D4"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(815, "%0000032f"), Attrs([Attr("address","0x894"), +Jmps([Goto(Tid(815, "%0000032f"), Attrs([Attr("address","0x8D4"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(813, "%0000032d"))), Goto(Tid(2_116, "%00000844"), Attrs([]), +Direct(Tid(813, "%0000032d"))), Goto(Tid(2_225, "%000008b1"), Attrs([]), Int(1,1), Direct(Tid(1_153, "%00000481")))])), Blk(Tid(1_153, "%00000481"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x898"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x8D8"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x89C"), +Def(Tid(1_165, "%0000048d"), 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)), -Def(Tid(1_177, "%00000499"), Attrs([Attr("address","0x8A0"), +Def(Tid(1_177, "%00000499"), Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), Var("#85",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_171, "%00000493"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), Var("#85",Imm(1)), Direct(Tid(1_169, "%00000491"))), -Goto(Tid(2_117, "%00000845"), Attrs([]), Int(1,1), +Goto(Tid(2_226, "%000008b2"), Attrs([]), Int(1,1), Direct(Tid(1_201, "%000004b1")))])), Blk(Tid(1_201, "%000004b1"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x8A4"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_213, "%000004bd"), 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_218, "%000004c2"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_055, "@__cxa_finalize")),Direct(Tid(1_169, "%00000491"))))])), -Blk(Tid(1_169, "%00000491"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x8B0"), +Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Int(1,1), +(Direct(Tid(2_164, "@__cxa_finalize")),Direct(Tid(1_169, "%00000491"))))])), +Blk(Tid(1_169, "%00000491"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_069, "@deregister_tm_clones")),Direct(Tid(1_186, "%000004a2"))))])), -Blk(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_178, "@deregister_tm_clones")),Direct(Tid(1_186, "%000004a2"))))])), +Blk(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x8F4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_199, "%000004af"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_118, "%00000846"), Attrs([]), Int(1,1), +Jmps([Goto(Tid(2_227, "%000008b3"), Attrs([]), Int(1,1), Direct(Tid(813, "%0000032d")))])), Blk(Tid(813, "%0000032d"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(829, "%0000033d"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(829, "%0000033d"), + 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(839, "%00000347"), Attrs([Attr("address","0x8C0"), +Def(Tid(839, "%00000347"), 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(843, "%0000034b"), Attrs([Attr("address","0x8C0"), +Def(Tid(843, "%0000034b"), 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(846, "%0000034e"), Attrs([Attr("address","0x8C0"), +Def(Tid(846, "%0000034e"), 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(851, "%00000353"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_060, "@__libc_start_main"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_169, "@__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_129, "%00000851"), +Attr("address","0x780"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_238, "%000008be"), 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_130, "%00000852"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_239, "%000008bf"), 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_131, "%00000853"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_240, "%000008c0"), 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_132, "%00000854"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_241, "%000008c1"), 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_133, "%00000855"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_242, "%000008c2"), 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(570, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_614, "%0000064e"), Attrs([Attr("address","0x730"), + Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_614, "%0000064e"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x734"), +Def(Tid(1_622, "%00000656"), 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_629, "%0000065d"), Attrs([Attr("address","0x738"), +Def(Tid(1_629, "%0000065d"), 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_634, "%00000662"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_061, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x958")]), - "_fini", Args([Arg(Tid(2_134, "%00000856"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_170, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x998")]), + "_fini", Args([Arg(Tid(2_243, "%000008c3"), 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","0x958")]), Phis([]), Defs([Def(Tid(41, "%00000029"), - Attrs([Attr("address","0x95C"), + Attrs([Attr("address","0x998")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x99C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x95C"), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x99C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x95C"), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x99C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x95C"), +Def(Tid(55, "%00000037"), Attrs([Attr("address","0x99C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x960"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9A0"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x964"), +Def(Tid(72, "%00000048"), 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(76, "%0000004c"), Attrs([Attr("address","0x964"), +Def(Tid(76, "%0000004c"), 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(79, "%0000004f"), Attrs([Attr("address","0x964"), +Def(Tid(79, "%0000004f"), 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(84, "%00000054"), - Attrs([Attr("address","0x968"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_062, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_135, "%00000857"), + Attrs([Attr("address","0x9A8"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_171, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), + "_init", Args([Arg(Tid(2_244, "%000008c4"), 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_837, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_846, "%00000736"), Attrs([Attr("address","0x6DC"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_946, "@_init"), + Attrs([Attr("address","0x728")]), Phis([]), +Defs([Def(Tid(1_955, "%000007a3"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#116",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_960, "%000007a8"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#116",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_856, "%00000740"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_965, "%000007ad"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#116",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_860, "%00000744"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_969, "%000007b1"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#116",Imm(64))), Def(Tid(1_867, "%0000074b"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_872, "%00000750"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_874, "%00000752"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_067, "@call_weak_fn")),Direct(Tid(1_876, "%00000754"))))])), -Blk(Tid(1_876, "%00000754"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x6E8"), +Var("#116",Imm(64))), Def(Tid(1_976, "%000007b8"), + Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_981, "%000007bd"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_983, "%000007bf"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), +(Direct(Tid(2_176, "@call_weak_fn")),Direct(Tid(1_985, "%000007c1"))))])), +Blk(Tid(1_985, "%000007c1"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(1_993, "%000007c9"), 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_888, "%00000760"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_997, "%000007cd"), 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_891, "%00000763"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_000, "%000007d0"), 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_896, "%00000768"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_063, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_136, "%00000858"), - 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(496, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(502, "%000001f6"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(508, "%000001fc"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(516, "%00000204"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(524, "%0000020c"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_005, "%000007d5"), + Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_172, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("stub","()"), Attr("entry-point","()")]), "_start", + Args([Arg(Tid(2_245, "%000008c5"), 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(496, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(502, "%000001f6"), Attrs([Attr("address","0x804"), +Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), +Def(Tid(508, "%000001fc"), Attrs([Attr("address","0x808"), +Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), +Def(Tid(516, "%00000204"), 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(531, "%00000213"), Attrs([Attr("address","0x7D4"), +Def(Tid(531, "%00000213"), Attrs([Attr("address","0x814"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(538, "%0000021a"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(544, "%00000220"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), Def(Tid(552, "%00000228"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + 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(558, "%0000022e"), Attrs([Attr("address","0x7E4"), +Def(Tid(558, "%0000022e"), Attrs([Attr("address","0x824"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(564, "%00000234"), Attrs([Attr("address","0x7E8"), +Def(Tid(564, "%00000234"), Attrs([Attr("address","0x828"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(569, "%00000239"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(572, "%0000023c"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_060, "@__libc_start_main")),Direct(Tid(574, "%0000023e"))))])), -Blk(Tid(574, "%0000023e"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(577, "%00000241"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(580, "%00000244"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_066, "@abort")),Direct(Tid(2_119, "%00000847"))))])), -Blk(Tid(2_119, "%00000847"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_120, "%00000848"), Attrs([]), Int(1,1), -(Direct(Tid(2_067, "@call_weak_fn")),))]))])), Sub(Tid(2_066, "@abort"), +Def(Tid(569, "%00000239"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(572, "%0000023c"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Int(1,1), +(Direct(Tid(2_169, "@__libc_start_main")),Direct(Tid(574, "%0000023e"))))])), +Blk(Tid(574, "%0000023e"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(577, "%00000241"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(580, "%00000244"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Int(1,1), +(Direct(Tid(2_175, "@abort")),Direct(Tid(2_228, "%000008b4"))))])), +Blk(Tid(2_228, "%000008b4"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_229, "%000008b5"), Attrs([]), Int(1,1), +(Direct(Tid(2_176, "@call_weak_fn")),))]))])), Sub(Tid(2_175, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(578, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_739, "%000006cb"), Attrs([Attr("address","0x780"), +Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(578, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_739, "%000006cb"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_747, "%000006d3"), Attrs([Attr("address","0x784"), +Def(Tid(1_747, "%000006d3"), 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_754, "%000006da"), Attrs([Attr("address","0x788"), +Def(Tid(1_754, "%000006da"), 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_759, "%000006df"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_067, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_137, "%00000859"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_176, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_246, "%000008c6"), 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(582, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(586, "%0000024a"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(586, "%0000024a"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), Def(Tid(594, "%00000252"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + 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)), -Def(Tid(606, "%0000025e"), Attrs([Attr("address","0x7FC"), +Def(Tid(606, "%0000025e"), Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(600, "%00000258"), - Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), Direct(Tid(598, "%00000256"))), -Goto(Tid(2_121, "%00000849"), Attrs([]), Int(1,1), +Goto(Tid(2_230, "%000008b6"), Attrs([]), Int(1,1), Direct(Tid(1_301, "%00000515")))])), Blk(Tid(598, "%00000256"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(611, "%00000263"), Attrs([Attr("address","0x804"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(611, "%00000263"), Attrs([Attr("address","0x844"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_301, "%00000515"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_304, "%00000518"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), +Blk(Tid(1_301, "%00000515"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_304, "%00000518"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0x80")]), Int(1,1), Direct(Tid(1_302, "@__gmon_start__")))])), Blk(Tid(1_302, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_714, "%000006b2"), Attrs([Attr("address","0x770"), + Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_714, "%000006b2"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_722, "%000006ba"), Attrs([Attr("address","0x774"), +Def(Tid(1_722, "%000006ba"), 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_729, "%000006c1"), Attrs([Attr("address","0x778"), +Def(Tid(1_729, "%000006c1"), 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_734, "%000006c6"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_069, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_138, "%0000085a"), +Sub(Tid(2_178, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_247, "%000008c7"), 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(617, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(621, "%0000026d"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(621, "%0000026d"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), Def(Tid(628, "%00000274"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x70")]), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x818"), +Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x858"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(641, "%00000281"), Attrs([Attr("address","0x81C"), +Def(Tid(641, "%00000281"), Attrs([Attr("address","0x85C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(649, "%00000289"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("#16",Imm(64)), PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x820"), +Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), Extract(63,63,Var("#16",Imm(64)))), Def(Tid(656, "%00000290"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(659, "%00000293"), Attrs([Attr("address","0x820"), +Def(Tid(659, "%00000293"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(662, "%00000296"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(676, "%000002a4"), Attrs([Attr("address","0x824"), +Def(Tid(676, "%000002a4"), Attrs([Attr("address","0x864"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(670, "%0000029e"), Attrs([Attr("address","0x824"), +Jmps([Goto(Tid(670, "%0000029e"), Attrs([Attr("address","0x864"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(668, "%0000029c"))), Goto(Tid(2_122, "%0000084a"), Attrs([]), +Direct(Tid(668, "%0000029c"))), Goto(Tid(2_231, "%000008b7"), Attrs([]), Int(1,1), Direct(Tid(1_262, "%000004ee")))])), Blk(Tid(1_262, "%000004ee"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x828"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x868"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x82C"), +Def(Tid(1_274, "%000004fa"), 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)), -Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x830"), +Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), Var("#93",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_279, "%000004ff"), - Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), Var("#93",Imm(1)), Direct(Tid(668, "%0000029c"))), -Goto(Tid(2_123, "%0000084b"), Attrs([]), Int(1,1), +Goto(Tid(2_232, "%000008b8"), Attrs([]), Int(1,1), Direct(Tid(1_288, "%00000508")))])), Blk(Tid(668, "%0000029c"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(681, "%000002a9"), Attrs([Attr("address","0x83C"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(681, "%000002a9"), Attrs([Attr("address","0x87C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_288, "%00000508"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x834"), +Blk(Tid(1_288, "%00000508"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x874"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_299, "%00000513"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_299, "%00000513"), Attrs([Attr("address","0x878"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_072, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_139, "%0000085b"), +Sub(Tid(2_181, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_248, "%000008c8"), 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(857, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(859, "%0000035b"), Attrs([Attr("address","0x8D0"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(859, "%0000035b"), Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_079, "@register_tm_clones")),))]))])), Sub(Tid(2_073, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_140, "%0000085c"), +(Direct(Tid(2_188, "@register_tm_clones")),))]))])), Sub(Tid(2_182, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_249, "%000008c9"), 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_097, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_789, "%000006fd"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_097, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_789, "%000006fd"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_797, "%00000705"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_797, "%00000705"), 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_804, "%0000070c"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_804, "%0000070c"), 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_809, "%00000711"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_074, "@main"), + Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_183, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_141, "%0000085d"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_250, "%000008ca"), 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_142, "%0000085e"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_251, "%000008cb"), 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_143, "%0000085f"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_252, "%000008cc"), 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(861, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(868, "%00000364"), - Attrs([Attr("address","0x8D4"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(868, "%00000364"), + Attrs([Attr("address","0x914"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(873, "%00000369"), Attrs([Attr("address","0x8D4"), +Def(Tid(873, "%00000369"), Attrs([Attr("address","0x914"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(878, "%0000036e"), Attrs([Attr("address","0x8D4"), +Def(Tid(878, "%0000036e"), Attrs([Attr("address","0x914"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(882, "%00000372"), Attrs([Attr("address","0x8D4"), +Def(Tid(882, "%00000372"), Attrs([Attr("address","0x914"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), Var("#42",Imm(64))), Def(Tid(890, "%0000037a"), - Attrs([Attr("address","0x8D8"), Attr("insn","str x21, [sp, #0x10]")]), + 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(898, "%00000382"), Attrs([Attr("address","0x8DC"), +Def(Tid(898, "%00000382"), Attrs([Attr("address","0x91C"), Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#47",Imm(64)), PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(903, "%00000387"), - Attrs([Attr("address","0x8DC"), Attr("insn","stp x20, x19, [sp, #0x20]")]), + Attrs([Attr("address","0x91C"), Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#47",Imm(64)),Var("R20",Imm(64)),LittleEndian(),64)), -Def(Tid(908, "%0000038c"), Attrs([Attr("address","0x8DC"), +Def(Tid(908, "%0000038c"), Attrs([Attr("address","0x91C"), Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#47",Imm(64)),Int(8,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(915, "%00000393"), Attrs([Attr("address","0x8E0"), +Def(Tid(915, "%00000393"), Attrs([Attr("address","0x920"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(922, "%0000039a"), Attrs([Attr("address","0x8E4"), +Def(Tid(922, "%0000039a"), Attrs([Attr("address","0x924"), Attr("insn","mov w0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x8E8"), -Attr("insn","bl #-0x198")]), Var("R30",Imm(64)), Int(2284,64))]), -Jmps([Call(Tid(930, "%000003a2"), Attrs([Attr("address","0x8E8"), -Attr("insn","bl #-0x198")]), Int(1,1), -(Direct(Tid(2_075, "@malloc")),Direct(Tid(932, "%000003a4"))))])), -Blk(Tid(932, "%000003a4"), Attrs([Attr("address","0x8EC")]), Phis([]), -Defs([Def(Tid(936, "%000003a8"), Attrs([Attr("address","0x8EC"), +Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x188")]), Var("R30",Imm(64)), Int(2348,64))]), +Jmps([Call(Tid(930, "%000003a2"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x188")]), Int(1,1), +(Direct(Tid(2_184, "@malloc")),Direct(Tid(932, "%000003a4"))))])), +Blk(Tid(932, "%000003a4"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(936, "%000003a8"), Attrs([Attr("address","0x92C"), Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), -Def(Tid(942, "%000003ae"), Attrs([Attr("address","0x8F0"), +Def(Tid(942, "%000003ae"), Attrs([Attr("address","0x930"), Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), -Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8F4"), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x934"), Attr("insn","add x20, x20, #0x61")]), Var("R20",Imm(64)), PLUS(Var("R20",Imm(64)),Int(97,64))), Def(Tid(957, "%000003bd"), - Attrs([Attr("address","0x8F8"), Attr("insn","mov x19, x0")]), + Attrs([Attr("address","0x938"), Attr("insn","mov x19, x0")]), Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(965, "%000003c5"), - Attrs([Attr("address","0x8FC"), Attr("insn","str x0, [x21, #0x78]")]), + 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(973, "%000003cd"), Attrs([Attr("address","0x900"), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x940"), Attr("insn","mov x0, x20")]), Var("R0",Imm(64)), Var("R20",Imm(64))), -Def(Tid(978, "%000003d2"), Attrs([Attr("address","0x904"), -Attr("insn","bl #-0x1e4")]), Var("R30",Imm(64)), Int(2312,64))]), -Jmps([Call(Tid(981, "%000003d5"), Attrs([Attr("address","0x904"), -Attr("insn","bl #-0x1e4")]), Int(1,1), -(Direct(Tid(2_082, "@strlen")),Direct(Tid(983, "%000003d7"))))])), -Blk(Tid(983, "%000003d7"), Attrs([Attr("address","0x908")]), Phis([]), -Defs([Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x908"), +Def(Tid(978, "%000003d2"), Attrs([Attr("address","0x944"), +Attr("insn","bl #-0x1d4")]), Var("R30",Imm(64)), Int(2376,64))]), +Jmps([Call(Tid(981, "%000003d5"), Attrs([Attr("address","0x944"), +Attr("insn","bl #-0x1d4")]), Int(1,1), +(Direct(Tid(2_191, "@strlen")),Direct(Tid(983, "%000003d7"))))])), +Blk(Tid(983, "%000003d7"), Attrs([Attr("address","0x948")]), Phis([]), +Defs([Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x948"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x90C"), +Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x94C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x910"), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x950"), Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), -Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x914"), -Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2328,64))]), -Jmps([Call(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x914"), -Attr("insn","bl #-0x204")]), Int(1,1), -(Direct(Tid(2_076, "@memcpy")),Direct(Tid(1_015, "%000003f7"))))])), -Blk(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x918"), +Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2392,64))]), +Jmps([Call(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_185, "@memcpy")),Direct(Tid(1_015, "%000003f7"))))])), +Blk(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x958")]), Phis([]), +Defs([Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x958"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_026, "%00000402"), Attrs([Attr("address","0x91C"), -Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2336,64))]), -Jmps([Call(Tid(1_029, "%00000405"), Attrs([Attr("address","0x91C"), -Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_078, "@puts")),Direct(Tid(1_031, "%00000407"))))])), -Blk(Tid(1_031, "%00000407"), Attrs([Attr("address","0x920")]), Phis([]), -Defs([Def(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x920"), +Def(Tid(1_026, "%00000402"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2400,64))]), +Jmps([Call(Tid(1_029, "%00000405"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x17c")]), Int(1,1), +(Direct(Tid(2_187, "@puts")),Direct(Tid(1_031, "%00000407"))))])), +Blk(Tid(1_031, "%00000407"), Attrs([Attr("address","0x960")]), Phis([]), +Defs([Def(Tid(1_037, "%0000040d"), 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(1_045, "%00000415"), Attrs([Attr("address","0x924"), +Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x964"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_050, "%0000041a"), Attrs([Attr("address","0x928"), -Attr("insn","bl #-0x208")]), Var("R30",Imm(64)), Int(2348,64))]), -Jmps([Call(Tid(1_052, "%0000041c"), Attrs([Attr("address","0x928"), -Attr("insn","bl #-0x208")]), Int(1,1), -(Direct(Tid(2_082, "@strlen")),Direct(Tid(1_054, "%0000041e"))))])), -Blk(Tid(1_054, "%0000041e"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_060, "%00000424"), Attrs([Attr("address","0x92C"), +Def(Tid(1_050, "%0000041a"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(1_052, "%0000041c"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x1f8")]), Int(1,1), +(Direct(Tid(2_191, "@strlen")),Direct(Tid(1_054, "%0000041e"))))])), +Blk(Tid(1_054, "%0000041e"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_060, "%00000424"), Attrs([Attr("address","0x96C"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x930"), +Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x970"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x934"), +Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x974"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1d8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1d8")]), Int(1,1), -(Direct(Tid(2_077, "@memset")),Direct(Tid(1_085, "%0000043d"))))])), -Blk(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x93C"), +Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1c8")]), Var("R30",Imm(64)), Int(2428,64))]), +Jmps([Call(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1c8")]), Int(1,1), +(Direct(Tid(2_186, "@memset")),Direct(Tid(1_085, "%0000043d"))))])), +Blk(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_091, "%00000443"), 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_096, "%00000448"), Attrs([Attr("address","0x940"), -Attr("insn","bl #-0x1a0")]), Var("R30",Imm(64)), Int(2372,64))]), -Jmps([Call(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x940"), -Attr("insn","bl #-0x1a0")]), Int(1,1), -(Direct(Tid(2_073, "@free")),Direct(Tid(1_101, "%0000044d"))))])), -Blk(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x944")]), Phis([]), -Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x944"), +Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x190")]), Var("R30",Imm(64)), Int(2436,64))]), +Jmps([Call(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x190")]), Int(1,1), +(Direct(Tid(2_182, "@free")),Direct(Tid(1_101, "%0000044d"))))])), +Blk(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x984")]), Phis([]), +Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x984"), Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x948"), +Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x988"), Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R20",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),LittleEndian(),64)), -Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x948"), +Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x988"), Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), -Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x94C"), +Def(Tid(1_129, "%00000469"), 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_139, "%00000473"), Attrs([Attr("address","0x950"), +Def(Tid(1_139, "%00000473"), 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_143, "%00000477"), Attrs([Attr("address","0x950"), +Def(Tid(1_143, "%00000477"), 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_146, "%0000047a"), Attrs([Attr("address","0x950"), +Def(Tid(1_146, "%0000047a"), 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_151, "%0000047f"), - Attrs([Attr("address","0x954"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_075, "@malloc"), + Attrs([Attr("address","0x994"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_184, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_144, "%00000860"), Attrs([Attr("alloc-size","()"), +Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_253, "%000008cd"), 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_145, "%00000861"), +Var("R0",Imm(64)), In()), Arg(Tid(2_254, "%000008ce"), 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(928, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_664, "%00000680"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(928, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_664, "%00000680"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_672, "%00000688"), Attrs([Attr("address","0x754"), +Def(Tid(1_672, "%00000688"), 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_679, "%0000068f"), Attrs([Attr("address","0x758"), +Def(Tid(1_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_076, "@memcpy"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_185, "@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_146, "%00000862"), Attrs([Attr("nonnull","()"), +Attr("address","0x760"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_255, "%000008cf"), 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_147, "%00000863"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_256, "%000008d0"), 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_148, "%00000864"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_257, "%000008d1"), 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_149, "%00000865"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_258, "%000008d2"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_011, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_564, "%0000061c"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_011, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_564, "%0000061c"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_572, "%00000624"), Attrs([Attr("address","0x714"), +Def(Tid(1_572, "%00000624"), 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_579, "%0000062b"), Attrs([Attr("address","0x718"), +Def(Tid(1_579, "%0000062b"), Attrs([Attr("address","0x768"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), Var("R16",Imm(64)))]), Jmps([Call(Tid(1_584, "%00000630"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_077, "@memset"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_186, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_150, "%00000866"), Attrs([Attr("nonnull","()"), +Attr("address","0x7B0"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_259, "%000008d3"), 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_151, "%00000867"), +Both()), Arg(Tid(2_260, "%000008d4"), 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_152, "%00000868"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_261, "%000008d5"), 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_153, "%00000869"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_262, "%000008d6"), 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_081, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_689, "%00000699"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_081, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_689, "%00000699"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_697, "%000006a1"), Attrs([Attr("address","0x764"), +Def(Tid(1_697, "%000006a1"), 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_704, "%000006a8"), Attrs([Attr("address","0x768"), +Def(Tid(1_704, "%000006a8"), 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_709, "%000006ad"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_078, "@puts"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_187, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_154, "%0000086a"), Attrs([Attr("c.layout","*[char : 8]"), +Attr("address","0x7E0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_263, "%000008d7"), 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_155, "%0000086b"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_264, "%000008d8"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_027, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_764, "%000006e4"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_027, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_764, "%000006e4"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_772, "%000006ec"), Attrs([Attr("address","0x794"), +Def(Tid(1_772, "%000006ec"), 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_779, "%000006f3"), Attrs([Attr("address","0x798"), +Def(Tid(1_779, "%000006f3"), 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_784, "%000006f8"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_079, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_156, "%0000086c"), +Sub(Tid(2_188, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_265, "%000008d9"), 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(683, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(687, "%000002af"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(683, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(687, "%000002af"), Attrs([Attr("address","0x880"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(694, "%000002b6"), Attrs([Attr("address","0x844"), +Def(Tid(694, "%000002b6"), Attrs([Attr("address","0x884"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(700, "%000002bc"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), Def(Tid(707, "%000002c3"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x70")]), + Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x850"), +Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x890"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(722, "%000002d2"), - Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(730, "%000002da"), Attrs([Attr("address","0x858"), +Def(Tid(730, "%000002da"), 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,64)))), -Def(Tid(737, "%000002e1"), Attrs([Attr("address","0x85C"), +Def(Tid(737, "%000002e1"), Attrs([Attr("address","0x89C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(749, "%000002ed"), - Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(743, "%000002e7"), Attrs([Attr("address","0x860"), +Jmps([Goto(Tid(743, "%000002e7"), Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(741, "%000002e5"))), Goto(Tid(2_124, "%0000084c"), Attrs([]), +Direct(Tid(741, "%000002e5"))), Goto(Tid(2_233, "%000008b9"), Attrs([]), Int(1,1), Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_227, "%000004cb"), Attrs([Attr("address","0x864"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_227, "%000004cb"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x868"), +Def(Tid(1_235, "%000004d3"), 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)), -Def(Tid(1_246, "%000004de"), Attrs([Attr("address","0x86C"), +Def(Tid(1_246, "%000004de"), Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), Var("#88",Imm(1)), EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_240, "%000004d8"), - Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), Var("#88",Imm(1)), Direct(Tid(741, "%000002e5"))), -Goto(Tid(2_125, "%0000084d"), Attrs([]), Int(1,1), +Goto(Tid(2_234, "%000008ba"), Attrs([]), Int(1,1), Direct(Tid(1_249, "%000004e1")))])), Blk(Tid(741, "%000002e5"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(754, "%000002f2"), Attrs([Attr("address","0x878"), + 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_249, "%000004e1"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x870"), +Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x8B0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_260, "%000004ec"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_260, "%000004ec"), Attrs([Attr("address","0x8B4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_082, "@strlen"), +Sub(Tid(2_191, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_157, "%0000086d"), Attrs([Attr("nonnull","()"), +Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_266, "%000008da"), 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_158, "%0000086e"), +In()), Arg(Tid(2_267, "%000008db"), 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(979, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_589, "%00000635"), Attrs([Attr("address","0x720"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_589, "%00000635"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_597, "%0000063d"), Attrs([Attr("address","0x724"), +Def(Tid(1_597, "%0000063d"), 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_604, "%00000644"), Attrs([Attr("address","0x728"), +Def(Tid(1_604, "%00000644"), 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_609, "%00000649"), - Attrs([Attr("address","0x72C"), Attr("insn","br x17")]), Int(1,1), + 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 index 9148a7ae9..e490b7ad3 100644 --- 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 @@ -1,6 +1,6 @@ -0000084e: program -00000807: sub __cxa_finalize(__cxa_finalize_result) -0000084f: __cxa_finalize_result :: out u32 = low:32[R0] +000008bb: program +00000874: sub __cxa_finalize(__cxa_finalize_result) +000008bc: __cxa_finalize_result :: out u32 = low:32[R0] 000004c3: 00000667: R16 := 0x20000 @@ -8,8 +8,8 @@ 00000676: R16 := R16 + 0x18 0000067b: call R17 with noreturn -00000808: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000850: __do_global_dtors_aux_result :: out u32 = low:32[R0] +00000875: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008bd: __do_global_dtors_aux_result :: out u32 = low:32[R0] 000002f6: 000002fd: #34 := R31 - 0x20 @@ -22,29 +22,29 @@ 00000329: R0 := pad:32[mem[R19 + 0x70]] 00000335: #36 := ~~0:0[R0] 0000032f: when #36 goto %0000032d -00000844: goto %00000481 +000008b1: goto %00000481 00000481: 00000485: R0 := 0x1F000 0000048d: R0 := mem[R0 + 0xFC8, el]:u64 00000499: #85 := R0 = 0 00000493: when #85 goto %00000491 -00000845: goto %000004b1 +000008b2: goto %000004b1 000004b1: 000004b5: R0 := 0x20000 000004bd: R0 := mem[R0 + 0x58, el]:u64 -000004c2: R30 := 0x8B0 +000004c2: R30 := 0x8F0 000004c5: call @__cxa_finalize with return %00000491 00000491: -0000049e: R30 := 0x8B4 +0000049e: R30 := 0x8F4 000004a0: call @deregister_tm_clones with return %000004a2 000004a2: 000004a7: R0 := 1 000004af: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -00000846: goto %0000032d +000008b3: goto %0000032d 0000032d: 0000033d: R19 := mem[R31 + 0x10, el]:u64 @@ -53,12 +53,12 @@ 0000034e: R31 := R31 + 0x20 00000353: call R30 with noreturn -0000080c: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000851: __libc_start_main_main :: in u64 = R0 -00000852: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000853: __libc_start_main_arg3 :: in out u64 = R2 -00000854: __libc_start_main_auxv :: in out u64 = R3 -00000855: __libc_start_main_result :: out u32 = low:32[R0] +00000879: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008be: __libc_start_main_main :: in u64 = R0 +000008bf: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008c0: __libc_start_main_arg3 :: in out u64 = R2 +000008c1: __libc_start_main_auxv :: in out u64 = R3 +000008c2: __libc_start_main_result :: out u32 = low:32[R0] 0000023a: 0000064e: R16 := 0x20000 @@ -66,8 +66,8 @@ 0000065d: R16 := R16 + 0x10 00000662: call R17 with noreturn -0000080d: sub _fini(_fini_result) -00000856: _fini_result :: out u32 = low:32[R0] +0000087a: sub _fini(_fini_result) +000008c3: _fini_result :: out u32 = low:32[R0] 00000020: 00000029: #3 := R31 - 0x10 @@ -80,26 +80,26 @@ 0000004f: R31 := R31 + 0x10 00000054: call R30 with noreturn -0000080e: sub _init(_init_result) -00000857: _init_result :: out u32 = low:32[R0] +0000087b: sub _init(_init_result) +000008c4: _init_result :: out u32 = low:32[R0] -0000072d: -00000736: #116 := R31 - 0x10 -0000073b: mem := mem with [#116, el]:u64 <- R29 -00000740: mem := mem with [#116 + 8, el]:u64 <- R30 -00000744: R31 := #116 -0000074b: R29 := R31 -00000750: R30 := 0x6E8 -00000752: call @call_weak_fn with return %00000754 +0000079a: +000007a3: #116 := R31 - 0x10 +000007a8: mem := mem with [#116, el]:u64 <- R29 +000007ad: mem := mem with [#116 + 8, el]:u64 <- R30 +000007b1: R31 := #116 +000007b8: R29 := R31 +000007bd: R30 := 0x738 +000007bf: call @call_weak_fn with return %000007c1 -00000754: -0000075c: R29 := mem[R31, el]:u64 -00000760: R30 := mem[R31 + 8, el]:u64 -00000763: R31 := R31 + 0x10 -00000768: call R30 with noreturn +000007c1: +000007c9: R29 := mem[R31, el]:u64 +000007cd: R30 := mem[R31 + 8, el]:u64 +000007d0: R31 := R31 + 0x10 +000007d5: call R30 with noreturn -0000080f: sub _start(_start_result) -00000858: _start_result :: out u32 = low:32[R0] +0000087c: sub _start(_start_result) +000008c5: _start_result :: out u32 = low:32[R0] 000001f0: 000001f6: R29 := 0 @@ -112,17 +112,17 @@ 00000228: R0 := mem[R0 + 0xFD8, el]:u64 0000022e: R3 := 0 00000234: R4 := 0 -00000239: R30 := 0x7F0 +00000239: R30 := 0x830 0000023c: call @__libc_start_main with return %0000023e 0000023e: -00000241: R30 := 0x7F4 -00000244: call @abort with return %00000847 +00000241: R30 := 0x834 +00000244: call @abort with return %000008b4 -00000847: -00000848: call @call_weak_fn with noreturn +000008b4: +000008b5: call @call_weak_fn with noreturn -00000812: sub abort() +0000087f: sub abort() 00000242: @@ -131,15 +131,15 @@ 000006da: R16 := R16 + 0x38 000006df: call R17 with noreturn -00000813: sub call_weak_fn(call_weak_fn_result) -00000859: call_weak_fn_result :: out u32 = low:32[R0] +00000880: sub call_weak_fn(call_weak_fn_result) +000008c6: call_weak_fn_result :: out u32 = low:32[R0] 00000246: 0000024a: R0 := 0x1F000 00000252: R0 := mem[R0 + 0xFD0, el]:u64 0000025e: #12 := R0 = 0 00000258: when #12 goto %00000256 -00000849: goto %00000515 +000008b6: goto %00000515 00000256: 00000263: call R30 with noreturn @@ -153,8 +153,8 @@ 000006c1: R16 := R16 + 0x30 000006c6: call R17 with noreturn -00000815: sub deregister_tm_clones(deregister_tm_clones_result) -0000085a: deregister_tm_clones_result :: out u32 = low:32[R0] +00000882: sub deregister_tm_clones(deregister_tm_clones_result) +000008c7: deregister_tm_clones_result :: out u32 = low:32[R0] 00000269: 0000026d: R0 := 0x20000 @@ -170,14 +170,14 @@ & ~63:63[#16] 000002a4: #21 := ZF 0000029e: when #21 goto %0000029c -0000084a: goto %000004ee +000008b7: goto %000004ee 000004ee: 000004f2: R1 := 0x1F000 000004fa: R1 := mem[R1 + 0xFC0, el]:u64 00000505: #93 := R1 = 0 000004ff: when #93 goto %0000029c -0000084b: goto %00000508 +000008b8: goto %00000508 0000029c: 000002a9: call R30 with noreturn @@ -186,14 +186,14 @@ 0000050e: R16 := R1 00000513: call R16 with noreturn -00000818: sub frame_dummy(frame_dummy_result) -0000085b: frame_dummy_result :: out u32 = low:32[R0] +00000885: sub frame_dummy(frame_dummy_result) +000008c8: frame_dummy_result :: out u32 = low:32[R0] 00000359: 0000035b: call @register_tm_clones with noreturn -00000819: sub free(free_ptr) -0000085c: free_ptr :: in out u64 = R0 +00000886: sub free(free_ptr) +000008c9: free_ptr :: in out u64 = R0 00000449: 000006fd: R16 := 0x20000 @@ -201,10 +201,10 @@ 0000070c: R16 := R16 + 0x48 00000711: call R17 with noreturn -0000081a: sub main(main_argc, main_argv, main_result) -0000085d: main_argc :: in u32 = low:32[R0] -0000085e: main_argv :: in out u64 = R1 -0000085f: main_result :: out u32 = low:32[R0] +00000887: sub main(main_argc, main_argv, main_result) +000008ca: main_argc :: in u32 = low:32[R0] +000008cb: main_argv :: in out u64 = R1 +000008cc: main_result :: out u32 = low:32[R0] 0000035d: 00000364: #42 := R31 - 0x30 @@ -217,7 +217,7 @@ 0000038c: mem := mem with [#47 + 8, el]:u64 <- R19 00000393: R29 := R31 0000039a: R0 := 0xB -0000039f: R30 := 0x8EC +0000039f: R30 := 0x92C 000003a2: call @malloc with return %000003a4 000003a4: @@ -227,37 +227,37 @@ 000003bd: R19 := R0 000003c5: mem := mem with [R21 + 0x78, el]:u64 <- R0 000003cd: R0 := R20 -000003d2: R30 := 0x908 +000003d2: R30 := 0x948 000003d5: call @strlen with return %000003d7 000003d7: 000003dd: R2 := R0 000003e5: R0 := R19 000003ed: R1 := R20 -000003f2: R30 := 0x918 +000003f2: R30 := 0x958 000003f5: call @memcpy with return %000003f7 000003f7: 000003fd: R0 := R19 -00000402: R30 := 0x920 +00000402: R30 := 0x960 00000405: call @puts with return %00000407 00000407: 0000040d: R19 := mem[R21 + 0x78, el]:u64 00000415: R0 := R19 -0000041a: R30 := 0x92C +0000041a: R30 := 0x96C 0000041c: call @strlen with return %0000041e 0000041e: 00000424: R2 := R0 0000042c: R0 := R19 00000433: R1 := 1 -00000438: R30 := 0x93C +00000438: R30 := 0x97C 0000043b: call @memset with return %0000043d 0000043d: 00000443: R0 := mem[R21 + 0x78, el]:u64 -00000448: R30 := 0x944 +00000448: R30 := 0x984 0000044b: call @free with return %0000044d 0000044d: @@ -270,9 +270,9 @@ 0000047a: R31 := R31 + 0x30 0000047f: call R30 with noreturn -0000081b: sub malloc(malloc_size, malloc_result) -00000860: malloc_size :: in u64 = R0 -00000861: malloc_result :: out u64 = R0 +00000888: sub malloc(malloc_size, malloc_result) +000008cd: malloc_size :: in u64 = R0 +000008ce: malloc_result :: out u64 = R0 000003a0: 00000680: R16 := 0x20000 @@ -280,11 +280,11 @@ 0000068f: R16 := R16 + 0x20 00000694: call R17 with noreturn -0000081c: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000862: memcpy_dst :: in out u64 = R0 -00000863: memcpy_src :: in out u64 = R1 -00000864: memcpy_n :: in u64 = R2 -00000865: memcpy_result :: out u64 = R0 +00000889: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008cf: memcpy_dst :: in out u64 = R0 +000008d0: memcpy_src :: in out u64 = R1 +000008d1: memcpy_n :: in u64 = R2 +000008d2: memcpy_result :: out u64 = R0 000003f3: 0000061c: R16 := 0x20000 @@ -292,11 +292,11 @@ 0000062b: R16 := R16 00000630: call R17 with noreturn -0000081d: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000866: memset_buf :: in out u64 = R0 -00000867: memset_c :: in u32 = low:32[R1] -00000868: memset_n :: in u64 = R2 -00000869: memset_result :: out u64 = R0 +0000088a: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008d3: memset_buf :: in out u64 = R0 +000008d4: memset_c :: in u32 = low:32[R1] +000008d5: memset_n :: in u64 = R2 +000008d6: memset_result :: out u64 = R0 00000439: 00000699: R16 := 0x20000 @@ -304,9 +304,9 @@ 000006a8: R16 := R16 + 0x28 000006ad: call R17 with noreturn -0000081e: sub puts(puts_s, puts_result) -0000086a: puts_s :: in u64 = R0 -0000086b: puts_result :: out u32 = low:32[R0] +0000088b: sub puts(puts_s, puts_result) +000008d7: puts_s :: in u64 = R0 +000008d8: puts_result :: out u32 = low:32[R0] 00000403: 000006e4: R16 := 0x20000 @@ -314,8 +314,8 @@ 000006f3: R16 := R16 + 0x40 000006f8: call R17 with noreturn -0000081f: sub register_tm_clones(register_tm_clones_result) -0000086c: register_tm_clones_result :: out u32 = low:32[R0] +0000088c: sub register_tm_clones(register_tm_clones_result) +000008d9: register_tm_clones_result :: out u32 = low:32[R0] 000002ab: 000002af: R0 := 0x20000 @@ -328,14 +328,14 @@ 000002e1: R1 := R1 >> 1 000002ed: #30 := R1 = 0 000002e7: when #30 goto %000002e5 -0000084c: goto %000004c7 +000008b9: goto %000004c7 000004c7: 000004cb: R2 := 0x1F000 000004d3: R2 := mem[R2 + 0xFE0, el]:u64 000004de: #88 := R2 = 0 000004d8: when #88 goto %000002e5 -0000084d: goto %000004e1 +000008ba: goto %000004e1 000002e5: 000002f2: call R30 with noreturn @@ -344,9 +344,9 @@ 000004e7: R16 := R2 000004ec: call R16 with noreturn -00000822: sub strlen(strlen_s, strlen_result) -0000086d: strlen_s :: in u64 = R0 -0000086e: strlen_result :: out u64 = R0 +0000088f: sub strlen(strlen_s, strlen_result) +000008da: strlen_s :: in u64 = R0 +000008db: strlen_result :: out u64 = R0 000003d3: 00000635: R16 := 0x20000 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 index e70b5eeec..cc545d703 100644 --- 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 @@ -1,16 +1,16 @@ -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: +Relocation section '.rela.dyn' at offset 0x578 contains 8 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +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 0x5e8 contains 10 entries: +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 @@ -26,8 +26,8 @@ Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: 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 + 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) @@ -41,104 +41,105 @@ Symbol table '.dynsym' contains 15 entries: 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 99 entries: +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 .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: 0000000000000958 0 SECTION LOCAL DEFAULT 14 .fini - 15: 000000000000096c 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 0000000000000970 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009b0 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 00000000000009c4 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 000000000000096c 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 0000000000000958 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 0000000000000964 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 00000000000009d8 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 - 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 - 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 - 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 - 59: 0000000000000a38 0 NOTYPE LOCAL DEFAULT 17 $d.4 - 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 61: 0000000000000a7c 0 NOTYPE LOCAL DEFAULT 17 $d - 62: 0000000000000a7c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 65: 0000000000000970 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata - 77: 0000000000000958 0 FUNC GLOBAL HIDDEN 14 _fini - 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 86: 000000000000096c 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end - 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf - 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext - 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 95: 00000000000008d4 132 FUNC GLOBAL DEFAULT 13 main - 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init + 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/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt index a5fe0545d..6be3f033b 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt @@ -1,773 +1,775 @@ 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 2428 20 2428)\n(code-region 1984 444 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 168)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2428 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2428 20)\n(llvm:code-entry .text 1984 444)\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 2452 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 2712)\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 2452 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 2712)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2512 200 2512)\n(llvm:section-entry .eh_frame_hdr 2452 60 2452)\n(llvm:section-entry .rodata 2448 4 2448)\n(llvm:section-entry .fini 2428 20 2428)\n(llvm:section-entry .text 1984 444 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 168 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2428 0 2428 2428)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2712 0)\n(mapped 130504 676 64968)\n(named-region 0 2712 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 444 .text)\n(named-region 2428 20 .fini)\n(named-region 2448 4 .rodata)\n(named-region 2452 60 .eh_frame_hdr)\n(named-region 2512 200 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2428 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 444)\n(section 2428 20)\n(section 2448 4)\n(section 2452 60)\n(section 2512 200)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2712 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 168 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2428 2428)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("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 2492 20 2492)\n(code-region 2048 444 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 168)\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 2492 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 2492 20)\n(llvm:code-entry .text 2048 444)\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 2516 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 2776)\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 2516 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 2776)\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 2576 200 2576)\n(llvm:section-entry .eh_frame_hdr 2516 60 2516)\n(llvm:section-entry .rodata 2512 4 2512)\n(llvm:section-entry .fini 2492 20 2492)\n(llvm:section-entry .text 2048 444 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 168 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 2492 0 2492 2492)\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 2776 0)\n(mapped 130488 692 64952)\n(named-region 0 2776 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 444 .text)\n(named-region 2492 20 .fini)\n(named-region 2512 4 .rodata)\n(named-region 2516 60 .eh_frame_hdr)\n(named-region 2576 200 .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 2492 _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 444)\n(section 2492 20)\n(section 2512 4)\n(section 2516 60)\n(section 2576 200)\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 2776 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 168 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 2492 2492)\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\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"), -Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x98\x0a\x00\x00\x00\x00\x00\x00\x98\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\x94\x09\x00\x00\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x00\x00\x94\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\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\x46\x84\x58\x64\x9f\x3f\xff\xb6\x98\x89\x18\x7e\x6a\xea\xdc\x90\x77\x82\x77\x9b"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e"), Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x97C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x990, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x994, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x2c\xfe\xff\xff\x50\x00\x00\x00\x7c\xfe\xff\xff\x64\x00\x00\x00\xac\xfe\xff\xff\x78\x00\x00\x00\xec\xfe\xff\xff\x8c\x00\x00\x00\x3c\xff\xff\xff\xb0\x00\x00\x00\x40\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0x9D0, "\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\xd4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x10\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x2c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x58\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\x84\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\x24\x00\x00\x00\x18\x00\x00\x00\x60\xfe\xff\xff\xa8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x90\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".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", 0x9BC, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9D0, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9D4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x2c\xfe\xff\xff\x50\x00\x00\x00\x7c\xfe\xff\xff\x64\x00\x00\x00\xac\xfe\xff\xff\x78\x00\x00\x00\xec\xfe\xff\xff\x8c\x00\x00\x00\x3c\xff\xff\xff\xb0\x00\x00\x00\x40\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0xA10, "\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\xd4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x10\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x2c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x58\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\x84\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\x24\x00\x00\x00\x18\x00\x00\x00\x60\xfe\xff\xff\xa8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x90\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\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\xbc\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", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x75\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x81\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x8e\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xA97), Attr("segment","02 0 2712")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x80\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x9d\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x79\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x85\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x92\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xAD7), Attr("segment","02 0 2776")), +Annotation(Region(0x800,0x833), Attr("symbol","\"_start\"")), Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), -Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), -Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +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,0x2B3), Attr("section","\".gnu.hash\"")), -Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), -Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), -Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), -Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), -Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), -Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), -Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x97B), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x97B), Attr("symbol-info","main 0x8D4 168")), -Annotation(Region(0x97C,0x98F), Attr("section","\".fini\"")), -Annotation(Region(0x990,0x993), Attr("section","\".rodata\"")), -Annotation(Region(0x994,0x9CF), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x9D0,0xA97), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), -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(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,0x9BB), Attr("symbol","\"main\"")), +Annotation(Region(0x914,0x9BB), Attr("symbol-info","main 0x914 168")), +Annotation(Region(0x9BC,0x9CF), Attr("section","\".fini\"")), +Annotation(Region(0x9D0,0x9D3), Attr("section","\".rodata\"")), +Annotation(Region(0x9D4,0xA0F), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA10,0xAD7), 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(0x7C0,0x97B), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x97B), Attr("code-region","()")), -Annotation(Region(0x97C,0x98F), Attr("code-region","()"))]), -Program(Tid(2_215, "%000008a7"), Attrs([]), - Subs([Sub(Tid(2_144, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_216, "%000008a8"), +Annotation(Region(0x800,0x9BB), Attr("section","\".text\"")), +Annotation(Region(0x800,0x9BB), Attr("code-region","()")), +Annotation(Region(0x9BC,0x9CF), Attr("code-region","()"))]), +Program(Tid(2_333, "%0000091d"), Attrs([]), + Subs([Sub(Tid(2_262, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_334, "%0000091e"), 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_299, "@__cxa_finalize"), - Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x740"), + Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x744"), +Def(Tid(1_727, "%000006bf"), 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_734, "%000006c6"), Attrs([Attr("address","0x748"), +Def(Tid(1_734, "%000006c6"), 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_739, "%000006cb"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_145, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_217, "%000008a9"), +Sub(Tid(2_263, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_335, "%0000091f"), 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(794, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(801, "%00000321"), - Attrs([Attr("address","0x880"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(801, "%00000321"), + Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(806, "%00000326"), Attrs([Attr("address","0x880"), +Def(Tid(806, "%00000326"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x880"), +Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x880"), +Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), Var("#34",Imm(64))), Def(Tid(822, "%00000336"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(830, "%0000033e"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + 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(836, "%00000344"), Attrs([Attr("address","0x88C"), +Def(Tid(836, "%00000344"), Attrs([Attr("address","0x8CC"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x890"), +Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x8D0"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(857, "%00000359"), Attrs([Attr("address","0x894"), +Def(Tid(857, "%00000359"), Attrs([Attr("address","0x8D4"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x894"), +Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x8D4"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(849, "%00000351"))), Goto(Tid(2_205, "%0000089d"), Attrs([]), +Direct(Tid(849, "%00000351"))), Goto(Tid(2_323, "%00000913"), Attrs([]), Int(1,1), Direct(Tid(1_233, "%000004d1")))])), Blk(Tid(1_233, "%000004d1"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x898"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8D8"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x89C"), +Def(Tid(1_245, "%000004dd"), 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)), -Def(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x8A0"), +Def(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_251, "%000004e3"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), Direct(Tid(1_249, "%000004e1"))), -Goto(Tid(2_206, "%0000089e"), Attrs([]), Int(1,1), +Goto(Tid(2_324, "%00000914"), Attrs([]), Int(1,1), Direct(Tid(1_281, "%00000501")))])), Blk(Tid(1_281, "%00000501"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x8A4"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_293, "%0000050d"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_293, "%0000050d"), 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_298, "%00000512"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_301, "%00000515"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_144, "@__cxa_finalize")),Direct(Tid(1_249, "%000004e1"))))])), -Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x8B0"), +Def(Tid(1_298, "%00000512"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_301, "%00000515"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Int(1,1), +(Direct(Tid(2_262, "@__cxa_finalize")),Direct(Tid(1_249, "%000004e1"))))])), +Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_158, "@deregister_tm_clones")),Direct(Tid(1_266, "%000004f2"))))])), -Blk(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_276, "@deregister_tm_clones")),Direct(Tid(1_266, "%000004f2"))))])), +Blk(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8F4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_279, "%000004ff"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_207, "%0000089f"), Attrs([]), Int(1,1), +Jmps([Goto(Tid(2_325, "%00000915"), Attrs([]), Int(1,1), Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(865, "%00000361"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(865, "%00000361"), + 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(875, "%0000036b"), Attrs([Attr("address","0x8C0"), +Def(Tid(875, "%0000036b"), 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(879, "%0000036f"), Attrs([Attr("address","0x8C0"), +Def(Tid(879, "%0000036f"), 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(882, "%00000372"), Attrs([Attr("address","0x8C0"), +Def(Tid(882, "%00000372"), 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(887, "%00000377"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_149, "@__libc_start_main"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_267, "@__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_218, "%000008aa"), +Attr("address","0x780"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_336, "%00000920"), 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_219, "%000008ab"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_337, "%00000921"), 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_220, "%000008ac"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_338, "%00000922"), 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_221, "%000008ad"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_339, "%00000923"), 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_222, "%000008ae"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_340, "%00000924"), 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(606, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_694, "%0000069e"), Attrs([Attr("address","0x730"), + Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_694, "%0000069e"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_702, "%000006a6"), Attrs([Attr("address","0x734"), +Def(Tid(1_702, "%000006a6"), 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_709, "%000006ad"), Attrs([Attr("address","0x738"), +Def(Tid(1_709, "%000006ad"), 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_714, "%000006b2"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_150, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x97C")]), - "_fini", Args([Arg(Tid(2_223, "%000008af"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_268, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9BC")]), + "_fini", Args([Arg(Tid(2_341, "%00000925"), 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","0x97C")]), Phis([]), Defs([Def(Tid(41, "%00000029"), - Attrs([Attr("address","0x980"), + Attrs([Attr("address","0x9BC")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9C0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x980"), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9C0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x980"), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9C0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x980"), +Def(Tid(55, "%00000037"), Attrs([Attr("address","0x9C0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x984"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9C4"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x988"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9C8"), 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(76, "%0000004c"), Attrs([Attr("address","0x988"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x9C8"), 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(79, "%0000004f"), Attrs([Attr("address","0x988"), +Def(Tid(79, "%0000004f"), Attrs([Attr("address","0x9C8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), - Attrs([Attr("address","0x98C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_151, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_224, "%000008b0"), + Attrs([Attr("address","0x9CC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_269, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), + "_init", Args([Arg(Tid(2_342, "%00000926"), 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_917, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x6DC"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(2_035, "@_init"), + Attrs([Attr("address","0x728")]), Phis([]), +Defs([Def(Tid(2_044, "%000007fc"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#98",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_931, "%0000078b"), Attrs([Attr("address","0x6DC"), +Def(Tid(2_049, "%00000801"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#98",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_936, "%00000790"), Attrs([Attr("address","0x6DC"), +Def(Tid(2_054, "%00000806"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#98",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_940, "%00000794"), Attrs([Attr("address","0x6DC"), +Def(Tid(2_058, "%0000080a"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#98",Imm(64))), Def(Tid(1_947, "%0000079b"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_952, "%000007a0"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_954, "%000007a2"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_156, "@call_weak_fn")),Direct(Tid(1_956, "%000007a4"))))])), -Blk(Tid(1_956, "%000007a4"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_964, "%000007ac"), Attrs([Attr("address","0x6E8"), +Var("#98",Imm(64))), Def(Tid(2_065, "%00000811"), + Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_070, "%00000816"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(2_072, "%00000818"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), +(Direct(Tid(2_274, "@call_weak_fn")),Direct(Tid(2_074, "%0000081a"))))])), +Blk(Tid(2_074, "%0000081a"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(2_082, "%00000822"), 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_968, "%000007b0"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_086, "%00000826"), 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_971, "%000007b3"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_089, "%00000829"), 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_976, "%000007b8"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_152, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_225, "%000008b1"), - 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(532, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(538, "%0000021a"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(544, "%00000220"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(552, "%00000228"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(560, "%00000230"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_094, "%0000082e"), + Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_270, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("stub","()"), Attr("entry-point","()")]), "_start", + Args([Arg(Tid(2_343, "%00000927"), 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(532, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(538, "%0000021a"), Attrs([Attr("address","0x804"), +Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), +Def(Tid(544, "%00000220"), Attrs([Attr("address","0x808"), +Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), +Def(Tid(552, "%00000228"), Attrs([Attr("address","0x80C"), +Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), +Def(Tid(560, "%00000230"), 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(567, "%00000237"), Attrs([Attr("address","0x7D4"), +Def(Tid(567, "%00000237"), Attrs([Attr("address","0x814"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(574, "%0000023e"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(580, "%00000244"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), Def(Tid(588, "%0000024c"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + 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(594, "%00000252"), Attrs([Attr("address","0x7E4"), +Def(Tid(594, "%00000252"), Attrs([Attr("address","0x824"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(600, "%00000258"), Attrs([Attr("address","0x7E8"), +Def(Tid(600, "%00000258"), Attrs([Attr("address","0x828"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(605, "%0000025d"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(608, "%00000260"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_149, "@__libc_start_main")),Direct(Tid(610, "%00000262"))))])), -Blk(Tid(610, "%00000262"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(613, "%00000265"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_155, "@abort")),Direct(Tid(2_208, "%000008a0"))))])), -Blk(Tid(2_208, "%000008a0"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_209, "%000008a1"), Attrs([]), Int(1,1), -(Direct(Tid(2_156, "@call_weak_fn")),))]))])), Sub(Tid(2_155, "@abort"), +Def(Tid(605, "%0000025d"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(608, "%00000260"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Int(1,1), +(Direct(Tid(2_267, "@__libc_start_main")),Direct(Tid(610, "%00000262"))))])), +Blk(Tid(610, "%00000262"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(613, "%00000265"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Int(1,1), +(Direct(Tid(2_273, "@abort")),Direct(Tid(2_326, "%00000916"))))])), +Blk(Tid(2_326, "%00000916"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_327, "%00000917"), Attrs([]), Int(1,1), +(Direct(Tid(2_274, "@call_weak_fn")),))]))])), Sub(Tid(2_273, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(614, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x780"), +Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(614, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x784"), +Def(Tid(1_827, "%00000723"), 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_834, "%0000072a"), Attrs([Attr("address","0x788"), +Def(Tid(1_834, "%0000072a"), 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_839, "%0000072f"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_156, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_226, "%000008b2"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_274, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_344, "%00000928"), 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(618, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(622, "%0000026e"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(622, "%0000026e"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), Def(Tid(630, "%00000276"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + 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)), -Def(Tid(642, "%00000282"), Attrs([Attr("address","0x7FC"), +Def(Tid(642, "%00000282"), Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(636, "%0000027c"), - Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), Direct(Tid(634, "%0000027a"))), -Goto(Tid(2_210, "%000008a2"), Attrs([]), Int(1,1), +Goto(Tid(2_328, "%00000918"), Attrs([]), Int(1,1), Direct(Tid(1_381, "%00000565")))])), Blk(Tid(634, "%0000027a"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(647, "%00000287"), Attrs([Attr("address","0x804"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(647, "%00000287"), Attrs([Attr("address","0x844"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_381, "%00000565"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_384, "%00000568"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), +Blk(Tid(1_381, "%00000565"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_384, "%00000568"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0x80")]), Int(1,1), Direct(Tid(1_382, "@__gmon_start__")))])), Blk(Tid(1_382, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x770"), + Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x774"), +Def(Tid(1_802, "%0000070a"), 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_809, "%00000711"), Attrs([Attr("address","0x778"), +Def(Tid(1_809, "%00000711"), 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_814, "%00000716"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_158, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_227, "%000008b3"), +Sub(Tid(2_276, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_345, "%00000929"), 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(653, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(657, "%00000291"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(657, "%00000291"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), Def(Tid(664, "%00000298"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x70")]), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x818"), +Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x858"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(677, "%000002a5"), Attrs([Attr("address","0x81C"), +Def(Tid(677, "%000002a5"), Attrs([Attr("address","0x85C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(685, "%000002ad"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("#16",Imm(64)), PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(689, "%000002b1"), Attrs([Attr("address","0x820"), +Def(Tid(689, "%000002b1"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), Extract(63,63,Var("#16",Imm(64)))), Def(Tid(692, "%000002b4"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x820"), +Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(698, "%000002ba"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(712, "%000002c8"), Attrs([Attr("address","0x824"), +Def(Tid(712, "%000002c8"), Attrs([Attr("address","0x864"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(706, "%000002c2"), Attrs([Attr("address","0x824"), +Jmps([Goto(Tid(706, "%000002c2"), Attrs([Attr("address","0x864"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(704, "%000002c0"))), Goto(Tid(2_211, "%000008a3"), Attrs([]), +Direct(Tid(704, "%000002c0"))), Goto(Tid(2_329, "%00000919"), Attrs([]), Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(1_342, "%0000053e"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_346, "%00000542"), Attrs([Attr("address","0x828"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_346, "%00000542"), Attrs([Attr("address","0x868"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x82C"), +Def(Tid(1_354, "%0000054a"), 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)), -Def(Tid(1_365, "%00000555"), Attrs([Attr("address","0x830"), +Def(Tid(1_365, "%00000555"), Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_359, "%0000054f"), - Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), Direct(Tid(704, "%000002c0"))), -Goto(Tid(2_212, "%000008a4"), Attrs([]), Int(1,1), +Goto(Tid(2_330, "%0000091a"), Attrs([]), Int(1,1), Direct(Tid(1_368, "%00000558")))])), Blk(Tid(704, "%000002c0"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(717, "%000002cd"), Attrs([Attr("address","0x83C"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(717, "%000002cd"), Attrs([Attr("address","0x87C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_368, "%00000558"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_374, "%0000055e"), Attrs([Attr("address","0x834"), +Blk(Tid(1_368, "%00000558"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_374, "%0000055e"), Attrs([Attr("address","0x874"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_379, "%00000563"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_379, "%00000563"), Attrs([Attr("address","0x878"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_161, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_228, "%000008b4"), +Sub(Tid(2_279, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_346, "%0000092a"), 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(893, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(895, "%0000037f"), Attrs([Attr("address","0x8D0"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(895, "%0000037f"), Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_168, "@register_tm_clones")),))]))])), Sub(Tid(2_162, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_229, "%000008b5"), +(Direct(Tid(2_286, "@register_tm_clones")),))]))])), Sub(Tid(2_280, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_347, "%0000092b"), 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_195, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_195, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_877, "%00000755"), 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_884, "%0000075c"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_884, "%0000075c"), 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_889, "%00000761"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_163, "@main"), + Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_281, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_230, "%000008b6"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_348, "%0000092c"), 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_231, "%000008b7"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_349, "%0000092d"), 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_232, "%000008b8"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_350, "%0000092e"), 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(897, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(902, "%00000386"), - Attrs([Attr("address","0x8D4"), Attr("insn","sub sp, sp, #0x40")]), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(902, "%00000386"), + Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), -Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8D8"), +Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(915, "%00000393"), - Attrs([Attr("address","0x8D8"), Attr("insn","stp x29, x30, [sp, #0x30]")]), + Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(920, "%00000398"), Attrs([Attr("address","0x8D8"), +Def(Tid(920, "%00000398"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x8DC"), +Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x91C"), Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(935, "%000003a7"), - Attrs([Attr("address","0x8E0"), Attr("insn","stur xzr, [x29, #-0x8]")]), + Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(943, "%000003af"), Attrs([Attr("address","0x8E4"), +Def(Tid(943, "%000003af"), Attrs([Attr("address","0x924"), Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8E8"), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x928"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(957, "%000003bd"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_164, "@malloc")),Direct(Tid(959, "%000003bf"))))])), -Blk(Tid(959, "%000003bf"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x8F0"), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(957, "%000003bd"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x18c")]), Int(1,1), +(Direct(Tid(2_282, "@malloc")),Direct(Tid(959, "%000003bf"))))])), +Blk(Tid(959, "%000003bf"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x930"), Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x8F4"), +Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x934"), Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x8F8"), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x938"), Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x8FC"), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x93C"), Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x900"), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x940"), Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x904"), +Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x944"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x908"), +Def(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(1_016, "%000003f8"), - Attrs([Attr("address","0x90C"), Attr("insn","str x0, [sp]")]), + Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x910"), -Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2324,64))]), -Jmps([Call(Tid(1_024, "%00000400"), Attrs([Attr("address","0x910"), -Attr("insn","bl #-0x1f0")]), Int(1,1), -(Direct(Tid(2_171, "@strlen")),Direct(Tid(1_026, "%00000402"))))])), -Blk(Tid(1_026, "%00000402"), Attrs([Attr("address","0x914")]), Phis([]), -Defs([Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x914"), +Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), +Jmps([Call(Tid(1_024, "%00000400"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x1e0")]), Int(1,1), +(Direct(Tid(2_289, "@strlen")),Direct(Tid(1_026, "%00000402"))))])), +Blk(Tid(1_026, "%00000402"), Attrs([Attr("address","0x954")]), Phis([]), +Defs([Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x954"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x918"), +Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x958"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x91C"), +Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x95C"), Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x920"), -Attr("insn","bl #-0x210")]), Var("R30",Imm(64)), Int(2340,64))]), -Jmps([Call(Tid(1_056, "%00000420"), Attrs([Attr("address","0x920"), -Attr("insn","bl #-0x210")]), Int(1,1), -(Direct(Tid(2_165, "@memcpy")),Direct(Tid(1_058, "%00000422"))))])), -Blk(Tid(1_058, "%00000422"), Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_064, "%00000428"), Attrs([Attr("address","0x924"), +Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), +Jmps([Call(Tid(1_056, "%00000420"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x200")]), Int(1,1), +(Direct(Tid(2_283, "@memcpy")),Direct(Tid(1_058, "%00000422"))))])), +Blk(Tid(1_058, "%00000422"), Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_064, "%00000428"), Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x928"), +Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x968"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(1_080, "%00000438"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_167, "@puts")),Direct(Tid(1_082, "%0000043a"))))])), -Blk(Tid(1_082, "%0000043a"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x930"), +Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), +Jmps([Call(Tid(1_080, "%00000438"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x18c")]), Int(1,1), +(Direct(Tid(2_285, "@puts")),Direct(Tid(1_082, "%0000043a"))))])), +Blk(Tid(1_082, "%0000043a"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x970"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x934"), +Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x974"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x938"), +Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x978"), Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_111, "%00000457"), - Attrs([Attr("address","0x93C"), Attr("insn","stur x9, [x29, #-0x8]")]), + Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x940"), +Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x980"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x944"), +Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x984"), Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x948"), +Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x988"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_140, "%00000474"), Attrs([Attr("address","0x94C"), -Attr("insn","bl #-0x22c")]), Var("R30",Imm(64)), Int(2384,64))]), -Jmps([Call(Tid(1_142, "%00000476"), Attrs([Attr("address","0x94C"), -Attr("insn","bl #-0x22c")]), Int(1,1), -(Direct(Tid(2_171, "@strlen")),Direct(Tid(1_144, "%00000478"))))])), -Blk(Tid(1_144, "%00000478"), Attrs([Attr("address","0x950")]), Phis([]), -Defs([Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x950"), +Def(Tid(1_140, "%00000474"), Attrs([Attr("address","0x98C"), +Attr("insn","bl #-0x21c")]), Var("R30",Imm(64)), Int(2448,64))]), +Jmps([Call(Tid(1_142, "%00000476"), Attrs([Attr("address","0x98C"), +Attr("insn","bl #-0x21c")]), Int(1,1), +(Direct(Tid(2_289, "@strlen")),Direct(Tid(1_144, "%00000478"))))])), +Blk(Tid(1_144, "%00000478"), Attrs([Attr("address","0x990")]), Phis([]), +Defs([Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x990"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_158, "%00000486"), Attrs([Attr("address","0x954"), +Def(Tid(1_158, "%00000486"), Attrs([Attr("address","0x994"), Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x958"), +Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x998"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x95C"), -Attr("insn","bl #-0x1fc")]), Var("R30",Imm(64)), Int(2400,64))]), -Jmps([Call(Tid(1_173, "%00000495"), Attrs([Attr("address","0x95C"), -Attr("insn","bl #-0x1fc")]), Int(1,1), -(Direct(Tid(2_166, "@memset")),Direct(Tid(1_175, "%00000497"))))])), -Blk(Tid(1_175, "%00000497"), Attrs([Attr("address","0x960")]), Phis([]), -Defs([Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x960"), +Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x99C"), +Attr("insn","bl #-0x1ec")]), Var("R30",Imm(64)), Int(2464,64))]), +Jmps([Call(Tid(1_173, "%00000495"), Attrs([Attr("address","0x99C"), +Attr("insn","bl #-0x1ec")]), Int(1,1), +(Direct(Tid(2_284, "@memset")),Direct(Tid(1_175, "%00000497"))))])), +Blk(Tid(1_175, "%00000497"), Attrs([Attr("address","0x9A0")]), Phis([]), +Defs([Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x9A0"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x964"), +Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x9A4"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x1c8")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x1c8")]), Int(1,1), -(Direct(Tid(2_162, "@free")),Direct(Tid(1_199, "%000004af"))))])), -Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x96C"), +Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2476,64))]), +Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x1b8")]), Int(1,1), +(Direct(Tid(2_280, "@free")),Direct(Tid(1_199, "%000004af"))))])), +Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x9AC")]), Phis([]), +Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x9AC"), Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x970"), +Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x9B0"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), -Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x970"), +Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x9B0"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), -Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x974"), +Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x9B4"), Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_231, "%000004cf"), - Attrs([Attr("address","0x978"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_164, "@malloc"), + Attrs([Attr("address","0x9B8"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_282, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_233, "%000008b9"), Attrs([Attr("alloc-size","()"), +Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_351, "%0000092f"), 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_234, "%000008ba"), +Var("R0",Imm(64)), In()), Arg(Tid(2_352, "%00000930"), 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(955, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(955, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x754"), +Def(Tid(1_752, "%000006d8"), 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_759, "%000006df"), Attrs([Attr("address","0x758"), +Def(Tid(1_759, "%000006df"), 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_764, "%000006e4"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_165, "@memcpy"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_283, "@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_235, "%000008bb"), Attrs([Attr("nonnull","()"), +Attr("address","0x760"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_353, "%00000931"), 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_236, "%000008bc"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_354, "%00000932"), 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_237, "%000008bd"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_355, "%00000933"), 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_238, "%000008be"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_356, "%00000934"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_054, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_054, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_652, "%00000674"), Attrs([Attr("address","0x714"), +Def(Tid(1_652, "%00000674"), 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_659, "%0000067b"), Attrs([Attr("address","0x718"), +Def(Tid(1_659, "%0000067b"), Attrs([Attr("address","0x768"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), Var("R16",Imm(64)))]), Jmps([Call(Tid(1_664, "%00000680"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_166, "@memset"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_284, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_239, "%000008bf"), Attrs([Attr("nonnull","()"), +Attr("address","0x7B0"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_357, "%00000935"), 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_240, "%000008c0"), +Both()), Arg(Tid(2_358, "%00000936"), 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_241, "%000008c1"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_359, "%00000937"), 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_242, "%000008c2"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_360, "%00000938"), 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_171, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_171, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x764"), +Def(Tid(1_777, "%000006f1"), 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_784, "%000006f8"), Attrs([Attr("address","0x768"), +Def(Tid(1_784, "%000006f8"), 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_789, "%000006fd"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_167, "@puts"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_285, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_243, "%000008c3"), Attrs([Attr("c.layout","*[char : 8]"), +Attr("address","0x7E0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_361, "%00000939"), 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_244, "%000008c4"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_362, "%0000093a"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_078, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_078, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x794"), +Def(Tid(1_852, "%0000073c"), 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_859, "%00000743"), Attrs([Attr("address","0x798"), +Def(Tid(1_859, "%00000743"), 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_864, "%00000748"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_168, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_245, "%000008c5"), +Sub(Tid(2_286, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_363, "%0000093b"), 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(719, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(719, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x880"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(730, "%000002da"), Attrs([Attr("address","0x844"), +Def(Tid(730, "%000002da"), Attrs([Attr("address","0x884"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(736, "%000002e0"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), Def(Tid(743, "%000002e7"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x70")]), + Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x850"), +Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x890"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(758, "%000002f6"), - Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(766, "%000002fe"), Attrs([Attr("address","0x858"), +Def(Tid(766, "%000002fe"), 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,64)))), -Def(Tid(773, "%00000305"), Attrs([Attr("address","0x85C"), +Def(Tid(773, "%00000305"), Attrs([Attr("address","0x89C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(785, "%00000311"), - Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(779, "%0000030b"), Attrs([Attr("address","0x860"), +Jmps([Goto(Tid(779, "%0000030b"), Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(777, "%00000309"))), Goto(Tid(2_213, "%000008a5"), Attrs([]), +Direct(Tid(777, "%00000309"))), Goto(Tid(2_331, "%0000091b"), Attrs([]), Int(1,1), Direct(Tid(1_303, "%00000517")))])), Blk(Tid(1_303, "%00000517"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x864"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_315, "%00000523"), Attrs([Attr("address","0x868"), +Def(Tid(1_315, "%00000523"), 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)), -Def(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x86C"), +Def(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_320, "%00000528"), - Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), Direct(Tid(777, "%00000309"))), -Goto(Tid(2_214, "%000008a6"), Attrs([]), Int(1,1), +Goto(Tid(2_332, "%0000091c"), Attrs([]), Int(1,1), Direct(Tid(1_329, "%00000531")))])), Blk(Tid(777, "%00000309"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(790, "%00000316"), Attrs([Attr("address","0x878"), + Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), +Jmps([Call(Tid(790, "%00000316"), Attrs([Attr("address","0x8B8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_329, "%00000531"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x870"), +Blk(Tid(1_329, "%00000531"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x8B0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8B4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_171, "@strlen"), +Sub(Tid(2_289, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_246, "%000008c6"), Attrs([Attr("nonnull","()"), +Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_364, "%0000093c"), 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_247, "%000008c7"), +In()), Arg(Tid(2_365, "%0000093d"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_022, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_669, "%00000685"), Attrs([Attr("address","0x720"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_669, "%00000685"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_677, "%0000068d"), Attrs([Attr("address","0x724"), +Def(Tid(1_677, "%0000068d"), 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_684, "%00000694"), Attrs([Attr("address","0x728"), +Def(Tid(1_684, "%00000694"), 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_689, "%00000699"), - Attrs([Attr("address","0x72C"), Attr("insn","br x17")]), Int(1,1), + 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir index 3d28f222f..e1fe07e4d 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir @@ -1,6 +1,6 @@ -000008a7: program -00000860: sub __cxa_finalize(__cxa_finalize_result) -000008a8: __cxa_finalize_result :: out u32 = low:32[R0] +0000091d: program +000008d6: sub __cxa_finalize(__cxa_finalize_result) +0000091e: __cxa_finalize_result :: out u32 = low:32[R0] 00000513: 000006b7: R16 := 0x20000 @@ -8,8 +8,8 @@ 000006c6: R16 := R16 + 0x18 000006cb: call R17 with noreturn -00000861: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008a9: __do_global_dtors_aux_result :: out u32 = low:32[R0] +000008d7: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000091f: __do_global_dtors_aux_result :: out u32 = low:32[R0] 0000031a: 00000321: #34 := R31 - 0x20 @@ -22,29 +22,29 @@ 0000034d: R0 := pad:32[mem[R19 + 0x70]] 00000359: #36 := ~~0:0[R0] 00000353: when #36 goto %00000351 -0000089d: goto %000004d1 +00000913: goto %000004d1 000004d1: 000004d5: R0 := 0x1F000 000004dd: R0 := mem[R0 + 0xFC8, el]:u64 000004e9: #67 := R0 = 0 000004e3: when #67 goto %000004e1 -0000089e: goto %00000501 +00000914: goto %00000501 00000501: 00000505: R0 := 0x20000 0000050d: R0 := mem[R0 + 0x58, el]:u64 -00000512: R30 := 0x8B0 +00000512: R30 := 0x8F0 00000515: call @__cxa_finalize with return %000004e1 000004e1: -000004ee: R30 := 0x8B4 +000004ee: R30 := 0x8F4 000004f0: call @deregister_tm_clones with return %000004f2 000004f2: 000004f7: R0 := 1 000004ff: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -0000089f: goto %00000351 +00000915: goto %00000351 00000351: 00000361: R19 := mem[R31 + 0x10, el]:u64 @@ -53,12 +53,12 @@ 00000372: R31 := R31 + 0x20 00000377: call R30 with noreturn -00000865: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008aa: __libc_start_main_main :: in u64 = R0 -000008ab: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008ac: __libc_start_main_arg3 :: in out u64 = R2 -000008ad: __libc_start_main_auxv :: in out u64 = R3 -000008ae: __libc_start_main_result :: out u32 = low:32[R0] +000008db: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000920: __libc_start_main_main :: in u64 = R0 +00000921: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000922: __libc_start_main_arg3 :: in out u64 = R2 +00000923: __libc_start_main_auxv :: in out u64 = R3 +00000924: __libc_start_main_result :: out u32 = low:32[R0] 0000025e: 0000069e: R16 := 0x20000 @@ -66,8 +66,8 @@ 000006ad: R16 := R16 + 0x10 000006b2: call R17 with noreturn -00000866: sub _fini(_fini_result) -000008af: _fini_result :: out u32 = low:32[R0] +000008dc: sub _fini(_fini_result) +00000925: _fini_result :: out u32 = low:32[R0] 00000020: 00000029: #3 := R31 - 0x10 @@ -80,26 +80,26 @@ 0000004f: R31 := R31 + 0x10 00000054: call R30 with noreturn -00000867: sub _init(_init_result) -000008b0: _init_result :: out u32 = low:32[R0] +000008dd: sub _init(_init_result) +00000926: _init_result :: out u32 = low:32[R0] -0000077d: -00000786: #98 := R31 - 0x10 -0000078b: mem := mem with [#98, el]:u64 <- R29 -00000790: mem := mem with [#98 + 8, el]:u64 <- R30 -00000794: R31 := #98 -0000079b: R29 := R31 -000007a0: R30 := 0x6E8 -000007a2: call @call_weak_fn with return %000007a4 +000007f3: +000007fc: #98 := R31 - 0x10 +00000801: mem := mem with [#98, el]:u64 <- R29 +00000806: mem := mem with [#98 + 8, el]:u64 <- R30 +0000080a: R31 := #98 +00000811: R29 := R31 +00000816: R30 := 0x738 +00000818: call @call_weak_fn with return %0000081a -000007a4: -000007ac: R29 := mem[R31, el]:u64 -000007b0: R30 := mem[R31 + 8, el]:u64 -000007b3: R31 := R31 + 0x10 -000007b8: call R30 with noreturn +0000081a: +00000822: R29 := mem[R31, el]:u64 +00000826: R30 := mem[R31 + 8, el]:u64 +00000829: R31 := R31 + 0x10 +0000082e: call R30 with noreturn -00000868: sub _start(_start_result) -000008b1: _start_result :: out u32 = low:32[R0] +000008de: sub _start(_start_result) +00000927: _start_result :: out u32 = low:32[R0] 00000214: 0000021a: R29 := 0 @@ -112,17 +112,17 @@ 0000024c: R0 := mem[R0 + 0xFD8, el]:u64 00000252: R3 := 0 00000258: R4 := 0 -0000025d: R30 := 0x7F0 +0000025d: R30 := 0x830 00000260: call @__libc_start_main with return %00000262 00000262: -00000265: R30 := 0x7F4 -00000268: call @abort with return %000008a0 +00000265: R30 := 0x834 +00000268: call @abort with return %00000916 -000008a0: -000008a1: call @call_weak_fn with noreturn +00000916: +00000917: call @call_weak_fn with noreturn -0000086b: sub abort() +000008e1: sub abort() 00000266: @@ -131,15 +131,15 @@ 0000072a: R16 := R16 + 0x38 0000072f: call R17 with noreturn -0000086c: sub call_weak_fn(call_weak_fn_result) -000008b2: call_weak_fn_result :: out u32 = low:32[R0] +000008e2: sub call_weak_fn(call_weak_fn_result) +00000928: call_weak_fn_result :: out u32 = low:32[R0] 0000026a: 0000026e: R0 := 0x1F000 00000276: R0 := mem[R0 + 0xFD0, el]:u64 00000282: #12 := R0 = 0 0000027c: when #12 goto %0000027a -000008a2: goto %00000565 +00000918: goto %00000565 0000027a: 00000287: call R30 with noreturn @@ -153,8 +153,8 @@ 00000711: R16 := R16 + 0x30 00000716: call R17 with noreturn -0000086e: sub deregister_tm_clones(deregister_tm_clones_result) -000008b3: deregister_tm_clones_result :: out u32 = low:32[R0] +000008e4: sub deregister_tm_clones(deregister_tm_clones_result) +00000929: deregister_tm_clones_result :: out u32 = low:32[R0] 0000028d: 00000291: R0 := 0x20000 @@ -170,14 +170,14 @@ & ~63:63[#16] 000002c8: #21 := ZF 000002c2: when #21 goto %000002c0 -000008a3: goto %0000053e +00000919: goto %0000053e 0000053e: 00000542: R1 := 0x1F000 0000054a: R1 := mem[R1 + 0xFC0, el]:u64 00000555: #75 := R1 = 0 0000054f: when #75 goto %000002c0 -000008a4: goto %00000558 +0000091a: goto %00000558 000002c0: 000002cd: call R30 with noreturn @@ -186,14 +186,14 @@ 0000055e: R16 := R1 00000563: call R16 with noreturn -00000871: sub frame_dummy(frame_dummy_result) -000008b4: frame_dummy_result :: out u32 = low:32[R0] +000008e7: sub frame_dummy(frame_dummy_result) +0000092a: frame_dummy_result :: out u32 = low:32[R0] 0000037d: 0000037f: call @register_tm_clones with noreturn -00000872: sub free(free_ptr) -000008b5: free_ptr :: in out u64 = R0 +000008e8: sub free(free_ptr) +0000092b: free_ptr :: in out u64 = R0 000004ab: 0000074d: R16 := 0x20000 @@ -201,10 +201,10 @@ 0000075c: R16 := R16 + 0x48 00000761: call R17 with noreturn -00000873: sub main(main_argc, main_argv, main_result) -000008b6: main_argc :: in u32 = low:32[R0] -000008b7: main_argv :: in out u64 = R1 -000008b8: main_result :: out u32 = low:32[R0] +000008e9: sub main(main_argc, main_argv, main_result) +0000092c: main_argc :: in u32 = low:32[R0] +0000092d: main_argv :: in out u64 = R1 +0000092e: main_result :: out u32 = low:32[R0] 00000381: 00000386: R31 := R31 - 0x40 @@ -215,7 +215,7 @@ 000003a7: mem := mem with [R29 - 8, el]:u64 <- 0 000003af: mem := mem with [R29 - 0x10, el]:u64 <- 0 000003b5: R0 := 0xB -000003ba: R30 := 0x8F0 +000003ba: R30 := 0x930 000003bd: call @malloc with return %000003bf 000003bf: @@ -227,20 +227,20 @@ 000003e9: R0 := 0x20000 000003f0: R0 := R0 + 0x61 000003f8: mem := mem with [R31, el]:u64 <- R0 -000003fd: R30 := 0x914 +000003fd: R30 := 0x954 00000400: call @strlen with return %00000402 00000402: 00000408: R1 := mem[R31, el]:u64 00000410: R2 := R0 00000418: R0 := mem[R31 + 8, el]:u64 -0000041d: R30 := 0x924 +0000041d: R30 := 0x964 00000420: call @memcpy with return %00000422 00000422: 00000428: R8 := mem[R31 + 0x18, el]:u64 00000430: R0 := mem[R8 + 0x78, el]:u64 -00000435: R30 := 0x930 +00000435: R30 := 0x970 00000438: call @puts with return %0000043a 0000043a: @@ -251,20 +251,20 @@ 0000045f: R9 := mem[R8 + 0x78, el]:u64 00000467: mem := mem with [R31 + 0x10, el]:u64 <- R9 0000046f: R0 := mem[R8 + 0x78, el]:u64 -00000474: R30 := 0x950 +00000474: R30 := 0x990 00000476: call @strlen with return %00000478 00000478: 0000047e: R2 := R0 00000486: R0 := mem[R31 + 0x10, el]:u64 0000048d: R1 := 1 -00000492: R30 := 0x960 +00000492: R30 := 0x9A0 00000495: call @memset with return %00000497 00000497: 0000049d: R8 := mem[R31 + 0x18, el]:u64 000004a5: R0 := mem[R8 + 0x78, el]:u64 -000004aa: R30 := 0x96C +000004aa: R30 := 0x9AC 000004ad: call @free with return %000004af 000004af: @@ -274,9 +274,9 @@ 000004ca: R31 := R31 + 0x40 000004cf: call R30 with noreturn -00000874: sub malloc(malloc_size, malloc_result) -000008b9: malloc_size :: in u64 = R0 -000008ba: malloc_result :: out u64 = R0 +000008ea: sub malloc(malloc_size, malloc_result) +0000092f: malloc_size :: in u64 = R0 +00000930: malloc_result :: out u64 = R0 000003bb: 000006d0: R16 := 0x20000 @@ -284,11 +284,11 @@ 000006df: R16 := R16 + 0x20 000006e4: call R17 with noreturn -00000875: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008bb: memcpy_dst :: in out u64 = R0 -000008bc: memcpy_src :: in out u64 = R1 -000008bd: memcpy_n :: in u64 = R2 -000008be: memcpy_result :: out u64 = R0 +000008eb: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000931: memcpy_dst :: in out u64 = R0 +00000932: memcpy_src :: in out u64 = R1 +00000933: memcpy_n :: in u64 = R2 +00000934: memcpy_result :: out u64 = R0 0000041e: 0000066c: R16 := 0x20000 @@ -296,11 +296,11 @@ 0000067b: R16 := R16 00000680: call R17 with noreturn -00000876: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008bf: memset_buf :: in out u64 = R0 -000008c0: memset_c :: in u32 = low:32[R1] -000008c1: memset_n :: in u64 = R2 -000008c2: memset_result :: out u64 = R0 +000008ec: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000935: memset_buf :: in out u64 = R0 +00000936: memset_c :: in u32 = low:32[R1] +00000937: memset_n :: in u64 = R2 +00000938: memset_result :: out u64 = R0 00000493: 000006e9: R16 := 0x20000 @@ -308,9 +308,9 @@ 000006f8: R16 := R16 + 0x28 000006fd: call R17 with noreturn -00000877: sub puts(puts_s, puts_result) -000008c3: puts_s :: in u64 = R0 -000008c4: puts_result :: out u32 = low:32[R0] +000008ed: sub puts(puts_s, puts_result) +00000939: puts_s :: in u64 = R0 +0000093a: puts_result :: out u32 = low:32[R0] 00000436: 00000734: R16 := 0x20000 @@ -318,8 +318,8 @@ 00000743: R16 := R16 + 0x40 00000748: call R17 with noreturn -00000878: sub register_tm_clones(register_tm_clones_result) -000008c5: register_tm_clones_result :: out u32 = low:32[R0] +000008ee: sub register_tm_clones(register_tm_clones_result) +0000093b: register_tm_clones_result :: out u32 = low:32[R0] 000002cf: 000002d3: R0 := 0x20000 @@ -332,14 +332,14 @@ 00000305: R1 := R1 >> 1 00000311: #30 := R1 = 0 0000030b: when #30 goto %00000309 -000008a5: goto %00000517 +0000091b: goto %00000517 00000517: 0000051b: R2 := 0x1F000 00000523: R2 := mem[R2 + 0xFE0, el]:u64 0000052e: #70 := R2 = 0 00000528: when #70 goto %00000309 -000008a6: goto %00000531 +0000091c: goto %00000531 00000309: 00000316: call R30 with noreturn @@ -348,9 +348,9 @@ 00000537: R16 := R2 0000053c: call R16 with noreturn -0000087b: sub strlen(strlen_s, strlen_result) -000008c6: strlen_s :: in u64 = R0 -000008c7: strlen_result :: out u64 = R0 +000008f1: sub strlen(strlen_s, strlen_result) +0000093c: strlen_s :: in u64 = R0 +0000093d: strlen_result :: out u64 = R0 000003fe: 00000685: R16 := 0x20000 diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf index b8d9040b4..ff00bf9d2 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf @@ -1,16 +1,16 @@ -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: +Relocation section '.rela.dyn' at offset 0x578 contains 8 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +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 0x5e8 contains 10 entries: +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 @@ -26,8 +26,8 @@ Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: 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 + 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) @@ -41,104 +41,105 @@ Symbol table '.dynsym' contains 15 entries: 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 99 entries: +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 .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: 000000000000097c 0 SECTION LOCAL DEFAULT 14 .fini - 15: 0000000000000990 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 0000000000000994 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009d0 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 00000000000009e4 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 0000000000000990 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 000000000000097c 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 0000000000000988 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 00000000000009f8 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 - 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 - 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 - 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 - 59: 0000000000000a58 0 NOTYPE LOCAL DEFAULT 17 $d.4 - 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 61: 0000000000000a94 0 NOTYPE LOCAL DEFAULT 17 $d - 62: 0000000000000a94 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 65: 0000000000000994 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata - 77: 000000000000097c 0 FUNC GLOBAL HIDDEN 14 _fini - 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 86: 0000000000000990 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end - 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf - 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext - 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 95: 00000000000008d4 168 FUNC GLOBAL DEFAULT 13 main - 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init + 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: 00000000000009bc 0 SECTION LOCAL DEFAULT 15 .fini + 16: 00000000000009d0 0 SECTION LOCAL DEFAULT 16 .rodata + 17: 00000000000009d4 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr + 18: 0000000000000a10 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: 0000000000000a24 0 NOTYPE LOCAL DEFAULT 18 $d + 32: 00000000000009d0 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: 00000000000009bc 0 NOTYPE LOCAL DEFAULT 15 $x + 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 39: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x + 40: 00000000000009c8 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: 0000000000000a38 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: 0000000000000a98 0 NOTYPE LOCAL DEFAULT 18 $d.4 + 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 62: 0000000000000ad4 0 NOTYPE LOCAL DEFAULT 18 $d + 63: 0000000000000ad4 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ + 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 65: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 66: 00000000000009d4 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: 00000000000009bc 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: 00000000000009d0 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 168 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/clang_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt index df285eb3e..79ad8ab17 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt @@ -1,182 +1,184 @@ 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 2500 20 2500)\n(code-region 2048 452 2048)\n(code-region 1824 192 1824)\n(code-region 1800 24 1800)\n(code-start 2100)\n(code-start 2048)\n(code-start 2324)\n(entry-point 2048)\n(external-reference 130992 _ITM_deregisterTMCloneTable)\n(external-reference 131000 __cxa_finalize)\n(external-reference 131008 __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 1800 0)\n(llvm:code-entry main 2324 176)\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 2500 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 2500 20)\n(llvm:code-entry .text 2048 452)\n(llvm:code-entry .plt 1824 192)\n(llvm:code-entry .init 1800 24)\n(llvm:elf-program-header 08 64952 584)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2524 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64968 480)\n(llvm:elf-program-header 03 64952 692)\n(llvm:elf-program-header 02 0 2784)\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 2524 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130504 480)\n(llvm:elf-virtual-program-header 03 130488 712)\n(llvm:elf-virtual-program-header 02 0 2784)\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 131008 __gmon_start__)\n(llvm:name-reference 131000 __cxa_finalize)\n(llvm:name-reference 130992 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 130984 64 65448)\n(llvm:section-entry .dynamic 130504 480 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 2584 200 2584)\n(llvm:section-entry .eh_frame_hdr 2524 60 2524)\n(llvm:section-entry .rodata 2520 4 2520)\n(llvm:section-entry .fini 2500 20 2500)\n(llvm:section-entry .text 2048 452 2048)\n(llvm:section-entry .plt 1824 192 1824)\n(llvm:section-entry .init 1800 24 1800)\n(llvm:section-entry .rela.plt 1560 240 1560)\n(llvm:section-entry .rela.dyn 1320 240 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 1800 0 1800 1800)\n(llvm:symbol-entry main 2324 176 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 2500 0 2500 2500)\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 2784 0)\n(mapped 130488 692 64952)\n(named-region 0 2784 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 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 240 .rela.dyn)\n(named-region 1560 240 .rela.plt)\n(named-region 1800 24 .init)\n(named-region 1824 192 .plt)\n(named-region 2048 452 .text)\n(named-region 2500 20 .fini)\n(named-region 2520 4 .rodata)\n(named-region 2524 60 .eh_frame_hdr)\n(named-region 2584 200 .eh_frame)\n(named-region 130488 8 .init_array)\n(named-region 130496 8 .fini_array)\n(named-region 130504 480 .dynamic)\n(named-region 130984 64 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 28 .data)\n(named-region 131184 16 .bss)\n(named-region 0 63 .comment)\n(named-region 0 2376 .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 2500 _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 1800 _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 240)\n(section 1560 240)\n(section 1800 24)\n(section 1824 192)\n(section 2048 452)\n(section 2500 20)\n(section 2520 4)\n(section 2524 60)\n(section 2584 200)\n(section 130488 8)\n(section 130496 8)\n(section 130504 480)\n(section 130984 64)\n(section 131048 104)\n(section 131152 28)\n(section 131184 16)\n(section 0 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2784 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 176 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 2500 2500)\n(symbol-value 2048 2048)\n(symbol-value 2324 2324)\n(symbol-value 1800 1800)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +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 2564 20 2564)\n(code-region 2112 452 2112)\n(code-region 1904 192 1904)\n(code-region 1880 24 1880)\n(code-start 2164)\n(code-start 2112)\n(code-start 2388)\n(entry-point 2112)\n(external-reference 130992 _ITM_deregisterTMCloneTable)\n(external-reference 131000 __cxa_finalize)\n(external-reference 131008 __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 1880 0)\n(llvm:code-entry main 2388 176)\n(llvm:code-entry _start 2112 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 2564 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 2384 0)\n(llvm:code-entry __do_global_dtors_aux 2304 0)\n(llvm:code-entry register_tm_clones 2240 0)\n(llvm:code-entry deregister_tm_clones 2192 0)\n(llvm:code-entry call_weak_fn 2164 20)\n(llvm:code-entry .fini 2564 20)\n(llvm:code-entry .text 2112 452)\n(llvm:code-entry .plt 1904 192)\n(llvm:code-entry .init 1880 24)\n(llvm:elf-program-header 08 64936 600)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2588 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64952 496)\n(llvm:elf-program-header 03 64936 708)\n(llvm:elf-program-header 02 0 2848)\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 2588 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130488 496)\n(llvm:elf-virtual-program-header 03 130472 728)\n(llvm:elf-virtual-program-header 02 0 2848)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 2112)\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 131008 __gmon_start__)\n(llvm:name-reference 131000 __cxa_finalize)\n(llvm:name-reference 130992 _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 130984 64 65448)\n(llvm:section-entry .dynamic 130488 496 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 2648 200 2648)\n(llvm:section-entry .eh_frame_hdr 2588 60 2588)\n(llvm:section-entry .rodata 2584 4 2584)\n(llvm:section-entry .fini 2564 20 2564)\n(llvm:section-entry .text 2112 452 2112)\n(llvm:section-entry .plt 1904 192 1904)\n(llvm:section-entry .init 1880 24 1880)\n(llvm:section-entry .rela.plt 1640 240 1640)\n(llvm:section-entry .rela.dyn 1400 240 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 1880 0 1880 1880)\n(llvm:symbol-entry main 2388 176 2388 2388)\n(llvm:symbol-entry _start 2112 52 2112 2112)\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 2564 0 2564 2564)\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 2384 0 2384 2384)\n(llvm:symbol-entry __do_global_dtors_aux 2304 0 2304 2304)\n(llvm:symbol-entry register_tm_clones 2240 0 2240 2240)\n(llvm:symbol-entry deregister_tm_clones 2192 0 2192 2192)\n(llvm:symbol-entry call_weak_fn 2164 20 2164 2164)\n(mapped 0 2848 0)\n(mapped 130472 708 64936)\n(named-region 0 2848 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 179 .dynstr)\n(named-region 1316 30 .gnu.version)\n(named-region 1352 48 .gnu.version_r)\n(named-region 1400 240 .rela.dyn)\n(named-region 1640 240 .rela.plt)\n(named-region 1880 24 .init)\n(named-region 1904 192 .plt)\n(named-region 2112 452 .text)\n(named-region 2564 20 .fini)\n(named-region 2584 4 .rodata)\n(named-region 2588 60 .eh_frame_hdr)\n(named-region 2648 200 .eh_frame)\n(named-region 130472 8 .init_array)\n(named-region 130480 8 .fini_array)\n(named-region 130488 496 .dynamic)\n(named-region 130984 64 .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 2164 call_weak_fn)\n(named-symbol 2192 deregister_tm_clones)\n(named-symbol 2240 register_tm_clones)\n(named-symbol 2304 __do_global_dtors_aux)\n(named-symbol 2384 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 2564 _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 2112 _start)\n(named-symbol 2388 main)\n(named-symbol 1880 _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 240)\n(section 1640 240)\n(section 1880 24)\n(section 1904 192)\n(section 2112 452)\n(section 2564 20)\n(section 2584 4)\n(section 2588 60)\n(section 2648 200)\n(section 130472 8)\n(section 130480 8)\n(section 130488 496)\n(section 130984 64)\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 2848 true false true)\n(segment 130472 728 true true false)\n(subarch v8)\n(symbol-chunk 2164 20 2164)\n(symbol-chunk 2112 52 2112)\n(symbol-chunk 2388 176 2388)\n(symbol-value 2164 2164)\n(symbol-value 2192 2192)\n(symbol-value 2240 2240)\n(symbol-value 2304 2304)\n(symbol-value 2384 2384)\n(symbol-value 2564 2564)\n(symbol-value 2112 2112)\n(symbol-value 2388 2388)\n(symbol-value 1880 1880)\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\xc8\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xc8\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x8b\x6d\x5f\x3c\x12\xd3\x18\x02\x5c\xee\xe8\x90\xc3\x4b\x9a\x38\xce\x17\x9d\x68\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"), -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\xc8\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x8b\x6d\x5f\x3c\x12\xd3\x18\x02\x5c\xee\xe8\x90\xc3\x4b\x9a\x38\xce\x17\x9d\x68\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\x08\x07\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\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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\x48\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\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\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xe8\x00\x00\xf0\x08\xe5\x47\xf9\xe8\x0f\x00\xf9\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x92\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x00\xf9\x08\x01\x40\xf9"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\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\x20\x0b\x00\x00\x00\x00\x00\x00\x20\x0b\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"), +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\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\x20\x0b\x00\x00\x00\x00\x00\x00\x20\x0b\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\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\x1c\x0a\x00\x00\x00\x00\x00\x00\x1c\x0a\x00\x00\x00\x00\x00\x00\x1c\x0a\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\x1f\xc2\x4d\xc4\x01\x0e\x07\x9b\x94\x0e\xcf\xf6\x4e\xe1\x2b\x70\xe7\xdf\xe6\x36\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\x40\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\x20\x0b\x00\x00\x00\x00\x00\x00\x20\x0b\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\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\x1c\x0a\x00\x00\x00\x00\x00\x00\x1c\x0a\x00\x00\x00\x00\x00\x00\x1c\x0a\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\x1f\xc2\x4d\xc4\x01\x0e\x07\x9b\x94\x0e\xcf\xf6\x4e\xe1\x2b\x70\xe7\xdf\xe6\x36\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\x58\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\xa8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x50\x09\x00\x00\x00\x00\x00\x00\xb0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x54\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91"), +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\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\x8b\x6d\x5f\x3c\x12\xd3\x18\x02\x5c\xee\xe8\x90\xc3\x4b\x9a\x38\xce\x17\x9d\x68"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x1f\xc2\x4d\xc4\x01\x0e\x07\x9b\x94\x0e\xcf\xf6\x4e\xe1\x2b\x70\xe7\xdf\xe6\x36"), 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\x08\x07\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, "\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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", 0x618, "\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", 0x708, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x48\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x720, "\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", 0x9C4, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9D8, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9DC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x24\xfe\xff\xff\x50\x00\x00\x00\x74\xfe\xff\xff\x64\x00\x00\x00\xa4\xfe\xff\xff\x78\x00\x00\x00\xe4\xfe\xff\xff\x8c\x00\x00\x00\x34\xff\xff\xff\xb0\x00\x00\x00\x38\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0xA18, "\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\xcc\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x08\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x24\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x50\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\x7c\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\x24\x00\x00\x00\x18\x00\x00\x00\x58\xfe\xff\xff\xb0\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x98\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\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\x08\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xc4\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\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\x18\x06\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\xf0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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", 0x1FFA8, "\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\x78\x00\x02\x00\x00\x00\x00\x00\x61\x00\x02\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\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\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\x58\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, "\xa8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x50\x09\x00\x00\x00\x00\x00\x00\xb0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x54\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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", 0x668, "\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", 0x758, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x770, "\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", 0xA04, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0xA18, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0xA1C, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x24\xfe\xff\xff\x50\x00\x00\x00\x74\xfe\xff\xff\x64\x00\x00\x00\xa4\xfe\xff\xff\x78\x00\x00\x00\xe4\xfe\xff\xff\x8c\x00\x00\x00\x34\xff\xff\xff\xb0\x00\x00\x00\x38\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0xA58, "\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\xcc\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x08\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x24\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x50\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\x7c\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\x24\x00\x00\x00\x18\x00\x00\x00\x58\xfe\xff\xff\xb0\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x98\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDB0, "\x00\x09\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\x0c\x00\x00\x00\x00\x00\x00\x00\x58\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x04\x0a\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\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\x68\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\xf0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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, "\x50\x09\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFA8, "\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\x78\x00\x02\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\x54\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\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\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\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\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\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xe8\x00\x00\xf0\x08\xe5\x47\xf9\xe8\x0f\x00\xf9\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x92\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x00\xf9\x08\x01\x40\xf9\xe8\x07\x00\xf9\xe0\x00\x00\xf0\x00\xe8\x47\xf9\xe0\x03\x00\xf9\x7e\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x76\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x93\xff\xff\x97\xe8\x0f\x40\xf9\x09\x01\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x01\x40\xf9\xe9\x0b\x00\xf9\x00\x01\x40\xf9\x6f\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x7b\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x88\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xADF), Attr("segment","02 0 2784")), -Annotation(Region(0x800,0x833), Attr("symbol","\"_start\"")), +Section(".text", 0x840, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xe8\x00\x00\xf0\x08\xe5\x47\xf9\xe8\x0f\x00\xf9\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x96\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x00\xf9\x08\x01\x40\xf9\xe8\x07\x00\xf9\xe0\x00\x00\xf0\x00\xe8\x47\xf9\xe0\x03\x00\xf9\x82\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7a\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x97\xff\xff\x97\xe8\x0f\x40\xf9\x09\x01\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x01\x40\xf9\xe9\x0b\x00\xf9\x00\x01\x40\xf9\x73\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x7f\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x8c\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xB1F), Attr("segment","02 0 2848")), +Annotation(Region(0x840,0x873), Attr("symbol","\"_start\"")), Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), -Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), -Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +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,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,0x617), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x618,0x707), Attr("section","\".rela.plt\"")), -Annotation(Region(0x708,0x71F), Attr("section","\".init\"")), -Annotation(Region(0x720,0x7DF), Attr("section","\".plt\"")), -Annotation(Region(0x708,0x71F), Attr("code-region","()")), -Annotation(Region(0x720,0x7DF), 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,0x9C3), Attr("symbol","\"main\"")), -Annotation(Region(0x914,0x9C3), Attr("symbol-info","main 0x914 176")), -Annotation(Region(0x9C4,0x9D7), Attr("section","\".fini\"")), -Annotation(Region(0x9D8,0x9DB), Attr("section","\".rodata\"")), -Annotation(Region(0x9DC,0xA17), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0xA18,0xADF), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDB8,0x2006B), Attr("segment","03 0x1FDB8 712")), -Annotation(Region(0x1FDC0,0x1FDC7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDC8,0x1FFA7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDB8,0x1FDBF), Attr("section","\".init_array\"")), +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,0x667), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x668,0x757), Attr("section","\".rela.plt\"")), +Annotation(Region(0x758,0x76F), Attr("section","\".init\"")), +Annotation(Region(0x770,0x82F), Attr("section","\".plt\"")), +Annotation(Region(0x758,0x76F), Attr("code-region","()")), +Annotation(Region(0x770,0x82F), Attr("code-region","()")), +Annotation(Region(0x840,0x873), Attr("symbol-info","_start 0x840 52")), +Annotation(Region(0x874,0x887), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x874,0x887), Attr("symbol-info","call_weak_fn 0x874 20")), +Annotation(Region(0x954,0xA03), Attr("symbol","\"main\"")), +Annotation(Region(0x954,0xA03), Attr("symbol-info","main 0x954 176")), +Annotation(Region(0xA04,0xA17), Attr("section","\".fini\"")), +Annotation(Region(0xA18,0xA1B), Attr("section","\".rodata\"")), +Annotation(Region(0xA1C,0xA57), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA58,0xB1F), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDA8,0x2006B), Attr("segment","03 0x1FDA8 728")), +Annotation(Region(0x1FDB0,0x1FDB7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDB8,0x1FFA7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDA8,0x1FDAF), Attr("section","\".init_array\"")), Annotation(Region(0x1FFA8,0x1FFE7), Attr("section","\".got\"")), Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), -Annotation(Region(0x800,0x9C3), Attr("section","\".text\"")), -Annotation(Region(0x800,0x9C3), Attr("code-region","()")), -Annotation(Region(0x9C4,0x9D7), Attr("code-region","()"))]), +Annotation(Region(0x840,0xA03), Attr("section","\".text\"")), +Annotation(Region(0x840,0xA03), Attr("code-region","()")), +Annotation(Region(0xA04,0xA17), Attr("code-region","()"))]), Program(Tid(2_242, "%000008c2"), Attrs([]), Subs([Sub(Tid(2_171, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x770"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_243, "%000008c3"), 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_324, "@__cxa_finalize"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x770"), + Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x774"), +Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x7C4"), 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_759, "%000006df"), Attrs([Attr("address","0x778"), +Def(Tid(1_759, "%000006df"), Attrs([Attr("address","0x7C8"), Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_764, "%000006e4"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_172, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), "__do_global_dtors_aux", Args([Arg(Tid(2_244, "%000008c4"), 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(802, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(809, "%00000329"), - Attrs([Attr("address","0x8C0"), + Attrs([Attr("address","0x900")]), Phis([]), Defs([Def(Tid(809, "%00000329"), + Attrs([Attr("address","0x900"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x8C0"), +Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x900"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(819, "%00000333"), Attrs([Attr("address","0x8C0"), +Def(Tid(819, "%00000333"), Attrs([Attr("address","0x900"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(823, "%00000337"), Attrs([Attr("address","0x8C0"), +Def(Tid(823, "%00000337"), Attrs([Attr("address","0x900"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), Var("#34",Imm(64))), Def(Tid(830, "%0000033e"), - Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), + Attrs([Attr("address","0x904"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(838, "%00000346"), - Attrs([Attr("address","0x8C8"), Attr("insn","str x19, [sp, #0x10]")]), + Attrs([Attr("address","0x908"), 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(844, "%0000034c"), Attrs([Attr("address","0x8CC"), +Def(Tid(844, "%0000034c"), Attrs([Attr("address","0x90C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(853, "%00000355"), Attrs([Attr("address","0x8D0"), +Def(Tid(853, "%00000355"), Attrs([Attr("address","0x910"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(865, "%00000361"), Attrs([Attr("address","0x8D4"), +Def(Tid(865, "%00000361"), Attrs([Attr("address","0x914"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(859, "%0000035b"), Attrs([Attr("address","0x8D4"), +Jmps([Goto(Tid(859, "%0000035b"), Attrs([Attr("address","0x914"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), Direct(Tid(857, "%00000359"))), Goto(Tid(2_232, "%000008b8"), Attrs([]), Int(1,1), Direct(Tid(1_258, "%000004ea")))])), Blk(Tid(1_258, "%000004ea"), - Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8D8"), + Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x918"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x8DC"), +Def(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x91C"), Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64)), -Def(Tid(1_282, "%00000502"), Attrs([Attr("address","0x8E0"), +Def(Tid(1_282, "%00000502"), Attrs([Attr("address","0x920"), Attr("insn","cbz x0, #0x10")]), Var("#70",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_276, "%000004fc"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), + Attrs([Attr("address","0x920"), Attr("insn","cbz x0, #0x10")]), Var("#70",Imm(1)), Direct(Tid(1_274, "%000004fa"))), Goto(Tid(2_233, "%000008b9"), Attrs([]), Int(1,1), Direct(Tid(1_306, "%0000051a")))])), Blk(Tid(1_306, "%0000051a"), - Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x8E4"), + Attrs([Attr("address","0x924")]), Phis([]), +Defs([Def(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x924"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_318, "%00000526"), Attrs([Attr("address","0x8E8"), +Def(Tid(1_318, "%00000526"), Attrs([Attr("address","0x928"), 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_323, "%0000052b"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x17c")]), Int(1,1), +Def(Tid(1_323, "%0000052b"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x16c")]), Int(1,1), (Direct(Tid(2_171, "@__cxa_finalize")),Direct(Tid(1_274, "%000004fa"))))])), -Blk(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_287, "%00000507"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_289, "%00000509"), Attrs([Attr("address","0x8F0"), +Blk(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_287, "%00000507"), Attrs([Attr("address","0x930"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2356,64))]), +Jmps([Call(Tid(1_289, "%00000509"), Attrs([Attr("address","0x930"), Attr("insn","bl #-0xa0")]), Int(1,1), (Direct(Tid(2_185, "@deregister_tm_clones")),Direct(Tid(1_291, "%0000050b"))))])), -Blk(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_296, "%00000510"), Attrs([Attr("address","0x8F4"), +Blk(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x934")]), Phis([]), +Defs([Def(Tid(1_296, "%00000510"), Attrs([Attr("address","0x934"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_304, "%00000518"), Attrs([Attr("address","0x8F8"), +Def(Tid(1_304, "%00000518"), Attrs([Attr("address","0x938"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), Jmps([Goto(Tid(2_234, "%000008ba"), Attrs([]), Int(1,1), Direct(Tid(857, "%00000359")))])), Blk(Tid(857, "%00000359"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(873, "%00000369"), - Attrs([Attr("address","0x8FC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Attrs([Attr("address","0x93C")]), Phis([]), Defs([Def(Tid(873, "%00000369"), + Attrs([Attr("address","0x93C"), 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(883, "%00000373"), Attrs([Attr("address","0x900"), +Def(Tid(883, "%00000373"), Attrs([Attr("address","0x940"), 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(887, "%00000377"), Attrs([Attr("address","0x900"), +Def(Tid(887, "%00000377"), Attrs([Attr("address","0x940"), 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(890, "%0000037a"), Attrs([Attr("address","0x900"), +Def(Tid(890, "%0000037a"), Attrs([Attr("address","0x940"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(895, "%0000037f"), - Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), + Attrs([Attr("address","0x944"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_176, "@__libc_start_main"), Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), -Attr("address","0x760"), Attr("stub","()")]), "__libc_start_main", +Attr("address","0x7B0"), Attr("stub","()")]), "__libc_start_main", Args([Arg(Tid(2_245, "%000008c5"), Attrs([Attr("c.layout","**[ : 64]"), Attr("c.data","Top:u64 ptr ptr"), @@ -195,260 +197,260 @@ Arg(Tid(2_249, "%000008c9"), 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(614, "@__libc_start_main"), - Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x760"), + Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x764"), +Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x7B4"), 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_734, "%000006c6"), Attrs([Attr("address","0x768"), +Def(Tid(1_734, "%000006c6"), Attrs([Attr("address","0x7B8"), Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_739, "%000006cb"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_177, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9C4")]), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0xA04")]), "_fini", Args([Arg(Tid(2_250, "%000008ca"), 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","0x9C4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), - Attrs([Attr("address","0x9C8"), + Attrs([Attr("address","0xA04")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0xA08"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9C8"), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0xA08"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9C8"), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0xA08"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9C8"), +Def(Tid(55, "%00000037"), Attrs([Attr("address","0xA08"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9CC"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0xA0C"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9D0"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0xA10"), 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(76, "%0000004c"), Attrs([Attr("address","0x9D0"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0xA10"), 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(79, "%0000004f"), Attrs([Attr("address","0x9D0"), +Def(Tid(79, "%0000004f"), Attrs([Attr("address","0xA10"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), - Attrs([Attr("address","0x9D4"), Attr("insn","ret")]), Int(1,1), + Attrs([Attr("address","0xA14"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_178, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x708")]), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x758")]), "_init", Args([Arg(Tid(2_251, "%000008cb"), 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_942, "@_init"), - Attrs([Attr("address","0x708")]), Phis([]), -Defs([Def(Tid(1_951, "%0000079f"), Attrs([Attr("address","0x70C"), + Attrs([Attr("address","0x758")]), Phis([]), +Defs([Def(Tid(1_951, "%0000079f"), Attrs([Attr("address","0x75C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#101",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_956, "%000007a4"), Attrs([Attr("address","0x70C"), +Def(Tid(1_956, "%000007a4"), Attrs([Attr("address","0x75C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#101",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_961, "%000007a9"), Attrs([Attr("address","0x70C"), +Def(Tid(1_961, "%000007a9"), Attrs([Attr("address","0x75C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#101",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_965, "%000007ad"), Attrs([Attr("address","0x70C"), +Def(Tid(1_965, "%000007ad"), Attrs([Attr("address","0x75C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), Var("#101",Imm(64))), Def(Tid(1_972, "%000007b4"), - Attrs([Attr("address","0x710"), Attr("insn","mov x29, sp")]), + Attrs([Attr("address","0x760"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_977, "%000007b9"), - Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), - Var("R30",Imm(64)), Int(1816,64))]), Jmps([Call(Tid(1_979, "%000007bb"), - Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), Int(1,1), + Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1896,64))]), Jmps([Call(Tid(1_979, "%000007bb"), + Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), Int(1,1), (Direct(Tid(2_183, "@call_weak_fn")),Direct(Tid(1_981, "%000007bd"))))])), -Blk(Tid(1_981, "%000007bd"), Attrs([Attr("address","0x718")]), Phis([]), -Defs([Def(Tid(1_989, "%000007c5"), Attrs([Attr("address","0x718"), +Blk(Tid(1_981, "%000007bd"), Attrs([Attr("address","0x768")]), Phis([]), +Defs([Def(Tid(1_989, "%000007c5"), Attrs([Attr("address","0x768"), 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_993, "%000007c9"), Attrs([Attr("address","0x718"), +Def(Tid(1_993, "%000007c9"), Attrs([Attr("address","0x768"), 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_996, "%000007cc"), Attrs([Attr("address","0x718"), +Def(Tid(1_996, "%000007cc"), Attrs([Attr("address","0x768"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_001, "%000007d1"), - Attrs([Attr("address","0x71C"), Attr("insn","ret")]), Int(1,1), + Attrs([Attr("address","0x76C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_179, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840"), Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_252, "%000008cc"), 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(540, "@_start"), - Attrs([Attr("address","0x800")]), Phis([]), Defs([Def(Tid(546, "%00000222"), - Attrs([Attr("address","0x804"), Attr("insn","mov x29, #0x0")]), + Attrs([Attr("address","0x840")]), Phis([]), Defs([Def(Tid(546, "%00000222"), + Attrs([Attr("address","0x844"), Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), Def(Tid(552, "%00000228"), - Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), + Attrs([Attr("address","0x848"), Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), Def(Tid(560, "%00000230"), - Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), + Attrs([Attr("address","0x84C"), Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(568, "%00000238"), - Attrs([Attr("address","0x810"), Attr("insn","ldr x1, [sp]")]), + Attrs([Attr("address","0x850"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(575, "%0000023f"), Attrs([Attr("address","0x814"), +Def(Tid(575, "%0000023f"), Attrs([Attr("address","0x854"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(582, "%00000246"), - Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), + Attrs([Attr("address","0x858"), Attr("insn","mov x6, sp")]), Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(588, "%0000024c"), - Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), + Attrs([Attr("address","0x85C"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), Def(Tid(596, "%00000254"), - Attrs([Attr("address","0x820"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Attrs([Attr("address","0x860"), 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(602, "%0000025a"), Attrs([Attr("address","0x824"), +Def(Tid(602, "%0000025a"), Attrs([Attr("address","0x864"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(608, "%00000260"), Attrs([Attr("address","0x828"), +Def(Tid(608, "%00000260"), Attrs([Attr("address","0x868"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(613, "%00000265"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xcc")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xcc")]), Int(1,1), +Def(Tid(613, "%00000265"), Attrs([Attr("address","0x86C"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2160,64))]), +Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x86C"), +Attr("insn","bl #-0xbc")]), Int(1,1), (Direct(Tid(2_176, "@__libc_start_main")),Direct(Tid(618, "%0000026a"))))])), -Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x80")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x80")]), Int(1,1), +Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x870"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2164,64))]), +Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x870"), +Attr("insn","bl #-0x70")]), Int(1,1), (Direct(Tid(2_182, "@abort")),Direct(Tid(2_235, "%000008bb"))))])), Blk(Tid(2_235, "%000008bb"), Attrs([]), Phis([]), Defs([]), Jmps([Call(Tid(2_236, "%000008bc"), Attrs([]), Int(1,1), (Direct(Tid(2_183, "@call_weak_fn")),))]))])), Sub(Tid(2_182, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x7B0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(622, "@abort"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x7B0"), +Attr("address","0x800"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(622, "@abort"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x800"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x7B4"), +Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x804"), 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_859, "%00000743"), Attrs([Attr("address","0x7B8"), +Def(Tid(1_859, "%00000743"), Attrs([Attr("address","0x808"), Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_864, "%00000748"), - Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x80C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_183, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x874")]), "call_weak_fn", Args([Arg(Tid(2_253, "%000008cd"), 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(626, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(630, "%00000276"), - Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), + Attrs([Attr("address","0x874")]), Phis([]), Defs([Def(Tid(630, "%00000276"), + Attrs([Attr("address","0x874"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), Def(Tid(638, "%0000027e"), - Attrs([Attr("address","0x838"), Attr("insn","ldr x0, [x0, #0xfc0]")]), + Attrs([Attr("address","0x878"), Attr("insn","ldr x0, [x0, #0xfc0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64)), -Def(Tid(650, "%0000028a"), Attrs([Attr("address","0x83C"), +Def(Tid(650, "%0000028a"), Attrs([Attr("address","0x87C"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(644, "%00000284"), - Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), + Attrs([Attr("address","0x87C"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), Direct(Tid(642, "%00000282"))), Goto(Tid(2_237, "%000008bd"), Attrs([]), Int(1,1), Direct(Tid(1_406, "%0000057e")))])), Blk(Tid(642, "%00000282"), - Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(655, "%0000028f"), Attrs([Attr("address","0x844"), + Attrs([Attr("address","0x884")]), Phis([]), Defs([]), +Jmps([Call(Tid(655, "%0000028f"), Attrs([Attr("address","0x884"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_406, "%0000057e"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_409, "%00000581"), Attrs([Attr("address","0x840"), -Attr("insn","b #-0xa0")]), Int(1,1), +Blk(Tid(1_406, "%0000057e"), Attrs([Attr("address","0x880")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_409, "%00000581"), Attrs([Attr("address","0x880"), +Attr("insn","b #-0x90")]), Int(1,1), Direct(Tid(1_407, "@__gmon_start__")))])), Blk(Tid(1_407, "@__gmon_start__"), - Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x7A0"), + Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x7F4"), 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_834, "%0000072a"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_834, "%0000072a"), Attrs([Attr("address","0x7F8"), Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_839, "%0000072f"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_185, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x890")]), "deregister_tm_clones", Args([Arg(Tid(2_254, "%000008ce"), 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(661, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(665, "%00000299"), - Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), + Attrs([Attr("address","0x890")]), Phis([]), Defs([Def(Tid(665, "%00000299"), + Attrs([Attr("address","0x890"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), Def(Tid(672, "%000002a0"), - Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), + Attrs([Attr("address","0x894"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x858"), +Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x898"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x85C"), +Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x89C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(693, "%000002b5"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), Var("#16",Imm(64)), PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x860"), +Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), Extract(63,63,Var("#16",Imm(64)))), Def(Tid(700, "%000002bc"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x860"), +Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(706, "%000002c2"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x864"), +Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x8A4"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(714, "%000002ca"), Attrs([Attr("address","0x864"), +Jmps([Goto(Tid(714, "%000002ca"), Attrs([Attr("address","0x8A4"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Direct(Tid(712, "%000002c8"))), Goto(Tid(2_238, "%000008be"), Attrs([]), Int(1,1), Direct(Tid(1_367, "%00000557")))])), Blk(Tid(1_367, "%00000557"), - Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x868"), + Attrs([Attr("address","0x8A8")]), Phis([]), +Defs([Def(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x8A8"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_379, "%00000563"), Attrs([Attr("address","0x86C"), +Def(Tid(1_379, "%00000563"), Attrs([Attr("address","0x8AC"), Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64)), -Def(Tid(1_390, "%0000056e"), Attrs([Attr("address","0x870"), +Def(Tid(1_390, "%0000056e"), Attrs([Attr("address","0x8B0"), Attr("insn","cbz x1, #0xc")]), Var("#78",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_384, "%00000568"), - Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), + Attrs([Attr("address","0x8B0"), Attr("insn","cbz x1, #0xc")]), Var("#78",Imm(1)), Direct(Tid(712, "%000002c8"))), Goto(Tid(2_239, "%000008bf"), Attrs([]), Int(1,1), Direct(Tid(1_393, "%00000571")))])), Blk(Tid(712, "%000002c8"), - Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(725, "%000002d5"), Attrs([Attr("address","0x87C"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([]), +Jmps([Call(Tid(725, "%000002d5"), Attrs([Attr("address","0x8BC"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_393, "%00000571"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_399, "%00000577"), Attrs([Attr("address","0x874"), +Blk(Tid(1_393, "%00000571"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_399, "%00000577"), Attrs([Attr("address","0x8B4"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_404, "%0000057c"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(1_404, "%0000057c"), Attrs([Attr("address","0x8B8"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), Sub(Tid(2_188, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_255, "%000008cf"), +Attr("address","0x950")]), "frame_dummy", Args([Arg(Tid(2_255, "%000008cf"), 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(901, "@frame_dummy"), - Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(903, "%00000387"), Attrs([Attr("address","0x910"), + Attrs([Attr("address","0x950")]), Phis([]), Defs([]), +Jmps([Call(Tid(903, "%00000387"), Attrs([Attr("address","0x950"), Attr("insn","b #-0x90")]), Int(1,1), (Direct(Tid(2_195, "@register_tm_clones")),))]))])), Sub(Tid(2_189, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7D0"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x820"), Attr("stub","()")]), "free", Args([Arg(Tid(2_256, "%000008d0"), 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_220, "@free"), Attrs([Attr("address","0x7D0")]), - Phis([]), Defs([Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x7D0"), +Both())]), Blks([Blk(Tid(1_220, "@free"), Attrs([Attr("address","0x820")]), + Phis([]), Defs([Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x820"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x7D4"), +Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x824"), 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_909, "%00000775"), Attrs([Attr("address","0x7D8"), +Def(Tid(1_909, "%00000775"), Attrs([Attr("address","0x828"), Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_914, "%0000077a"), - Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x82C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_190, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_257, "%000008d1"), +Attr("address","0x954")]), "main", Args([Arg(Tid(2_257, "%000008d1"), 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_258, "%000008d2"), @@ -458,162 +460,162 @@ Var("R1",Imm(64)), Both()), Arg(Tid(2_259, "%000008d3"), 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(905, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(910, "%0000038e"), - Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), + Attrs([Attr("address","0x954")]), Phis([]), Defs([Def(Tid(910, "%0000038e"), + Attrs([Attr("address","0x954"), Attr("insn","sub sp, sp, #0x40")]), Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), -Def(Tid(918, "%00000396"), Attrs([Attr("address","0x918"), +Def(Tid(918, "%00000396"), Attrs([Attr("address","0x958"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(923, "%0000039b"), - Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), + Attrs([Attr("address","0x958"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x918"), +Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x958"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x91C"), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x95C"), Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(941, "%000003ad"), - Attrs([Attr("address","0x920"), Attr("insn","adrp x8, #0x1f000")]), + Attrs([Attr("address","0x960"), Attr("insn","adrp x8, #0x1f000")]), Var("R8",Imm(64)), Int(126976,64)), Def(Tid(949, "%000003b5"), - Attrs([Attr("address","0x924"), Attr("insn","ldr x8, [x8, #0xfc8]")]), + Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [x8, #0xfc8]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(4040,64)),LittleEndian(),64)), -Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x928"), +Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x968"), Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x92C"), +Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x96C"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x930"), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x970"), Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x934"), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x974"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(984, "%000003d8"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(987, "%000003db"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1b8")]), Int(1,1), +Def(Tid(984, "%000003d8"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2428,64))]), +Jmps([Call(Tid(987, "%000003db"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1a8")]), Int(1,1), (Direct(Tid(2_191, "@malloc")),Direct(Tid(989, "%000003dd"))))])), -Blk(Tid(989, "%000003dd"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x93C"), +Blk(Tid(989, "%000003dd"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x97C"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x940"), +Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x980"), Attr("insn","str x0, [x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R8",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x944"), +Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x984"), Attr("insn","ldr x8, [x8]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x948"), +Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x988"), Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x94C"), +Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x98C"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x950"), +Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x990"), 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)), -Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x954"), +Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x994"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x958"), -Attr("insn","bl #-0x208")]), Var("R30",Imm(64)), Int(2396,64))]), -Jmps([Call(Tid(1_049, "%00000419"), Attrs([Attr("address","0x958"), -Attr("insn","bl #-0x208")]), Int(1,1), +Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x998"), +Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2460,64))]), +Jmps([Call(Tid(1_049, "%00000419"), Attrs([Attr("address","0x998"), +Attr("insn","bl #-0x1f8")]), Int(1,1), (Direct(Tid(2_198, "@strlen")),Direct(Tid(1_051, "%0000041b"))))])), -Blk(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x95C")]), Phis([]), -Defs([Def(Tid(1_057, "%00000421"), Attrs([Attr("address","0x95C"), +Blk(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x99C")]), Phis([]), +Defs([Def(Tid(1_057, "%00000421"), Attrs([Attr("address","0x99C"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_065, "%00000429"), Attrs([Attr("address","0x960"), +Def(Tid(1_065, "%00000429"), Attrs([Attr("address","0x9A0"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x964"), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x9A4"), Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_078, "%00000436"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x228")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_081, "%00000439"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x228")]), Int(1,1), +Def(Tid(1_078, "%00000436"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2476,64))]), +Jmps([Call(Tid(1_081, "%00000439"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x218")]), Int(1,1), (Direct(Tid(2_192, "@memcpy")),Direct(Tid(1_083, "%0000043b"))))])), -Blk(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_089, "%00000441"), Attrs([Attr("address","0x96C"), +Blk(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x9AC")]), Phis([]), +Defs([Def(Tid(1_089, "%00000441"), Attrs([Attr("address","0x9AC"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_097, "%00000449"), Attrs([Attr("address","0x970"), +Def(Tid(1_097, "%00000449"), Attrs([Attr("address","0x9B0"), Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_102, "%0000044e"), Attrs([Attr("address","0x974"), -Attr("insn","bl #-0x1b4")]), Var("R30",Imm(64)), Int(2424,64))]), -Jmps([Call(Tid(1_105, "%00000451"), Attrs([Attr("address","0x974"), -Attr("insn","bl #-0x1b4")]), Int(1,1), +Def(Tid(1_102, "%0000044e"), Attrs([Attr("address","0x9B4"), +Attr("insn","bl #-0x1a4")]), Var("R30",Imm(64)), Int(2488,64))]), +Jmps([Call(Tid(1_105, "%00000451"), Attrs([Attr("address","0x9B4"), +Attr("insn","bl #-0x1a4")]), Int(1,1), (Direct(Tid(2_194, "@puts")),Direct(Tid(1_107, "%00000453"))))])), -Blk(Tid(1_107, "%00000453"), Attrs([Attr("address","0x978")]), Phis([]), -Defs([Def(Tid(1_113, "%00000459"), Attrs([Attr("address","0x978"), +Blk(Tid(1_107, "%00000453"), Attrs([Attr("address","0x9B8")]), Phis([]), +Defs([Def(Tid(1_113, "%00000459"), Attrs([Attr("address","0x9B8"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x97C"), +Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x9BC"), Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x980"), +Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x9C0"), Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_136, "%00000470"), - Attrs([Attr("address","0x984"), Attr("insn","stur x9, [x29, #-0x8]")]), + Attrs([Attr("address","0x9C4"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x988"), +Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x9C8"), Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_152, "%00000480"), Attrs([Attr("address","0x98C"), +Def(Tid(1_152, "%00000480"), Attrs([Attr("address","0x9CC"), Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x990"), +Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x9D0"), Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x994"), -Attr("insn","bl #-0x244")]), Var("R30",Imm(64)), Int(2456,64))]), -Jmps([Call(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x994"), -Attr("insn","bl #-0x244")]), Int(1,1), +Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x9D4"), +Attr("insn","bl #-0x234")]), Var("R30",Imm(64)), Int(2520,64))]), +Jmps([Call(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x9D4"), +Attr("insn","bl #-0x234")]), Int(1,1), (Direct(Tid(2_198, "@strlen")),Direct(Tid(1_169, "%00000491"))))])), -Blk(Tid(1_169, "%00000491"), Attrs([Attr("address","0x998")]), Phis([]), -Defs([Def(Tid(1_175, "%00000497"), Attrs([Attr("address","0x998"), +Blk(Tid(1_169, "%00000491"), Attrs([Attr("address","0x9D8")]), Phis([]), +Defs([Def(Tid(1_175, "%00000497"), Attrs([Attr("address","0x9D8"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x99C"), +Def(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x9DC"), Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x9A0"), +Def(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x9E0"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x9A4"), -Attr("insn","bl #-0x214")]), Var("R30",Imm(64)), Int(2472,64))]), -Jmps([Call(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x9A4"), -Attr("insn","bl #-0x214")]), Int(1,1), +Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x9E4"), +Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2536,64))]), +Jmps([Call(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x9E4"), +Attr("insn","bl #-0x204")]), Int(1,1), (Direct(Tid(2_193, "@memset")),Direct(Tid(1_200, "%000004b0"))))])), -Blk(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x9A8")]), Phis([]), -Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x9A8"), +Blk(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x9E8")]), Phis([]), +Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x9E8"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_214, "%000004be"), Attrs([Attr("address","0x9AC"), +Def(Tid(1_214, "%000004be"), Attrs([Attr("address","0x9EC"), Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x9B0"), -Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2484,64))]), -Jmps([Call(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x9B0"), -Attr("insn","bl #-0x1e0")]), Int(1,1), +Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x9F0"), +Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2548,64))]), +Jmps([Call(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x9F0"), +Attr("insn","bl #-0x1d0")]), Int(1,1), (Direct(Tid(2_189, "@free")),Direct(Tid(1_224, "%000004c8"))))])), -Blk(Tid(1_224, "%000004c8"), Attrs([Attr("address","0x9B4")]), Phis([]), -Defs([Def(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x9B4"), +Blk(Tid(1_224, "%000004c8"), Attrs([Attr("address","0x9F4")]), Phis([]), +Defs([Def(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x9F4"), Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x9B8"), +Def(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x9F8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), -Def(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x9B8"), +Def(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x9F8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), -Def(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x9BC"), +Def(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x9FC"), Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_256, "%000004e8"), - Attrs([Attr("address","0x9C0"), Attr("insn","ret")]), Int(1,1), + Attrs([Attr("address","0xA00"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_191, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x780"), Attr("malloc","()"), Attr("stub","()")]), "malloc", +Attr("address","0x7D0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", Args([Arg(Tid(2_260, "%000008d4"), 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)), @@ -621,19 +623,19 @@ Var("R0",Imm(64)), In()), Arg(Tid(2_261, "%000008d5"), 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(985, "@malloc"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x780"), +Blks([Blk(Tid(985, "@malloc"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x784"), +Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x7D4"), 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_784, "%000006f8"), Attrs([Attr("address","0x788"), +Def(Tid(1_784, "%000006f8"), Attrs([Attr("address","0x7D8"), Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_789, "%000006fd"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_192, "@memcpy"), Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), -Attr("address","0x740"), Attr("stub","()")]), "memcpy", +Attr("address","0x790"), Attr("stub","()")]), "memcpy", Args([Arg(Tid(2_262, "%000008d6"), Attrs([Attr("nonnull","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void restrict *")]), Var("memcpy_dst",Imm(64)), @@ -647,19 +649,19 @@ Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Arg(Tid(2_265, "%000008d9"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_079, "@memcpy"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_669, "%00000685"), Attrs([Attr("address","0x740"), +Blks([Blk(Tid(1_079, "@memcpy"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_669, "%00000685"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_677, "%0000068d"), Attrs([Attr("address","0x744"), +Def(Tid(1_677, "%0000068d"), Attrs([Attr("address","0x794"), Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), -Def(Tid(1_684, "%00000694"), Attrs([Attr("address","0x748"), +Def(Tid(1_684, "%00000694"), Attrs([Attr("address","0x798"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), Var("R16",Imm(64)))]), Jmps([Call(Tid(1_689, "%00000699"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_193, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x790"), Attr("stub","()")]), "memset", +Attr("address","0x7E0"), Attr("stub","()")]), "memset", Args([Arg(Tid(2_266, "%000008da"), Attrs([Attr("nonnull","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memset_buf",Imm(64)), Var("R0",Imm(64)), @@ -672,93 +674,93 @@ Attr("c.type","unsigned long")]), Var("memset_n",Imm(64)), Var("R2",Imm(64)), In()), Arg(Tid(2_269, "%000008dd"), 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_196, "@memset"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_196, "@memset"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x794"), +Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x7E4"), 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_809, "%00000711"), Attrs([Attr("address","0x798"), +Def(Tid(1_809, "%00000711"), Attrs([Attr("address","0x7E8"), Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_814, "%00000716"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_194, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x7C0"), Attr("stub","()")]), "puts", +Attr("address","0x810"), Attr("stub","()")]), "puts", Args([Arg(Tid(2_270, "%000008de"), 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_271, "%000008df"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_103, "@puts"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x7C0"), +Blks([Blk(Tid(1_103, "@puts"), Attrs([Attr("address","0x810")]), Phis([]), +Defs([Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x810"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x7C4"), +Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x814"), 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_884, "%0000075c"), Attrs([Attr("address","0x7C8"), +Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x818"), Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_889, "%00000761"), - Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x81C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_195, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), "register_tm_clones", Args([Arg(Tid(2_272, "%000008e0"), 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(727, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x880"), +Blks([Blk(Tid(727, "@register_tm_clones"), Attrs([Attr("address","0x8C0")]), + Phis([]), Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x8C0"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x884"), +Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x8C4"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(744, "%000002e8"), - Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), + Attrs([Attr("address","0x8C8"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), Def(Tid(751, "%000002ef"), - Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), + Attrs([Attr("address","0x8CC"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x890"), +Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x8D0"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(766, "%000002fe"), - Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), + Attrs([Attr("address","0x8D4"), Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(774, "%00000306"), Attrs([Attr("address","0x898"), +Def(Tid(774, "%00000306"), Attrs([Attr("address","0x8D8"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), -Def(Tid(781, "%0000030d"), Attrs([Attr("address","0x89C"), +Def(Tid(781, "%0000030d"), Attrs([Attr("address","0x8DC"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(793, "%00000319"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(787, "%00000313"), Attrs([Attr("address","0x8A0"), +Jmps([Goto(Tid(787, "%00000313"), Attrs([Attr("address","0x8E0"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), Direct(Tid(785, "%00000311"))), Goto(Tid(2_240, "%000008c0"), Attrs([]), Int(1,1), Direct(Tid(1_328, "%00000530")))])), Blk(Tid(1_328, "%00000530"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_332, "%00000534"), Attrs([Attr("address","0x8A4"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_332, "%00000534"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8E8"), 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)), -Def(Tid(1_351, "%00000547"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_351, "%00000547"), Attrs([Attr("address","0x8EC"), Attr("insn","cbz x2, #0xc")]), Var("#73",Imm(1)), EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_345, "%00000541"), - Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), + Attrs([Attr("address","0x8EC"), Attr("insn","cbz x2, #0xc")]), Var("#73",Imm(1)), Direct(Tid(785, "%00000311"))), Goto(Tid(2_241, "%000008c1"), Attrs([]), Int(1,1), Direct(Tid(1_354, "%0000054a")))])), Blk(Tid(785, "%00000311"), - Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(798, "%0000031e"), Attrs([Attr("address","0x8B8"), + Attrs([Attr("address","0x8F8")]), Phis([]), Defs([]), +Jmps([Call(Tid(798, "%0000031e"), Attrs([Attr("address","0x8F8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_360, "%00000550"), Attrs([Attr("address","0x8B0"), +Blk(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_360, "%00000550"), Attrs([Attr("address","0x8F0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_365, "%00000555"), Attrs([Attr("address","0x8B4"), +Jmps([Call(Tid(1_365, "%00000555"), Attrs([Attr("address","0x8F4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), Sub(Tid(2_198, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x750"), Attr("stub","()")]), "strlen", +Attr("pure","()"), Attr("address","0x7A0"), Attr("stub","()")]), "strlen", Args([Arg(Tid(2_273, "%000008e1"), 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)), @@ -766,14 +768,14 @@ In()), Arg(Tid(2_274, "%000008e2"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_047, "@strlen"), - Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_694, "%0000069e"), Attrs([Attr("address","0x750"), + Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_694, "%0000069e"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_702, "%000006a6"), Attrs([Attr("address","0x754"), +Def(Tid(1_702, "%000006a6"), Attrs([Attr("address","0x7A4"), 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_709, "%000006ad"), Attrs([Attr("address","0x758"), +Def(Tid(1_709, "%000006ad"), Attrs([Attr("address","0x7A8"), Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_714, "%000006b2"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7AC"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir index 9101af90e..24db96439 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir @@ -34,11 +34,11 @@ 0000051a: 0000051e: R0 := 0x20000 00000526: R0 := mem[R0 + 0x58, el]:u64 -0000052b: R30 := 0x8F0 +0000052b: R30 := 0x930 0000052e: call @__cxa_finalize with return %000004fa 000004fa: -00000507: R30 := 0x8F4 +00000507: R30 := 0x934 00000509: call @deregister_tm_clones with return %0000050b 0000050b: @@ -89,7 +89,7 @@ 000007a9: mem := mem with [#101 + 8, el]:u64 <- R30 000007ad: R31 := #101 000007b4: R29 := R31 -000007b9: R30 := 0x718 +000007b9: R30 := 0x768 000007bb: call @call_weak_fn with return %000007bd 000007bd: @@ -112,11 +112,11 @@ 00000254: R0 := mem[R0 + 0xFD8, el]:u64 0000025a: R3 := 0 00000260: R4 := 0 -00000265: R30 := 0x830 +00000265: R30 := 0x870 00000268: call @__libc_start_main with return %0000026a 0000026a: -0000026d: R30 := 0x834 +0000026d: R30 := 0x874 00000270: call @abort with return %000008bb 000008bb: @@ -218,7 +218,7 @@ 000003c5: mem := mem with [R29 - 8, el]:u64 <- 0 000003cd: mem := mem with [R29 - 0x10, el]:u64 <- 0 000003d3: R0 := 0xB -000003d8: R30 := 0x93C +000003d8: R30 := 0x97C 000003db: call @malloc with return %000003dd 000003dd: @@ -229,20 +229,20 @@ 00000401: R0 := 0x1F000 00000409: R0 := mem[R0 + 0xFD0, el]:u64 00000411: mem := mem with [R31, el]:u64 <- R0 -00000416: R30 := 0x95C +00000416: R30 := 0x99C 00000419: call @strlen with return %0000041b 0000041b: 00000421: R1 := mem[R31, el]:u64 00000429: R2 := R0 00000431: R0 := mem[R31 + 8, el]:u64 -00000436: R30 := 0x96C +00000436: R30 := 0x9AC 00000439: call @memcpy with return %0000043b 0000043b: 00000441: R8 := mem[R31 + 0x18, el]:u64 00000449: R0 := mem[R8, el]:u64 -0000044e: R30 := 0x978 +0000044e: R30 := 0x9B8 00000451: call @puts with return %00000453 00000453: @@ -253,20 +253,20 @@ 00000478: R9 := mem[R8, el]:u64 00000480: mem := mem with [R31 + 0x10, el]:u64 <- R9 00000488: R0 := mem[R8, el]:u64 -0000048d: R30 := 0x998 +0000048d: R30 := 0x9D8 0000048f: call @strlen with return %00000491 00000491: 00000497: R2 := R0 0000049f: R0 := mem[R31 + 0x10, el]:u64 000004a6: R1 := 1 -000004ab: R30 := 0x9A8 +000004ab: R30 := 0x9E8 000004ae: call @memset with return %000004b0 000004b0: 000004b6: R8 := mem[R31 + 0x18, el]:u64 000004be: R0 := mem[R8, el]:u64 -000004c3: R30 := 0x9B4 +000004c3: R30 := 0x9F4 000004c6: call @free with return %000004c8 000004c8: diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf index 0e1254ec5..f837a2922 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf @@ -1,18 +1,18 @@ -Relocation section '.rela.dyn' at offset 0x528 contains 10 entries: +Relocation section '.rela.dyn' at offset 0x578 contains 10 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdb8 0000000000000403 R_AARCH64_RELATIVE 910 -000000000001fdc0 0000000000000403 R_AARCH64_RELATIVE 8c0 +000000000001fda8 0000000000000403 R_AARCH64_RELATIVE 950 +000000000001fdb0 0000000000000403 R_AARCH64_RELATIVE 900 000000000001ffc8 0000000000000403 R_AARCH64_RELATIVE 20078 000000000001ffd0 0000000000000403 R_AARCH64_RELATIVE 20061 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 914 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 954 0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 000000000001ffb0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 000000000001ffb8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 000000000001ffc0 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 0x618 contains 10 entries: +Relocation section '.rela.plt' at offset 0x668 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 @@ -28,8 +28,8 @@ Relocation section '.rela.plt' at offset 0x618 contains 10 entries: Symbol table '.dynsym' contains 15 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 0000000000000708 0 SECTION LOCAL DEFAULT 11 .init - 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 1: 0000000000000758 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) @@ -43,104 +43,105 @@ Symbol table '.dynsym' contains 15 entries: 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 99 entries: +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 .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: 0000000000000618 0 SECTION LOCAL DEFAULT 10 .rela.plt - 11: 0000000000000708 0 SECTION LOCAL DEFAULT 11 .init - 12: 0000000000000720 0 SECTION LOCAL DEFAULT 12 .plt - 13: 0000000000000800 0 SECTION LOCAL DEFAULT 13 .text - 14: 00000000000009c4 0 SECTION LOCAL DEFAULT 14 .fini - 15: 00000000000009d8 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 00000000000009dc 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 0000000000000a18 0 SECTION LOCAL DEFAULT 17 .eh_frame - 18: 000000000001fdb8 0 SECTION LOCAL DEFAULT 18 .init_array - 19: 000000000001fdc0 0 SECTION LOCAL DEFAULT 19 .fini_array - 20: 000000000001fdc8 0 SECTION LOCAL DEFAULT 20 .dynamic - 21: 000000000001ffa8 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: 0000000000000800 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 0000000000000a2c 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 00000000000009d8 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 0000000000000834 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 0000000000000834 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 0000000000000708 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 00000000000009c4 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 0000000000000718 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 00000000000009d0 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000850 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000850 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000880 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 00000000000008c0 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdc0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdc0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 0000000000000910 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdb8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdb8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a40 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 0000000000000914 0 NOTYPE LOCAL DEFAULT 13 $x.0 - 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 - 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 - 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 - 59: 0000000000000aa0 0 NOTYPE LOCAL DEFAULT 17 $d.4 - 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 61: 0000000000000adc 0 NOTYPE LOCAL DEFAULT 17 $d - 62: 0000000000000adc 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 64: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 65: 00000000000009dc 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 66: 000000000001ffa8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 67: 0000000000000720 0 NOTYPE LOCAL DEFAULT 12 $x - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata - 77: 00000000000009c4 0 FUNC GLOBAL HIDDEN 14 _fini - 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 86: 00000000000009d8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end - 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 90: 0000000000000800 52 FUNC GLOBAL DEFAULT 13 _start - 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf - 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext - 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 95: 0000000000000914 176 FUNC GLOBAL DEFAULT 13 main - 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 98: 0000000000000708 0 FUNC GLOBAL HIDDEN 11 _init + 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: 0000000000000668 0 SECTION LOCAL DEFAULT 11 .rela.plt + 12: 0000000000000758 0 SECTION LOCAL DEFAULT 12 .init + 13: 0000000000000770 0 SECTION LOCAL DEFAULT 13 .plt + 14: 0000000000000840 0 SECTION LOCAL DEFAULT 14 .text + 15: 0000000000000a04 0 SECTION LOCAL DEFAULT 15 .fini + 16: 0000000000000a18 0 SECTION LOCAL DEFAULT 16 .rodata + 17: 0000000000000a1c 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr + 18: 0000000000000a58 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: 000000000001ffa8 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: 0000000000000840 0 NOTYPE LOCAL DEFAULT 14 $x + 31: 0000000000000a6c 0 NOTYPE LOCAL DEFAULT 18 $d + 32: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 16 $d + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 34: 0000000000000874 0 NOTYPE LOCAL DEFAULT 14 $x + 35: 0000000000000874 20 FUNC LOCAL DEFAULT 14 call_weak_fn + 36: 0000000000000758 0 NOTYPE LOCAL DEFAULT 12 $x + 37: 0000000000000a04 0 NOTYPE LOCAL DEFAULT 15 $x + 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 39: 0000000000000768 0 NOTYPE LOCAL DEFAULT 12 $x + 40: 0000000000000a10 0 NOTYPE LOCAL DEFAULT 15 $x + 41: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 42: 0000000000000890 0 NOTYPE LOCAL DEFAULT 14 $x + 43: 0000000000000890 0 FUNC LOCAL DEFAULT 14 deregister_tm_clones + 44: 00000000000008c0 0 FUNC LOCAL DEFAULT 14 register_tm_clones + 45: 0000000000020058 0 NOTYPE LOCAL DEFAULT 24 $d + 46: 0000000000000900 0 FUNC LOCAL DEFAULT 14 __do_global_dtors_aux + 47: 0000000000020070 1 OBJECT LOCAL DEFAULT 25 completed.0 + 48: 000000000001fdb0 0 NOTYPE LOCAL DEFAULT 20 $d + 49: 000000000001fdb0 0 OBJECT LOCAL DEFAULT 20 __do_global_dtors_aux_fini_array_entry + 50: 0000000000000950 0 FUNC LOCAL DEFAULT 14 frame_dummy + 51: 000000000001fda8 0 NOTYPE LOCAL DEFAULT 19 $d + 52: 000000000001fda8 0 OBJECT LOCAL DEFAULT 19 __frame_dummy_init_array_entry + 53: 0000000000000a80 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: 0000000000000954 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: 0000000000000ae0 0 NOTYPE LOCAL DEFAULT 18 $d.4 + 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 62: 0000000000000b1c 0 NOTYPE LOCAL DEFAULT 18 $d + 63: 0000000000000b1c 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ + 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 65: 000000000001fdb8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 66: 0000000000000a1c 0 NOTYPE LOCAL DEFAULT 17 __GNU_EH_FRAME_HDR + 67: 000000000001ffa8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 68: 0000000000000770 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: 0000000000000a04 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: 0000000000000a18 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: 0000000000000840 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: 0000000000000954 176 FUNC GLOBAL DEFAULT 14 main + 97: 0000000000020070 0 OBJECT GLOBAL HIDDEN 24 __TMC_END__ + 98: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 99: 0000000000000758 0 FUNC GLOBAL HIDDEN 12 _init diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected index 05c767d15..8952ee7a6 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected @@ -321,36 +321,36 @@ procedure main() free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); { - var #4: bv64; - var Gamma_#4: bool; + var #42: bv64; + var Gamma_#42: 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 "%0000037c"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); - assume {:captureState "%00000382"} true; - R31, Gamma_R31 := #4, Gamma_#4; + #42, Gamma_#42 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); + assume {:captureState "%000003ad"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); + assume {:captureState "%000003b2"} true; + R31, Gamma_R31 := #42, Gamma_#42; R29, Gamma_R29 := R31, Gamma_R31; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); - assume {:captureState "%00000394"} true; + assume {:captureState "%000003c5"} true; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); - assume {:captureState "%0000039b"} true; + assume {:captureState "%000003cd"} true; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); - assume {:captureState "%000003a2"} true; + assume {:captureState "%000003d5"} true; R0, Gamma_R0 := 11bv64, true; R30, Gamma_R30 := 2288bv64, true; call malloc(); - goto l000003b1; - l000003b1: - assume {:captureState "l000003b1"} true; + goto l000003e5; + l000003e5: + assume {:captureState "l000003e5"} true; R1, Gamma_R1 := R0, Gamma_R0; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); assert (L(mem, R0) ==> Gamma_R1); mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%000003c8"} true; + assume {:captureState "%00000400"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); @@ -359,34 +359,34 @@ procedure main() R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; R30, Gamma_R30 := 2328bv64, true; call strlen(); - goto l000003ef; - l000003ef: - assume {:captureState "l000003ef"} true; + goto l0000042c; + l0000042c: + assume {:captureState "l0000042c"} true; R2, Gamma_R2 := R0, Gamma_R0; R0, Gamma_R0 := 131072bv64, true; R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; R0, Gamma_R0 := R19, Gamma_R19; R30, Gamma_R30 := 2348bv64, true; call memcpy(); - goto l0000040e; - l0000040e: - assume {:captureState "l0000040e"} true; + goto l00000451; + l00000451: + assume {:captureState "l00000451"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); R30, Gamma_R30 := 2364bv64, true; call puts(); - goto l00000428; - l00000428: - assume {:captureState "l00000428"} true; + goto l0000046e; + l0000046e: + assume {:captureState "l0000046e"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); R0, Gamma_R0 := bvadd64(R0, 4bv64), Gamma_R0; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); - assume {:captureState "%00000446"} true; + assume {:captureState "%00000490"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); @@ -397,26 +397,26 @@ procedure main() R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); R30, Gamma_R30 := 2412bv64, true; call strlen(); - goto l00000473; - l00000473: - assume {:captureState "l00000473"} true; + goto l000004c3; + l000004c3: + assume {:captureState "l000004c3"} true; R2, Gamma_R2 := R0, Gamma_R0; R1, Gamma_R1 := 1bv64, true; R0, Gamma_R0 := R19, Gamma_R19; R30, Gamma_R30 := 2428bv64, true; call memset(); - goto l0000048c; - l0000048c: - assume {:captureState "l0000048c"} true; + goto l000004e2; + l000004e2: + assume {:captureState "l000004e2"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; call rely(); R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); R30, Gamma_R30 := 2444bv64, true; call #free(); - goto l000004a6; - l000004a6: - assume {:captureState "l000004a6"} true; + goto l000004ff; + l000004ff: + assume {:captureState "l000004ff"} true; R0, Gamma_R0 := 0bv64, true; R19, Gamma_R19 := 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); @@ -465,7 +465,6 @@ procedure malloc(); 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]); @@ -550,7 +549,6 @@ procedure memcpy(); 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, 2480bv64) == 1bv8); @@ -782,7 +780,6 @@ procedure strlen(); 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); 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 index 3579f04f2..a1729ce76 100644 --- 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 @@ -322,35 +322,33 @@ procedure main() 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; + var #14: bv64; + var #9: bv64; + var Gamma_#14: bool; + var Gamma_#9: 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; + #9, Gamma_#9 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #9, R29), gamma_store64(Gamma_stack, #9, Gamma_R29); + assume {:captureState "%00000238"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#9, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#9, 8bv64), Gamma_R30); + assume {:captureState "%0000023d"} true; + R31, Gamma_R31 := #9, Gamma_#9; 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; + assume {:captureState "%00000256"} 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; + #14, Gamma_#14 := bvadd64(R31, 16bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #14, R19), gamma_store64(Gamma_stack, #14, Gamma_R19); + assume {:captureState "%00000269"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#14, 8bv64), R20), gamma_store64(Gamma_stack, bvadd64(#14, 8bv64), Gamma_R20); + assume {:captureState "%0000026e"} true; R30, Gamma_R30 := 2012bv64, true; call malloc(); - goto l00000271; - l00000271: - assume {:captureState "l00000271"} true; + goto l00000278; + l00000278: + assume {:captureState "l00000278"} true; R20, Gamma_R20 := 131072bv64, true; R20, Gamma_R20 := bvadd64(R20, 96bv64), Gamma_R20; R19, Gamma_R19 := R0, Gamma_R0; @@ -358,52 +356,51 @@ procedure main() 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; + assume {:captureState "%0000029b"} true; R30, Gamma_R30 := 2036bv64, true; call strlen(); - goto l00000298; - l00000298: - assume {:captureState "l00000298"} true; + goto l000002a5; + l000002a5: + assume {:captureState "l000002a5"} 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; + goto l000002c5; + l000002c5: + assume {:captureState "l000002c5"} true; R0, Gamma_R0 := R19, Gamma_R19; R30, Gamma_R30 := 2060bv64, true; call puts(); - goto l000002c0; - l000002c0: - assume {:captureState "l000002c0"} true; + goto l000002d5; + l000002d5: + assume {:captureState "l000002d5"} 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; + goto l000002ec; + l000002ec: + assume {:captureState "l000002ec"} 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; + goto l0000030b; + l0000030b: + assume {:captureState "l0000030b"} 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)); + goto l0000031b; + l0000031b: + assume {:captureState "l0000031b"} true; + R19, Gamma_R19 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); + R20, Gamma_R20 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); 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); @@ -452,7 +449,6 @@ procedure malloc(); 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]); @@ -537,7 +533,6 @@ procedure memcpy(); 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); @@ -769,7 +764,6 @@ procedure strlen(); 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); diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt index 1e0aa4fea..4ce6993bd 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt @@ -1,1189 +1,781 @@ 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 x86_64)\n(base-address 0)\n(bias 0)\n(bits 64)\n(code-region 4676 9 4676)\n(code-region 4256 417 4256)\n(code-region 4240 8 4240)\n(code-region 4128 112 4128)\n(code-region 4096 23 4096)\n(code-start 4256)\n(code-start 4496)\n(entry-point 4256)\n(external-reference 16320 __libc_start_main)\n(external-reference 16328 _ITM_deregisterTMCloneTable)\n(external-reference 16336 __gmon_start__)\n(external-reference 16344 _ITM_registerTMCloneTable)\n(external-reference 16352 __cxa_finalize)\n(external-reference 16384 free)\n(external-reference 16392 puts)\n(external-reference 16400 strlen)\n(external-reference 16408 memset)\n(external-reference 16416 memcpy)\n(external-reference 16424 malloc)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry _init 4096 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.2.5 0 0)\n(llvm:code-entry main 4496 177)\n(llvm:code-entry _start 4256 34)\n(llvm:code-entry malloc@GLIBC_2.2.5 0 0)\n(llvm:code-entry memcpy@GLIBC_2.14 0 0)\n(llvm:code-entry memset@GLIBC_2.2.5 0 0)\n(llvm:code-entry strlen@GLIBC_2.2.5 0 0)\n(llvm:code-entry _fini 4676 0)\n(llvm:code-entry puts@GLIBC_2.2.5 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry free@GLIBC_2.2.5 0 0)\n(llvm:code-entry frame_dummy 4480 0)\n(llvm:code-entry __do_global_dtors_aux 4416 0)\n(llvm:code-entry register_tm_clones 4352 0)\n(llvm:code-entry deregister_tm_clones 4304 0)\n(llvm:code-entry .fini 4676 9)\n(llvm:code-entry .text 4256 417)\n(llvm:code-entry .plt.got 4240 8)\n(llvm:code-entry .plt 4128 112)\n(llvm:code-entry .init 4096 23)\n(llvm:elf-program-header 12 11728 560)\n(llvm:elf-program-header 11 0 0)\n(llvm:elf-program-header 10 8196 44)\n(llvm:elf-program-header 09 824 32)\n(llvm:elf-program-header 08 856 68)\n(llvm:elf-program-header 07 824 32)\n(llvm:elf-program-header 06 11744 480)\n(llvm:elf-program-header 05 11728 636)\n(llvm:elf-program-header 04 8192 220)\n(llvm:elf-program-header 03 4096 589)\n(llvm:elf-program-header 02 0 1872)\n(llvm:elf-program-header 01 792 28)\n(llvm:elf-program-header 00 64 728)\n(llvm:elf-program-header-flags 12 false true false false)\n(llvm:elf-program-header-flags 11 false true true false)\n(llvm:elf-program-header-flags 10 false true false false)\n(llvm:elf-program-header-flags 09 false true false false)\n(llvm:elf-program-header-flags 08 false true false false)\n(llvm:elf-program-header-flags 07 false true false false)\n(llvm:elf-program-header-flags 06 false true true false)\n(llvm:elf-program-header-flags 05 true true true false)\n(llvm:elf-program-header-flags 04 true true false false)\n(llvm:elf-program-header-flags 03 true true false true)\n(llvm:elf-program-header-flags 02 true true false false)\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 12 15824 560)\n(llvm:elf-virtual-program-header 11 0 0)\n(llvm:elf-virtual-program-header 10 8196 44)\n(llvm:elf-virtual-program-header 09 824 32)\n(llvm:elf-virtual-program-header 08 856 68)\n(llvm:elf-virtual-program-header 07 824 32)\n(llvm:elf-virtual-program-header 06 15840 480)\n(llvm:elf-virtual-program-header 05 15824 656)\n(llvm:elf-virtual-program-header 04 8192 220)\n(llvm:elf-virtual-program-header 03 4096 589)\n(llvm:elf-virtual-program-header 02 0 1872)\n(llvm:elf-virtual-program-header 01 792 28)\n(llvm:elf-virtual-program-header 00 64 728)\n(llvm:entry-point 4256)\n(llvm:name-reference 16424 malloc)\n(llvm:name-reference 16416 memcpy)\n(llvm:name-reference 16408 memset)\n(llvm:name-reference 16400 strlen)\n(llvm:name-reference 16392 puts)\n(llvm:name-reference 16384 free)\n(llvm:name-reference 16352 __cxa_finalize)\n(llvm:name-reference 16344 _ITM_registerTMCloneTable)\n(llvm:name-reference 16336 __gmon_start__)\n(llvm:name-reference 16328 _ITM_deregisterTMCloneTable)\n(llvm:name-reference 16320 __libc_start_main)\n(llvm:section-entry .shstrtab 0 282 14101)\n(llvm:section-entry .strtab 0 613 13488)\n(llvm:section-entry .symtab 0 1056 12432)\n(llvm:section-entry .comment 0 63 12364)\n(llvm:section-entry .bss 16464 16 12364)\n(llvm:section-entry .data 16432 28 12336)\n(llvm:section-entry .got.plt 16360 72 12264)\n(llvm:section-entry .got 16320 40 12224)\n(llvm:section-entry .dynamic 15840 480 11744)\n(llvm:section-entry .fini_array 15832 8 11736)\n(llvm:section-entry .init_array 15824 8 11728)\n(llvm:section-entry .eh_frame 8240 172 8240)\n(llvm:section-entry .eh_frame_hdr 8196 44 8196)\n(llvm:section-entry .rodata 8192 4 8192)\n(llvm:section-entry .fini 4676 9 4676)\n(llvm:section-entry .text 4256 417 4256)\n(llvm:section-entry .plt.got 4240 8 4240)\n(llvm:section-entry .plt 4128 112 4128)\n(llvm:section-entry .init 4096 23 4096)\n(llvm:section-entry .rela.plt 1728 144 1728)\n(llvm:section-entry .rela.dyn 1536 192 1536)\n(llvm:section-entry .gnu.version_r 1472 64 1472)\n(llvm:section-entry .gnu.version 1442 24 1442)\n(llvm:section-entry .dynstr 1256 185 1256)\n(llvm:section-entry .dynsym 968 288 968)\n(llvm:section-entry .gnu.hash 928 36 928)\n(llvm:section-entry .note.ABI-tag 892 32 892)\n(llvm:section-entry .note.gnu.build-id 856 36 856)\n(llvm:section-entry .note.gnu.property 824 32 824)\n(llvm:section-entry .interp 792 28 792)\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.got 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 .note.gnu.property true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry _init 4096 0 4096 4096)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry main 4496 177 4496 4496)\n(llvm:symbol-entry _start 4256 34 4256 4256)\n(llvm:symbol-entry malloc@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.14 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry _fini 4676 0 4676 4676)\n(llvm:symbol-entry puts@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry free@GLIBC_2.2.5 0 0 0 0)\n(llvm:symbol-entry frame_dummy 4480 0 4480 4480)\n(llvm:symbol-entry __do_global_dtors_aux 4416 0 4416 4416)\n(llvm:symbol-entry register_tm_clones 4352 0 4352 4352)\n(llvm:symbol-entry deregister_tm_clones 4304 0 4304 4304)\n(mapped 0 1872 0)\n(mapped 4096 589 4096)\n(mapped 8192 220 8192)\n(mapped 15824 636 11728)\n(named-region 0 1872 02)\n(named-region 4096 589 03)\n(named-region 8192 220 04)\n(named-region 15824 656 05)\n(named-region 792 28 .interp)\n(named-region 824 32 .note.gnu.property)\n(named-region 856 36 .note.gnu.build-id)\n(named-region 892 32 .note.ABI-tag)\n(named-region 928 36 .gnu.hash)\n(named-region 968 288 .dynsym)\n(named-region 1256 185 .dynstr)\n(named-region 1442 24 .gnu.version)\n(named-region 1472 64 .gnu.version_r)\n(named-region 1536 192 .rela.dyn)\n(named-region 1728 144 .rela.plt)\n(named-region 4096 23 .init)\n(named-region 4128 112 .plt)\n(named-region 4240 8 .plt.got)\n(named-region 4256 417 .text)\n(named-region 4676 9 .fini)\n(named-region 8192 4 .rodata)\n(named-region 8196 44 .eh_frame_hdr)\n(named-region 8240 172 .eh_frame)\n(named-region 15824 8 .init_array)\n(named-region 15832 8 .fini_array)\n(named-region 15840 480 .dynamic)\n(named-region 16320 40 .got)\n(named-region 16360 72 .got.plt)\n(named-region 16432 28 .data)\n(named-region 16464 16 .bss)\n(named-region 0 63 .comment)\n(named-region 0 1056 .symtab)\n(named-region 0 613 .strtab)\n(named-region 0 282 .shstrtab)\n(named-symbol 4304 deregister_tm_clones)\n(named-symbol 4352 register_tm_clones)\n(named-symbol 4416 __do_global_dtors_aux)\n(named-symbol 4480 frame_dummy)\n(named-symbol 0 free@GLIBC_2.2.5)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 puts@GLIBC_2.2.5)\n(named-symbol 4676 _fini)\n(named-symbol 0 strlen@GLIBC_2.2.5)\n(named-symbol 0 memset@GLIBC_2.2.5)\n(named-symbol 0 memcpy@GLIBC_2.14)\n(named-symbol 0 malloc@GLIBC_2.2.5)\n(named-symbol 4256 _start)\n(named-symbol 4496 main)\n(named-symbol 0 __cxa_finalize@GLIBC_2.2.5)\n(named-symbol 4096 _init)\n(named-symbol 0 free)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 puts)\n(named-symbol 0 strlen)\n(named-symbol 0 memset)\n(named-symbol 0 memcpy)\n(named-symbol 0 malloc)\n(named-symbol 0 __cxa_finalize)\n(require libc.so.6)\n(section 792 28)\n(section 824 32)\n(section 856 36)\n(section 892 32)\n(section 928 36)\n(section 968 288)\n(section 1256 185)\n(section 1442 24)\n(section 1472 64)\n(section 1536 192)\n(section 1728 144)\n(section 4096 23)\n(section 4128 112)\n(section 4240 8)\n(section 4256 417)\n(section 4676 9)\n(section 8192 4)\n(section 8196 44)\n(section 8240 172)\n(section 15824 8)\n(section 15832 8)\n(section 15840 480)\n(section 16320 40)\n(section 16360 72)\n(section 16432 28)\n(section 16464 16)\n(section 0 63)\n(section 0 1056)\n(section 0 613)\n(section 0 282)\n(segment 0 1872 true false false)\n(segment 4096 589 true false true)\n(segment 8192 220 true false false)\n(segment 15824 656 true true false)\n(subarch \"\")\n(symbol-chunk 4256 34 4256)\n(symbol-chunk 4496 177 4496)\n(symbol-value 4304 4304)\n(symbol-value 4352 4352)\n(symbol-value 4416 4416)\n(symbol-value 4480 4480)\n(symbol-value 4676 4676)\n(symbol-value 4256 4256)\n(symbol-value 4496 4496)\n(symbol-value 4096 4096)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), -Attr("abi-name","\"x86_64-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x00\x10"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xe0\x2d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\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\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\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\x53\xe5\x74\x64\x04\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\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\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e\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\xd8\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\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\x50\x07\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xe0\x2d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\x00\x00\x00\x00\x00\xe0\x3d\x00\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\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\x00\x00\x00\x00\x58\x03\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\x53\xe5\x74\x64\x04\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x04\x20\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2c\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\xd0\x2d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\x00\x00\x00\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x78\x38\x36\x2d\x36\x34\x2e\x73\x6f\x2e\x32\x00\x00\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x47\x4e\x55\x00\x02\x80\x00\xc0\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x4f\x89\xd4\x0c\x15\x5f\x13\xa2\x95\x91\x94\x1e\x8c\x18\x3b\x1e\xa5\xbd\xe9\x57\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xd1\x65\xce\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xa0\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0d\x00\x40\x00\x1f\x00\x1e"), -Section(".interp", 0x318, "\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x78\x38\x36\x2d\x36\x34\x2e\x73\x6f\x2e\x32\x00"), -Section(".note.gnu.property", 0x338, "\x04\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x47\x4e\x55\x00\x02\x80\x00\xc0\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"), -Section(".note.gnu.build-id", 0x358, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x4f\x89\xd4\x0c\x15\x5f\x13\xa2\x95\x91\x94\x1e\x8c\x18\x3b\x1e\xa5\xbd\xe9\x57"), -Section(".note.ABI-tag", 0x37C, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x3A0, "\x02\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xd1\x65\xce\x6d"), -Section(".dynsym", 0x3C8, "\x00\x00\x00\x00\x00\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\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\x01\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\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\x41\x00\x00\x00\x12\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\x9f\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"), -Section(".dynstr", 0x4E8, "\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\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\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", 0x5A2, "\x00\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x04\x00\x02\x00\x01\x00\x02\x00"), -Section(".gnu.version_r", 0x5C0, "\x01\x00\x03\x00\x48\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x94\x91\x96\x06\x00\x00\x04\x00\x52\x00\x00\x00\x10\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x5d\x00\x00\x00\x10\x00\x00\x00\x75\x1a\x69\x09\x00\x00\x02\x00\x68\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x600, "\xd0\x3d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x80\x11\x00\x00\x00\x00\x00\x00\xd8\x3d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x40\x11\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\xc0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x3f\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x6C0, "\x00\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x40\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".plt", 0x1020, "\xff\x35\xca\x2f\x00\x00\xff\x25\xcc\x2f\x00\x00\x0f\x1f\x40\x00\xff\x25\xca\x2f\x00\x00\x68\x00\x00\x00\x00\xe9\xe0\xff\xff\xff\xff\x25\xc2\x2f\x00\x00\x68\x01\x00\x00\x00\xe9\xd0\xff\xff\xff\xff\x25\xba\x2f\x00\x00\x68\x02\x00\x00\x00\xe9\xc0\xff\xff\xff\xff\x25\xb2\x2f\x00\x00\x68\x03\x00\x00\x00\xe9\xb0\xff\xff\xff\xff\x25\xaa\x2f\x00\x00\x68\x04\x00\x00\x00\xe9\xa0\xff\xff\xff\xff\x25\xa2\x2f\x00\x00\x68\x05\x00\x00\x00\xe9\x90\xff\xff\xff"), -Section(".plt.got", 0x1090, "\xff\x25\x4a\x2f\x00\x00\x66\x90"), -Section(".text", 0x10A0, "\x31\xed\x49\x89\xd1\x5e\x48\x89\xe2\x48\x83\xe4\xf0\x50\x54\x45\x31\xc0\x31\xc9\x48\x8d\x3d\xd5\x00\x00\x00\xff\x15\xff\x2e\x00\x00\xf4\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x0f\x1f\x40\x00\x48\x8d\x3d\x79\x2f\x00\x00\x48\x8d\x05\x72\x2f\x00\x00\x48\x39\xf8\x74\x15\x48\x8b\x05\xde\x2e\x00\x00\x48\x85\xc0\x74\x09\xff\xe0\x0f\x1f\x80\x00\x00\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\x48\x8d\x3d\x49\x2f\x00\x00\x48\x8d\x35\x42\x2f\x00\x00\x48\x29\xfe\x48\x89\xf0\x48\xc1\xee\x3f\x48\xc1\xf8\x03\x48\x01\xc6\x48\xd1\xfe\x74\x14\x48\x8b\x05\xad\x2e\x00\x00\x48\x85\xc0\x74\x08\xff\xe0\x66\x0f\x1f\x44\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\xf3\x0f\x1e\xfa\x80\x3d\x05\x2f\x00\x00\x00\x75\x2b\x55\x48\x83\x3d\x8a\x2e\x00\x00\x00\x48\x89\xe5\x74\x0c\x48\x8b\x3d\xd6\x2e\x00\x00\xe8\x29\xff\xff\xff\xe8\x64\xff\xff\xff\xc6\x05\xdd\x2e\x00\x00\x01\x5d\xc3\x0f\x1f\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\xf3\x0f\x1e\xfa\xe9\x77\xff\xff\xff\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x48\x83\xec\x20\x48\xc7\x45\xf8\x00\x00\x00\x00\x48\xc7\x45\xf0\x00\x00\x00\x00\xbf\x0b\x00\x00\x00\xe8\xce\xfe\xff\xff\x48\x89\x05\x9f\x2e\x00\x00\x48\x8b\x05\x98\x2e\x00\x00\x48\x89\x45\xe0\x48\x8d\x3d\x76\x2e\x00\x00\xe8\x80\xfe\xff\xff\x48\x8b\x7d\xe0\x48\x89\xc2\x48\x8d\x35\x63\x2e\x00\x00\xe8\x8d\xfe\xff\xff\x48\x8b\x3d\x6e\x2e\x00\x00\xe8\x51\xfe\xff\xff\x48\x8b\x05\x62\x2e\x00\x00\x48\x83\xc0\x04\x48\x89\x45\xf8\x48\x8b\x45\xf8\xc6\x00\x00\x48\x8b\x05\x4c\x2e\x00\x00\x48\x89\x45\xe8\x48\x8b\x3d\x41\x2e\x00\x00\xe8\x34\xfe\xff\xff\x48\x8b\x7d\xe8\x48\x89\xc2\xbe\x01\x00\x00\x00\xe8\x33\xfe\xff\xff\x48\x8b\x3d\x24\x2e\x00\x00\xe8\xf7\xfd\xff\xff\x31\xc0\x48\x83\xc4\x20\x5d\xc3"), -Section(".init", 0x1000, "\x48\x83\xec\x08\x48\x8b\x05\xc5\x2f\x00\x00\x48\x85\xc0\x74\x02\xff\xd0\x48\x83\xc4\x08\xc3"), -Section(".fini", 0x1244, "\x48\x83\xec\x08\x48\x83\xc4\x08\xc3"), -Section(".eh_frame_hdr", 0x2004, "\x01\x1b\x03\x3b\x28\x00\x00\x00\x04\x00\x00\x00\x1c\xf0\xff\xff\x74\x00\x00\x00\x8c\xf0\xff\xff\x9c\x00\x00\x00\x9c\xf0\xff\xff\x44\x00\x00\x00\x8c\xf1\xff\xff\xb4\x00\x00\x00"), -Section(".eh_frame", 0x2030, "\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x1b\x0c\x07\x08\x90\x01\x07\x10\x14\x00\x00\x00\x1c\x00\x00\x00\x50\xf0\xff\xff\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x1b\x0c\x07\x08\x90\x01\x00\x00\x24\x00\x00\x00\x1c\x00\x00\x00\xa0\xef\xff\xff\x70\x00\x00\x00\x00\x0e\x10\x46\x0e\x18\x4a\x0f\x0b\x77\x08\x80\x00\x3f\x1a\x3b\x2a\x33\x24\x22\x00\x00\x00\x00\x14\x00\x00\x00\x44\x00\x00\x00\xe8\xef\xff\xff\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x5c\x00\x00\x00\xd0\xf0\xff\xff\xb1\x00\x00\x00\x00\x41\x0e\x10\x86\x02\x43\x0d\x06\x02\xac\x0c\x07\x08\x00\x00\x00\x00\x00\x00"), -Section(".rodata", 0x2000, "\x01\x00\x02\x00"), -Section(".fini_array", 0x3DD8, "\x40\x11\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x3DE0, "\x01\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x44\x12\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xd0\x3d\x00\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\xd8\x3d\x00\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\xa0\x03\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xc8\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\x3f\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x90\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\xc0\x06\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x06\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\xc0\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\xa2\x05\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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", 0x3DD0, "\x80\x11\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x3FC0, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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.plt", 0x3FE8, "\xe0\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x10\x00\x00\x00\x00\x00\x00\x46\x10\x00\x00\x00\x00\x00\x00\x56\x10\x00\x00\x00\x00\x00\x00\x66\x10\x00\x00\x00\x00\x00\x00\x76\x10\x00\x00\x00\x00\x00\x00\x86\x10\x00\x00\x00\x00\x00\x00"), -Section(".data", 0x4030, "\x00\x00\x00\x00\x00\x00\x00\x00\x38\x40\x00\x00\x00\x00\x00\x00\x07\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00")]), -Memmap([Annotation(Region(0x0,0x74F), Attr("segment","02 0 1872")), -Annotation(Region(0x0,0x119), Attr("section","\".shstrtab\"")), -Annotation(Region(0x0,0x264), Attr("section","\".strtab\"")), -Annotation(Region(0x0,0x41F), Attr("section","\".symtab\"")), -Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), -Annotation(Region(0x318,0x333), Attr("section","\".interp\"")), -Annotation(Region(0x338,0x357), Attr("section","\".note.gnu.property\"")), -Annotation(Region(0x358,0x37B), Attr("section","\".note.gnu.build-id\"")), -Annotation(Region(0x37C,0x39B), Attr("section","\".note.ABI-tag\"")), -Annotation(Region(0x3A0,0x3C3), Attr("section","\".gnu.hash\"")), -Annotation(Region(0x3C8,0x4E7), Attr("section","\".dynsym\"")), -Annotation(Region(0x4E8,0x5A0), Attr("section","\".dynstr\"")), -Annotation(Region(0x5A2,0x5B9), Attr("section","\".gnu.version\"")), -Annotation(Region(0x5C0,0x5FF), Attr("section","\".gnu.version_r\"")), -Annotation(Region(0x600,0x6BF), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x6C0,0x74F), Attr("section","\".rela.plt\"")), -Annotation(Region(0x1000,0x124C), Attr("segment","03 0x1000 589")), -Annotation(Region(0x1020,0x108F), Attr("section","\".plt\"")), -Annotation(Region(0x1090,0x1097), Attr("section","\".plt.got\"")), -Annotation(Region(0x1090,0x1097), Attr("code-region","()")), -Annotation(Region(0x10A0,0x10C1), Attr("symbol","\"_start\"")), -Annotation(Region(0x10A0,0x10C1), Attr("symbol-info","_start 0x10A0 34")), -Annotation(Region(0x10A0,0x1240), Attr("section","\".text\"")), -Annotation(Region(0x1190,0x1240), Attr("symbol","\"main\"")), -Annotation(Region(0x1000,0x1016), Attr("section","\".init\"")), -Annotation(Region(0x1000,0x1016), Attr("code-region","()")), -Annotation(Region(0x1020,0x108F), Attr("code-region","()")), -Annotation(Region(0x10A0,0x1240), Attr("code-region","()")), -Annotation(Region(0x1190,0x1240), Attr("symbol-info","main 0x1190 177")), -Annotation(Region(0x1244,0x124C), Attr("section","\".fini\"")), -Annotation(Region(0x1244,0x124C), Attr("code-region","()")), -Annotation(Region(0x2000,0x20DB), Attr("segment","04 0x2000 220")), -Annotation(Region(0x2004,0x202F), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x2030,0x20DB), Attr("section","\".eh_frame\"")), -Annotation(Region(0x2000,0x2003), Attr("section","\".rodata\"")), -Annotation(Region(0x3DD0,0x404B), Attr("segment","05 0x3DD0 656")), -Annotation(Region(0x3DD8,0x3DDF), Attr("section","\".fini_array\"")), -Annotation(Region(0x3DE0,0x3FBF), Attr("section","\".dynamic\"")), -Annotation(Region(0x3DD0,0x3DD7), Attr("section","\".init_array\"")), -Annotation(Region(0x3FC0,0x3FE7), Attr("section","\".got\"")), -Annotation(Region(0x3FE8,0x402F), Attr("section","\".got.plt\"")), -Annotation(Region(0x4030,0x404B), Attr("section","\".data\""))]), -Program(Tid(2_916, "%00000b64"), Attrs([]), - Subs([Sub(Tid(2_892, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1090"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_917, "%00000b65"), +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 2500 20 2500)\n(code-region 2048 452 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 176)\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 2500 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 2500 20)\n(llvm:code-entry .text 2048 452)\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 2524 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 2784)\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 2524 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 2784)\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 2584 200 2584)\n(llvm:section-entry .eh_frame_hdr 2524 60 2524)\n(llvm:section-entry .rodata 2520 4 2520)\n(llvm:section-entry .fini 2500 20 2500)\n(llvm:section-entry .text 2048 452 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 176 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 2500 0 2500 2500)\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 2784 0)\n(mapped 130488 692 64952)\n(named-region 0 2784 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 452 .text)\n(named-region 2500 20 .fini)\n(named-region 2520 4 .rodata)\n(named-region 2524 60 .eh_frame_hdr)\n(named-region 2584 200 .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 2500 _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 452)\n(section 2500 20)\n(section 2520 4)\n(section 2524 60)\n(section 2584 200)\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 2784 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 176 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 2500 2500)\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad"), +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", 0x9C4, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9D8, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9DC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x24\xfe\xff\xff\x50\x00\x00\x00\x74\xfe\xff\xff\x64\x00\x00\x00\xa4\xfe\xff\xff\x78\x00\x00\x00\xe4\xfe\xff\xff\x8c\x00\x00\x00\x34\xff\xff\xff\xb0\x00\x00\x00\x38\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0xA18, "\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\xcc\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x08\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x24\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x50\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\x7c\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\x24\x00\x00\x00\x18\x00\x00\x00\x58\xfe\xff\xff\xb0\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x98\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\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\xc4\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x80\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x9d\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\xa9\x83\x5f\xf8\x3f\x01\x00\x39\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x77\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x83\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x90\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xADF), Attr("segment","02 0 2784")), +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,0x9C3), Attr("symbol","\"main\"")), +Annotation(Region(0x914,0x9C3), Attr("symbol-info","main 0x914 176")), +Annotation(Region(0x9C4,0x9D7), Attr("section","\".fini\"")), +Annotation(Region(0x9D8,0x9DB), Attr("section","\".rodata\"")), +Annotation(Region(0x9DC,0xA17), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA18,0xADF), 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,0x9C3), Attr("section","\".text\"")), +Annotation(Region(0x800,0x9C3), Attr("code-region","()")), +Annotation(Region(0x9C4,0x9D7), Attr("code-region","()"))]), +Program(Tid(2_361, "%00000939"), Attrs([]), + Subs([Sub(Tid(2_290, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_362, "%0000093a"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("__cxa_finalize_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(2_181, "@__cxa_finalize"), Attrs([Attr("address","0x1090")]), - Phis([]), Defs([]), Jmps([Call(Tid(2_889, "%00000b49"), - Attrs([Attr("address","0x1090"), Attr("insn","jmpq *0x2f4a(%rip)")]), - Int(1,1), (Direct(Tid(2_887, "@__cxa_finalize:external")),))]))])), -Sub(Tid(2_893, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1140")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_918, "%00000b66"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_323, "@__cxa_finalize"), + Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_743, "%000006cf"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_751, "%000006d7"), 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_758, "%000006de"), 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_763, "%000006e3"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_291, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_363, "%0000093b"), 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("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(1_300, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x1140")]), Phis([]), -Defs([Def(Tid(1_324, "%0000052c"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("#12582884",Imm(8)), -Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8)), -Def(Tid(1_328, "%00000530"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("CF",Imm(1)), -LT(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),Int(0,8))), -Def(Tid(1_334, "%00000536"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("OF",Imm(1)), -HIGH(1,AND(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),XOR(Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8),Var("#12582884",Imm(8)))))), -Def(Tid(1_339, "%0000053b"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("AF",Imm(1)), -EQ(Int(16,8),AND(Int(16,8),XOR(Var("#12582884",Imm(8)),Load(Var("mem",Mem(64,8)),Int(16464,64),LittleEndian(),8))))), -Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(8)),XOR(RSHIFT(Var("#12582884",Imm(8)),Int(4,8)),Var("#12582884",Imm(8))),Let(Var("$1",Imm(8)),XOR(RSHIFT(Var("$0",Imm(8)),Int(2,8)),Var("$0",Imm(8))),XOR(RSHIFT(Var("$1",Imm(8)),Int(1,8)),Var("$1",Imm(8)))))))), -Def(Tid(1_348, "%00000544"), Attrs([Attr("address","0x1144"), -Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582884",Imm(8)))), Def(Tid(1_352, "%00000548"), - Attrs([Attr("address","0x1144"), Attr("insn","cmpb $0x0, 0x2f05(%rip)")]), - Var("ZF",Imm(1)), EQ(Int(0,8),Var("#12582884",Imm(8))))]), -Jmps([Goto(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x114B"), -Attr("insn","jne 0x2b")]), NOT(Var("ZF",Imm(1))), -Direct(Tid(1_356, "%0000054c"))), Goto(Tid(2_894, "%00000b4e"), Attrs([]), - Int(1,1), Direct(Tid(2_008, "%000007d8")))])), Blk(Tid(1_356, "%0000054c"), - Attrs([Attr("address","0x1178")]), Phis([]), -Defs([Def(Tid(1_373, "%0000055d"), Attrs([Attr("address","0x1178"), -Attr("insn","retq")]), Var("#12582882",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(1_377, "%00000561"), Attrs([Attr("address","0x1178"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_380, "%00000564"), - Attrs([Attr("address","0x1178"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582882",Imm(64))),))])), Blk(Tid(2_008, "%000007d8"), - Attrs([Attr("address","0x114D")]), Phis([]), -Defs([Def(Tid(2_020, "%000007e4"), Attrs([Attr("address","0x114D"), -Attr("insn","pushq %rbp")]), Var("#12582870",Imm(64)), Var("RBP",Imm(64))), -Def(Tid(2_024, "%000007e8"), Attrs([Attr("address","0x114D"), -Attr("insn","pushq %rbp")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_030, "%000007ee"), - Attrs([Attr("address","0x114D"), Attr("insn","pushq %rbp")]), +LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(802, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(809, "%00000329"), + Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(819, "%00000333"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(823, "%00000337"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#34",Imm(64))), Def(Tid(830, "%0000033e"), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(838, "%00000346"), + Attrs([Attr("address","0x8C8"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582870",Imm(64)),LittleEndian(),64)), -Def(Tid(2_054, "%00000806"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("#12582869",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64)), -Def(Tid(2_058, "%0000080a"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("CF",Imm(1)), -LT(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),Int(0,64))), -Def(Tid(2_064, "%00000810"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("OF",Imm(1)), -HIGH(1,AND(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),XOR(Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64),Var("#12582869",Imm(64)))))), -Def(Tid(2_069, "%00000815"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(Var("#12582869",Imm(64)),Load(Var("mem",Mem(64,8)),Int(16352,64),LittleEndian(),64))))), -Def(Tid(2_074, "%0000081a"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582869",Imm(64)),Int(4,64)),Var("#12582869",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_078, "%0000081e"), Attrs([Attr("address","0x114E"), -Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582869",Imm(64)))), Def(Tid(2_082, "%00000822"), - Attrs([Attr("address","0x114E"), Attr("insn","cmpq $0x0, 0x2e8a(%rip)")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582869",Imm(64)))), -Def(Tid(2_090, "%0000082a"), Attrs([Attr("address","0x1156"), -Attr("insn","movq %rsp, %rbp")]), Var("RBP",Imm(64)), Var("RSP",Imm(64)))]), -Jmps([Goto(Tid(2_097, "%00000831"), Attrs([Attr("address","0x1159"), -Attr("insn","je 0xc")]), Var("ZF",Imm(1)), Direct(Tid(2_094, "%0000082e"))), -Goto(Tid(2_895, "%00000b4f"), Attrs([]), Int(1,1), -Direct(Tid(2_167, "%00000877")))])), Blk(Tid(2_167, "%00000877"), - Attrs([Attr("address","0x115B")]), Phis([]), -Defs([Def(Tid(2_173, "%0000087d"), Attrs([Attr("address","0x115B"), -Attr("insn","movq 0x2ed6(%rip), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16440,64),LittleEndian(),64)), -Def(Tid(2_185, "%00000889"), Attrs([Attr("address","0x1162"), -Attr("insn","callq -0xd7")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_190, "%0000088e"), - Attrs([Attr("address","0x1162"), Attr("insn","callq -0xd7")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4455,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_192, "%00000890"), Attrs([Attr("address","0x1162"), -Attr("insn","callq -0xd7")]), Int(1,1), -(Direct(Tid(2_892, "@__cxa_finalize")),Direct(Tid(2_094, "%0000082e"))))])), -Blk(Tid(2_094, "%0000082e"), Attrs([Attr("address","0x1167")]), Phis([]), -Defs([Def(Tid(2_109, "%0000083d"), Attrs([Attr("address","0x1167"), -Attr("insn","callq -0x9c")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_114, "%00000842"), - Attrs([Attr("address","0x1167"), Attr("insn","callq -0x9c")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4460,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_116, "%00000844"), Attrs([Attr("address","0x1167"), -Attr("insn","callq -0x9c")]), Int(1,1), -(Direct(Tid(2_901, "@deregister_tm_clones")),Direct(Tid(2_118, "%00000846"))))])), -Blk(Tid(2_118, "%00000846"), Attrs([Attr("address","0x116C")]), Phis([]), -Defs([Def(Tid(2_124, "%0000084c"), Attrs([Attr("address","0x116C"), -Attr("insn","movb $0x1, 0x2edd(%rip)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Int(16464,64),Int(1,8),LittleEndian(),8)), -Def(Tid(2_136, "%00000858"), Attrs([Attr("address","0x1173"), -Attr("insn","popq %rbp")]), Var("RBP",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(2_140, "%0000085c"), Attrs([Attr("address","0x1173"), -Attr("insn","popq %rbp")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_153, "%00000869"), - Attrs([Attr("address","0x1174"), Attr("insn","retq")]), - Var("#12582867",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(2_157, "%0000086d"), Attrs([Attr("address","0x1174"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(2_160, "%00000870"), - Attrs([Attr("address","0x1174"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582867",Imm(64))),))]))])), Sub(Tid(2_896, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1244")]), - "_fini", Args([Arg(Tid(2_919, "%00000b67"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(844, "%0000034c"), Attrs([Attr("address","0x8CC"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(853, "%00000355"), Attrs([Attr("address","0x8D0"), +Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), +Def(Tid(865, "%00000361"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(859, "%0000035b"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(857, "%00000359"))), Goto(Tid(2_351, "%0000092f"), Attrs([]), + Int(1,1), Direct(Tid(1_257, "%000004e9")))])), Blk(Tid(1_257, "%000004e9"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8D8"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_269, "%000004f5"), 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)), +Def(Tid(1_281, "%00000501"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_275, "%000004fb"), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), + Var("#67",Imm(1)), Direct(Tid(1_273, "%000004f9"))), +Goto(Tid(2_352, "%00000930"), Attrs([]), Int(1,1), +Direct(Tid(1_305, "%00000519")))])), Blk(Tid(1_305, "%00000519"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x8E4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_317, "%00000525"), 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_322, "%0000052a"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Int(1,1), +(Direct(Tid(2_290, "@__cxa_finalize")),Direct(Tid(1_273, "%000004f9"))))])), +Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_288, "%00000508"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_304, "@deregister_tm_clones")),Direct(Tid(1_290, "%0000050a"))))])), +Blk(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_295, "%0000050f"), Attrs([Attr("address","0x8F4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_303, "%00000517"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_353, "%00000931"), Attrs([]), Int(1,1), +Direct(Tid(857, "%00000359")))])), Blk(Tid(857, "%00000359"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(873, "%00000369"), + 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(883, "%00000373"), 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(887, "%00000377"), 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(890, "%0000037a"), 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(895, "%0000037f"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_295, "@__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_364, "%0000093c"), + 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_365, "%0000093d"), 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_366, "%0000093e"), 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_367, "%0000093f"), 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_368, "%00000940"), 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(614, "@__libc_start_main"), + Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_726, "%000006be"), 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_733, "%000006c5"), 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_738, "%000006ca"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_296, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9C4")]), + "_fini", Args([Arg(Tid(2_369, "%00000941"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("_fini_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(21, "@_fini"), - Attrs([Attr("address","0x1244")]), Phis([]), Defs([Def(Tid(56, "%00000038"), - Attrs([Attr("address","0x1244"), Attr("insn","subq $0x8, %rsp")]), - Var("#12582911",Imm(64)), Var("RSP",Imm(64))), Def(Tid(60, "%0000003c"), - Attrs([Attr("address","0x1244"), Attr("insn","subq $0x8, %rsp")]), - Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(8,64))), -Def(Tid(64, "%00000040"), Attrs([Attr("address","0x1244"), -Attr("insn","subq $0x8, %rsp")]), Var("CF",Imm(1)), -LT(Var("#12582911",Imm(64)),Int(8,64))), Def(Tid(70, "%00000046"), - Attrs([Attr("address","0x1244"), Attr("insn","subq $0x8, %rsp")]), - Var("OF",Imm(1)), -HIGH(1,AND(XOR(Var("#12582911",Imm(64)),Int(8,64)),XOR(Var("#12582911",Imm(64)),Var("RSP",Imm(64)))))), -Def(Tid(75, "%0000004b"), Attrs([Attr("address","0x1244"), -Attr("insn","subq $0x8, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582911",Imm(64))),Int(8,64))))), -Def(Tid(80, "%00000050"), Attrs([Attr("address","0x1244"), -Attr("insn","subq $0x8, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(84, "%00000054"), Attrs([Attr("address","0x1244"), -Attr("insn","subq $0x8, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(88, "%00000058"), - Attrs([Attr("address","0x1244"), Attr("insn","subq $0x8, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(117, "%00000075"), Attrs([Attr("address","0x1248"), -Attr("insn","addq $0x8, %rsp")]), Var("#12582908",Imm(64)), -Var("RSP",Imm(64))), Def(Tid(121, "%00000079"), - Attrs([Attr("address","0x1248"), Attr("insn","addq $0x8, %rsp")]), - Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(8,64))), -Def(Tid(126, "%0000007e"), Attrs([Attr("address","0x1248"), -Attr("insn","addq $0x8, %rsp")]), Var("CF",Imm(1)), -LT(Var("RSP",Imm(64)),Var("#12582908",Imm(64)))), Def(Tid(134, "%00000086"), - Attrs([Attr("address","0x1248"), Attr("insn","addq $0x8, %rsp")]), - Var("OF",Imm(1)), -AND(EQ(HIGH(1,Var("#12582908",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582908",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582908",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), -Def(Tid(139, "%0000008b"), Attrs([Attr("address","0x1248"), -Attr("insn","addq $0x8, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582908",Imm(64))),Int(8,64))))), -Def(Tid(144, "%00000090"), Attrs([Attr("address","0x1248"), -Attr("insn","addq $0x8, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(148, "%00000094"), Attrs([Attr("address","0x1248"), -Attr("insn","addq $0x8, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(152, "%00000098"), - Attrs([Attr("address","0x1248"), Attr("insn","addq $0x8, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(165, "%000000a5"), Attrs([Attr("address","0x124C"), -Attr("insn","retq")]), Var("#12582905",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(169, "%000000a9"), Attrs([Attr("address","0x124C"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(172, "%000000ac"), - Attrs([Attr("address","0x124C"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582905",Imm(64))),))]))])), Sub(Tid(2_897, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1000")]), - "_init", Args([Arg(Tid(2_920, "%00000b68"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(32, "@_fini"), + Attrs([Attr("address","0x9C4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9C8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9C8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9C8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9C8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9CC"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9D0"), +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(76, "%0000004c"), Attrs([Attr("address","0x9D0"), +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(79, "%0000004f"), Attrs([Attr("address","0x9D0"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0x9D4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_297, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), + "_init", Args([Arg(Tid(2_370, "%00000942"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("_init_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(2_652, "@_init"), - Attrs([Attr("address","0x1000")]), Phis([]), -Defs([Def(Tid(2_676, "%00000a74"), Attrs([Attr("address","0x1000"), -Attr("insn","subq $0x8, %rsp")]), Var("#12582855",Imm(64)), -Var("RSP",Imm(64))), Def(Tid(2_680, "%00000a78"), - Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), - Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(8,64))), -Def(Tid(2_684, "%00000a7c"), Attrs([Attr("address","0x1000"), -Attr("insn","subq $0x8, %rsp")]), Var("CF",Imm(1)), -LT(Var("#12582855",Imm(64)),Int(8,64))), Def(Tid(2_690, "%00000a82"), - Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), - Var("OF",Imm(1)), -HIGH(1,AND(XOR(Var("#12582855",Imm(64)),Int(8,64)),XOR(Var("#12582855",Imm(64)),Var("RSP",Imm(64)))))), -Def(Tid(2_695, "%00000a87"), Attrs([Attr("address","0x1000"), -Attr("insn","subq $0x8, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582855",Imm(64))),Int(8,64))))), -Def(Tid(2_700, "%00000a8c"), Attrs([Attr("address","0x1000"), -Attr("insn","subq $0x8, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_704, "%00000a90"), Attrs([Attr("address","0x1000"), -Attr("insn","subq $0x8, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(2_708, "%00000a94"), - Attrs([Attr("address","0x1000"), Attr("insn","subq $0x8, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(2_716, "%00000a9c"), Attrs([Attr("address","0x1004"), -Attr("insn","movq 0x2fc5(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16336,64),LittleEndian(),64)), -Def(Tid(2_734, "%00000aae"), Attrs([Attr("address","0x100B"), -Attr("insn","testq %rax, %rax")]), Var("#12582852",Imm(64)), -Var("RAX",Imm(64))), Def(Tid(2_737, "%00000ab1"), - Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), - Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_740, "%00000ab4"), - Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), - Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_743, "%00000ab7"), - Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), - Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_748, "%00000abc"), - Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), - Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582852",Imm(64)),Int(4,64)),Var("#12582852",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_752, "%00000ac0"), Attrs([Attr("address","0x100B"), -Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582852",Imm(64)))), Def(Tid(2_756, "%00000ac4"), - Attrs([Attr("address","0x100B"), Attr("insn","testq %rax, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582852",Imm(64))))]), -Jmps([Goto(Tid(2_763, "%00000acb"), Attrs([Attr("address","0x100E"), -Attr("insn","je 0x2")]), Var("ZF",Imm(1)), Direct(Tid(2_760, "%00000ac8"))), -Goto(Tid(2_898, "%00000b52"), Attrs([]), Int(1,1), -Direct(Tid(2_850, "%00000b22")))])), Blk(Tid(2_850, "%00000b22"), - Attrs([Attr("address","0x1010")]), Phis([]), -Defs([Def(Tid(2_862, "%00000b2e"), Attrs([Attr("address","0x1010"), -Attr("insn","callq *%rax")]), Var("#12582846",Imm(64)), Var("RAX",Imm(64))), -Def(Tid(2_866, "%00000b32"), Attrs([Attr("address","0x1010"), -Attr("insn","callq *%rax")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_871, "%00000b37"), - Attrs([Attr("address","0x1010"), Attr("insn","callq *%rax")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4114,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_874, "%00000b3a"), Attrs([Attr("address","0x1010"), -Attr("insn","callq *%rax")]), Int(1,1), -(Indirect(Var("#12582846",Imm(64))),Direct(Tid(2_760, "%00000ac8"))))])), -Blk(Tid(2_760, "%00000ac8"), Attrs([Attr("address","0x1012")]), Phis([]), -Defs([Def(Tid(2_793, "%00000ae9"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("#12582850",Imm(64)), -Var("RSP",Imm(64))), Def(Tid(2_797, "%00000aed"), - Attrs([Attr("address","0x1012"), Attr("insn","addq $0x8, %rsp")]), - Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(8,64))), -Def(Tid(2_802, "%00000af2"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("CF",Imm(1)), -LT(Var("RSP",Imm(64)),Var("#12582850",Imm(64)))), -Def(Tid(2_810, "%00000afa"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("OF",Imm(1)), -AND(EQ(HIGH(1,Var("#12582850",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582850",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582850",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), -Def(Tid(2_815, "%00000aff"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582850",Imm(64))),Int(8,64))))), -Def(Tid(2_820, "%00000b04"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_824, "%00000b08"), Attrs([Attr("address","0x1012"), -Attr("insn","addq $0x8, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(2_828, "%00000b0c"), - Attrs([Attr("address","0x1012"), Attr("insn","addq $0x8, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(2_841, "%00000b19"), Attrs([Attr("address","0x1016"), -Attr("insn","retq")]), Var("#12582847",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(2_845, "%00000b1d"), Attrs([Attr("address","0x1016"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(2_848, "%00000b20"), - Attrs([Attr("address","0x1016"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582847",Imm(64))),))]))])), Sub(Tid(2_899, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x10A0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_921, "%00000b69"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(2_061, "@_init"), + Attrs([Attr("address","0x728")]), Phis([]), +Defs([Def(Tid(2_070, "%00000816"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#98",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(2_075, "%0000081b"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#98",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(2_080, "%00000820"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#98",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(2_084, "%00000824"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#98",Imm(64))), Def(Tid(2_091, "%0000082b"), + Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_096, "%00000830"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(2_098, "%00000832"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), +(Direct(Tid(2_302, "@call_weak_fn")),Direct(Tid(2_100, "%00000834"))))])), +Blk(Tid(2_100, "%00000834"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(2_108, "%0000083c"), 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(2_112, "%00000840"), 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(2_115, "%00000843"), 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(2_120, "%00000848"), + Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_298, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("stub","()"), Attr("entry-point","()")]), "_start", + Args([Arg(Tid(2_371, "%00000943"), 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(540, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(546, "%00000222"), Attrs([Attr("address","0x804"), +Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), +Def(Tid(552, "%00000228"), Attrs([Attr("address","0x808"), +Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), +Def(Tid(560, "%00000230"), Attrs([Attr("address","0x80C"), +Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), +Def(Tid(568, "%00000238"), 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(575, "%0000023f"), Attrs([Attr("address","0x814"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(582, "%00000246"), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(588, "%0000024c"), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(596, "%00000254"), + 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(602, "%0000025a"), Attrs([Attr("address","0x824"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(608, "%00000260"), Attrs([Attr("address","0x828"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(613, "%00000265"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Int(1,1), +(Direct(Tid(2_295, "@__libc_start_main")),Direct(Tid(618, "%0000026a"))))])), +Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Int(1,1), +(Direct(Tid(2_301, "@abort")),Direct(Tid(2_354, "%00000932"))))])), +Blk(Tid(2_354, "%00000932"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_355, "%00000933"), Attrs([]), Int(1,1), +(Direct(Tid(2_302, "@call_weak_fn")),))]))])), Sub(Tid(2_301, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(622, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_851, "%0000073b"), 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_858, "%00000742"), 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_863, "%00000747"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_302, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_372, "%00000944"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("_start_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(593, "@_start"), - Attrs([Attr("address","0x10A0")]), Phis([]), -Defs([Def(Tid(603, "%0000025b"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("RBP",Imm(64)), Int(0,64)), -Def(Tid(606, "%0000025e"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(609, "%00000261"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("ZF",Imm(1)), Int(1,1)), -Def(Tid(612, "%00000264"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("PF",Imm(1)), Int(1,1)), -Def(Tid(615, "%00000267"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("OF",Imm(1)), Int(0,1)), -Def(Tid(618, "%0000026a"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("CF",Imm(1)), Int(0,1)), -Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x10A0"), -Attr("insn","xorl %ebp, %ebp")]), Var("SF",Imm(1)), Int(0,1)), -Def(Tid(629, "%00000275"), Attrs([Attr("address","0x10A2"), -Attr("insn","movq %rdx, %r9")]), Var("R9",Imm(64)), Var("RDX",Imm(64))), -Def(Tid(641, "%00000281"), Attrs([Attr("address","0x10A5"), -Attr("insn","popq %rsi")]), Var("RSI",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(645, "%00000285"), Attrs([Attr("address","0x10A5"), -Attr("insn","popq %rsi")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(653, "%0000028d"), - Attrs([Attr("address","0x10A6"), Attr("insn","movq %rsp, %rdx")]), - Var("RDX",Imm(64)), Var("RSP",Imm(64))), Def(Tid(671, "%0000029f"), - Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), - Var("RSP",Imm(64)), AND(Var("RSP",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x10A9"), -Attr("insn","andq $-0x10, %rsp")]), Var("OF",Imm(1)), Int(0,1)), -Def(Tid(677, "%000002a5"), Attrs([Attr("address","0x10A9"), -Attr("insn","andq $-0x10, %rsp")]), Var("CF",Imm(1)), Int(0,1)), -Def(Tid(680, "%000002a8"), Attrs([Attr("address","0x10A9"), -Attr("insn","andq $-0x10, %rsp")]), Var("AF",Imm(1)), -Unknown("bits",Imm(1))), Def(Tid(685, "%000002ad"), - Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), - Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(689, "%000002b1"), Attrs([Attr("address","0x10A9"), -Attr("insn","andq $-0x10, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(693, "%000002b5"), - Attrs([Attr("address","0x10A9"), Attr("insn","andq $-0x10, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x10AD"), -Attr("insn","pushq %rax")]), Var("#12582903",Imm(64)), Var("RAX",Imm(64))), -Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x10AD"), -Attr("insn","pushq %rax")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(717, "%000002cd"), - Attrs([Attr("address","0x10AD"), Attr("insn","pushq %rax")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582903",Imm(64)),LittleEndian(),64)), -Def(Tid(731, "%000002db"), Attrs([Attr("address","0x10AE"), -Attr("insn","pushq %rsp")]), Var("#12582902",Imm(64)), Var("RSP",Imm(64))), -Def(Tid(735, "%000002df"), Attrs([Attr("address","0x10AE"), -Attr("insn","pushq %rsp")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(741, "%000002e5"), - Attrs([Attr("address","0x10AE"), Attr("insn","pushq %rsp")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582902",Imm(64)),LittleEndian(),64)), -Def(Tid(753, "%000002f1"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("R8",Imm(64)), Int(0,64)), -Def(Tid(756, "%000002f4"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("ZF",Imm(1)), Int(1,1)), -Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("PF",Imm(1)), Int(1,1)), -Def(Tid(765, "%000002fd"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("OF",Imm(1)), Int(0,1)), -Def(Tid(768, "%00000300"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("CF",Imm(1)), Int(0,1)), -Def(Tid(771, "%00000303"), Attrs([Attr("address","0x10AF"), -Attr("insn","xorl %r8d, %r8d")]), Var("SF",Imm(1)), Int(0,1)), -Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("RCX",Imm(64)), Int(0,64)), -Def(Tid(786, "%00000312"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(789, "%00000315"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("ZF",Imm(1)), Int(1,1)), -Def(Tid(792, "%00000318"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("PF",Imm(1)), Int(1,1)), -Def(Tid(795, "%0000031b"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("OF",Imm(1)), Int(0,1)), -Def(Tid(798, "%0000031e"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("CF",Imm(1)), Int(0,1)), -Def(Tid(801, "%00000321"), Attrs([Attr("address","0x10B2"), -Attr("insn","xorl %ecx, %ecx")]), Var("SF",Imm(1)), Int(0,1)), -Def(Tid(807, "%00000327"), Attrs([Attr("address","0x10B4"), -Attr("insn","leaq 0xd5(%rip), %rdi")]), Var("RDI",Imm(64)), Int(4496,64)), -Def(Tid(821, "%00000335"), Attrs([Attr("address","0x10BB"), -Attr("insn","callq *0x2eff(%rip)")]), Var("#12582901",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16320,64),LittleEndian(),64)), -Def(Tid(825, "%00000339"), Attrs([Attr("address","0x10BB"), -Attr("insn","callq *0x2eff(%rip)")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(830, "%0000033e"), - Attrs([Attr("address","0x10BB"), Attr("insn","callq *0x2eff(%rip)")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4289,64),LittleEndian(),64))]), -Jmps([Call(Tid(833, "%00000341"), Attrs([Attr("address","0x10BB"), -Attr("insn","callq *0x2eff(%rip)")]), Int(1,1), -(Direct(Tid(831, "@__libc_start_main")),Direct(Tid(835, "%00000343"))))])), -Blk(Tid(835, "%00000343"), Attrs([Attr("address","0x10C1")]), Phis([]), -Defs([]), Jmps([Call(Tid(838, "%00000346"), Attrs([Attr("address","0x10C1"), -Attr("insn","hlt")]), Int(1,1), -(Direct(Tid(836, "@intrinsic:hlt")),Direct(Tid(840, "%00000348"))))])), -Blk(Tid(840, "%00000348"), Attrs([Attr("address","0x10C2")]), Phis([]), -Defs([]), Jmps([Call(Tid(2_900, "%00000b54"), Attrs([]), Int(1,1), -(Direct(Tid(2_901, "@deregister_tm_clones")),))]))])), -Sub(Tid(2_901, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x10D0")]), - "deregister_tm_clones", Args([Arg(Tid(2_922, "%00000b6a"), +Attr("c.type","signed")]), Var("call_weak_fn_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(626, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(630, "%00000276"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(638, "%0000027e"), + 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)), +Def(Tid(650, "%0000028a"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(644, "%00000284"), + Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(642, "%00000282"))), +Goto(Tid(2_356, "%00000934"), Attrs([]), Int(1,1), +Direct(Tid(1_405, "%0000057d")))])), Blk(Tid(642, "%00000282"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(655, "%0000028f"), Attrs([Attr("address","0x844"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_405, "%0000057d"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_408, "%00000580"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0x80")]), Int(1,1), +Direct(Tid(1_406, "@__gmon_start__")))])), Blk(Tid(1_406, "@__gmon_start__"), + Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_818, "%0000071a"), Attrs([Attr("address","0x7C0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_826, "%00000722"), 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_833, "%00000729"), 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_838, "%0000072e"), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_304, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_373, "%00000945"), 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("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(850, "@deregister_tm_clones"), - Attrs([Attr("address","0x10D0")]), Phis([]), -Defs([Def(Tid(854, "%00000356"), Attrs([Attr("address","0x10D0"), -Attr("insn","leaq 0x2f79(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16464,64)), -Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x10D7"), -Attr("insn","leaq 0x2f72(%rip), %rax")]), Var("RAX",Imm(64)), Int(16464,64)), -Def(Tid(889, "%00000379"), Attrs([Attr("address","0x10DE"), -Attr("insn","cmpq %rdi, %rax")]), Var("#12582900",Imm(64)), -MINUS(Var("RAX",Imm(64)),Var("RDI",Imm(64)))), Def(Tid(894, "%0000037e"), - Attrs([Attr("address","0x10DE"), Attr("insn","cmpq %rdi, %rax")]), - Var("CF",Imm(1)), LT(Var("RAX",Imm(64)),Var("RDI",Imm(64)))), -Def(Tid(901, "%00000385"), Attrs([Attr("address","0x10DE"), -Attr("insn","cmpq %rdi, %rax")]), Var("OF",Imm(1)), -HIGH(1,AND(XOR(Var("RAX",Imm(64)),Var("RDI",Imm(64))),XOR(Var("RAX",Imm(64)),Var("#12582900",Imm(64)))))), -Def(Tid(907, "%0000038b"), Attrs([Attr("address","0x10DE"), -Attr("insn","cmpq %rdi, %rax")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("#12582900",Imm(64)),Var("RAX",Imm(64))),Var("RDI",Imm(64)))))), -Def(Tid(912, "%00000390"), Attrs([Attr("address","0x10DE"), -Attr("insn","cmpq %rdi, %rax")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582900",Imm(64)),Int(4,64)),Var("#12582900",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(916, "%00000394"), Attrs([Attr("address","0x10DE"), -Attr("insn","cmpq %rdi, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582900",Imm(64)))), Def(Tid(920, "%00000398"), - Attrs([Attr("address","0x10DE"), Attr("insn","cmpq %rdi, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582900",Imm(64))))]), -Jmps([Goto(Tid(927, "%0000039f"), Attrs([Attr("address","0x10E1"), -Attr("insn","je 0x15")]), Var("ZF",Imm(1)), Direct(Tid(924, "%0000039c"))), -Goto(Tid(2_902, "%00000b56"), Attrs([]), Int(1,1), -Direct(Tid(2_261, "%000008d5")))])), Blk(Tid(2_261, "%000008d5"), - Attrs([Attr("address","0x10E3")]), Phis([]), -Defs([Def(Tid(2_267, "%000008db"), Attrs([Attr("address","0x10E3"), -Attr("insn","movq 0x2ede(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16328,64),LittleEndian(),64)), -Def(Tid(2_285, "%000008ed"), Attrs([Attr("address","0x10EA"), -Attr("insn","testq %rax, %rax")]), Var("#12582864",Imm(64)), -Var("RAX",Imm(64))), Def(Tid(2_288, "%000008f0"), - Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), - Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_291, "%000008f3"), - Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), - Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_294, "%000008f6"), - Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), - Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_299, "%000008fb"), - Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), - Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582864",Imm(64)),Int(4,64)),Var("#12582864",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_303, "%000008ff"), Attrs([Attr("address","0x10EA"), -Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582864",Imm(64)))), Def(Tid(2_307, "%00000903"), - Attrs([Attr("address","0x10EA"), Attr("insn","testq %rax, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582864",Imm(64))))]), -Jmps([Goto(Tid(2_313, "%00000909"), Attrs([Attr("address","0x10ED"), -Attr("insn","je 0x9")]), Var("ZF",Imm(1)), Direct(Tid(924, "%0000039c"))), -Goto(Tid(2_903, "%00000b57"), Attrs([]), Int(1,1), -Direct(Tid(2_317, "%0000090d")))])), Blk(Tid(924, "%0000039c"), - Attrs([Attr("address","0x10F8")]), Phis([]), -Defs([Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x10F8"), -Attr("insn","retq")]), Var("#12582898",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(945, "%000003b1"), Attrs([Attr("address","0x10F8"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(948, "%000003b4"), - Attrs([Attr("address","0x10F8"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582898",Imm(64))),))])), Blk(Tid(2_317, "%0000090d"), - Attrs([Attr("address","0x10EF")]), Phis([]), Defs([]), -Jmps([Call(Tid(2_321, "%00000911"), Attrs([Attr("address","0x10EF"), -Attr("insn","jmpq *%rax")]), Int(1,1), -(Indirect(Var("RAX",Imm(64))),))]))])), Sub(Tid(2_904, "@frame_dummy"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1180")]), - "frame_dummy", Args([Arg(Tid(2_923, "%00000b6b"), +LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(661, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(665, "%00000299"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(672, "%000002a0"), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x858"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x85C"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(693, "%000002b5"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(700, "%000002bc"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(706, "%000002c2"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(714, "%000002ca"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(712, "%000002c8"))), Goto(Tid(2_357, "%00000935"), Attrs([]), + Int(1,1), Direct(Tid(1_366, "%00000556")))])), Blk(Tid(1_366, "%00000556"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_370, "%0000055a"), Attrs([Attr("address","0x868"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_378, "%00000562"), 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)), +Def(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_383, "%00000567"), + Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), + Var("#75",Imm(1)), Direct(Tid(712, "%000002c8"))), +Goto(Tid(2_358, "%00000936"), Attrs([]), Int(1,1), +Direct(Tid(1_392, "%00000570")))])), Blk(Tid(712, "%000002c8"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(725, "%000002d5"), Attrs([Attr("address","0x87C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_392, "%00000570"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_398, "%00000576"), Attrs([Attr("address","0x874"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x878"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_307, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_374, "%00000946"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("frame_dummy_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(1_387, "@frame_dummy"), - Attrs([Attr("address","0x1180")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_391, "%0000056f"), Attrs([Attr("address","0x1184"), -Attr("insn","jmp -0x89")]), Int(1,1), -(Direct(Tid(2_912, "@register_tm_clones")),))]))])), Sub(Tid(2_905, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x1030"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_924, "%00000b6c"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(901, "@frame_dummy"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(903, "%00000387"), Attrs([Attr("address","0x910"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_314, "@register_tm_clones")),))]))])), Sub(Tid(2_308, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_375, "%00000947"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), -Attr("c.type","void*")]), Var("free_ptr",Imm(64)), Var("RDI",Imm(64)), -Both())]), Blks([Blk(Tid(1_865, "@free"), Attrs([Attr("address","0x1030")]), - Phis([]), Defs([]), Jmps([Call(Tid(2_480, "%000009b0"), - Attrs([Attr("address","0x1030"), Attr("insn","jmpq *0x2fca(%rip)")]), - Int(1,1), -(Direct(Tid(2_478, "@free:external")),Direct(Tid(2_482, "%000009b2"))))])), -Blk(Tid(2_482, "%000009b2"), Attrs([Attr("address","0x1036")]), Phis([]), -Defs([Def(Tid(2_491, "%000009bb"), Attrs([Attr("address","0x1036"), -Attr("insn","pushq $0x0")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_496, "%000009c0"), - Attrs([Attr("address","0x1036"), Attr("insn","pushq $0x0")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(0,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_500, "%000009c4"), Attrs([Attr("address","0x103B"), -Attr("insn","jmp -0x20")]), Int(1,1), -(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), -Sub(Tid(2_906, "@free@plt-0x10"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x1020"), Attr("stub","()")]), "free@plt-0x10", - Args([Arg(Tid(2_925, "%00000b6d"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("free@plt-0x10_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(2_442, "@free@plt-0x10"), Attrs([Attr("address","0x1020")]), - Phis([]), Defs([Def(Tid(2_454, "%00000996"), - Attrs([Attr("address","0x1020"), Attr("insn","pushq 0x2fca(%rip)")]), - Var("#12582862",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16368,64),LittleEndian(),64)), -Def(Tid(2_458, "%0000099a"), Attrs([Attr("address","0x1020"), -Attr("insn","pushq 0x2fca(%rip)")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_464, "%000009a0"), - Attrs([Attr("address","0x1020"), Attr("insn","pushq 0x2fca(%rip)")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582862",Imm(64)),LittleEndian(),64))]), -Jmps([Call(Tid(2_470, "%000009a6"), Attrs([Attr("address","0x1026"), -Attr("insn","jmpq *0x2fcc(%rip)")]), Int(1,1), -(Indirect(Load(Var("mem",Mem(64,8)),Int(16376,64),LittleEndian(),64)),))]))])), -Sub(Tid(2_907, "@main"), +Attr("c.type","void*")]), Var("free_ptr",Imm(64)), Var("R0",Imm(64)), +Both())]), Blks([Blk(Tid(1_219, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_893, "%00000765"), Attrs([Attr("address","0x7F0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_901, "%0000076d"), 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_908, "%00000774"), 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_913, "%00000779"), + Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_309, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x1190")]), "main", Args([Arg(Tid(2_926, "%00000b6e"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_376, "%00000948"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("main_argc",Imm(32)), -LOW(32,Var("RDI",Imm(64))), In()), Arg(Tid(2_927, "%00000b6f"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_377, "%00000949"), Attrs([Attr("c.layout","**[char : 8]"), Attr("c.data","Top:u8 ptr ptr"), Attr("c.type"," const char**")]), Var("main_argv",Imm(64)), -Var("RSI",Imm(64)), Both()), Arg(Tid(2_928, "%00000b70"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_378, "%0000094a"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("main_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([Blk(Tid(1_398, "@main"), - Attrs([Attr("address","0x1190")]), Phis([]), -Defs([Def(Tid(1_410, "%00000582"), Attrs([Attr("address","0x1190"), -Attr("insn","pushq %rbp")]), Var("#12582881",Imm(64)), Var("RBP",Imm(64))), -Def(Tid(1_414, "%00000586"), Attrs([Attr("address","0x1190"), -Attr("insn","pushq %rbp")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_420, "%0000058c"), - Attrs([Attr("address","0x1190"), Attr("insn","pushq %rbp")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Var("#12582881",Imm(64)),LittleEndian(),64)), -Def(Tid(1_428, "%00000594"), Attrs([Attr("address","0x1191"), -Attr("insn","movq %rsp, %rbp")]), Var("RBP",Imm(64)), Var("RSP",Imm(64))), -Def(Tid(1_454, "%000005ae"), Attrs([Attr("address","0x1194"), -Attr("insn","subq $0x20, %rsp")]), Var("#12582880",Imm(64)), -Var("RSP",Imm(64))), Def(Tid(1_458, "%000005b2"), - Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), - Var("RSP",Imm(64)), MINUS(Var("RSP",Imm(64)),Int(32,64))), -Def(Tid(1_462, "%000005b6"), Attrs([Attr("address","0x1194"), -Attr("insn","subq $0x20, %rsp")]), Var("CF",Imm(1)), -LT(Var("#12582880",Imm(64)),Int(32,64))), Def(Tid(1_468, "%000005bc"), - Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), - Var("OF",Imm(1)), -HIGH(1,AND(XOR(Var("#12582880",Imm(64)),Int(32,64)),XOR(Var("#12582880",Imm(64)),Var("RSP",Imm(64)))))), -Def(Tid(1_473, "%000005c1"), Attrs([Attr("address","0x1194"), -Attr("insn","subq $0x20, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582880",Imm(64))),Int(32,64))))), -Def(Tid(1_478, "%000005c6"), Attrs([Attr("address","0x1194"), -Attr("insn","subq $0x20, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_482, "%000005ca"), Attrs([Attr("address","0x1194"), -Attr("insn","subq $0x20, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(1_486, "%000005ce"), - Attrs([Attr("address","0x1194"), Attr("insn","subq $0x20, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(1_496, "%000005d8"), Attrs([Attr("address","0x1198"), -Attr("insn","movq $0x0, -0x8(%rbp)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(1_506, "%000005e2"), Attrs([Attr("address","0x11A0"), -Attr("insn","movq $0x0, -0x10(%rbp)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(1_512, "%000005e8"), Attrs([Attr("address","0x11A8"), -Attr("insn","movl $0xb, %edi")]), Var("RDI",Imm(64)), Int(11,64)), -Def(Tid(1_524, "%000005f4"), Attrs([Attr("address","0x11AD"), -Attr("insn","callq -0x132")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_529, "%000005f9"), - Attrs([Attr("address","0x11AD"), Attr("insn","callq -0x132")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4530,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_531, "%000005fb"), Attrs([Attr("address","0x11AD"), -Attr("insn","callq -0x132")]), Int(1,1), -(Direct(Tid(2_908, "@malloc")),Direct(Tid(1_533, "%000005fd"))))])), -Blk(Tid(1_533, "%000005fd"), Attrs([Attr("address","0x11B2")]), Phis([]), -Defs([Def(Tid(1_541, "%00000605"), Attrs([Attr("address","0x11B2"), -Attr("insn","movq %rax, 0x2e9f(%rip)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Int(16472,64),Var("RAX",Imm(64)),LittleEndian(),64)), -Def(Tid(1_549, "%0000060d"), Attrs([Attr("address","0x11B9"), -Attr("insn","movq 0x2e98(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_561, "%00000619"), Attrs([Attr("address","0x11C0"), -Attr("insn","movq %rax, -0x20(%rbp)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551584,64)),Var("RAX",Imm(64)),LittleEndian(),64)), -Def(Tid(1_567, "%0000061f"), Attrs([Attr("address","0x11C4"), -Attr("insn","leaq 0x2e76(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16449,64)), -Def(Tid(1_579, "%0000062b"), Attrs([Attr("address","0x11CB"), -Attr("insn","callq -0x180")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_584, "%00000630"), - Attrs([Attr("address","0x11CB"), Attr("insn","callq -0x180")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4560,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_586, "%00000632"), Attrs([Attr("address","0x11CB"), -Attr("insn","callq -0x180")]), Int(1,1), -(Direct(Tid(2_915, "@strlen")),Direct(Tid(1_588, "%00000634"))))])), -Blk(Tid(1_588, "%00000634"), Attrs([Attr("address","0x11D0")]), Phis([]), -Defs([Def(Tid(1_596, "%0000063c"), Attrs([Attr("address","0x11D0"), -Attr("insn","movq -0x20(%rbp), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551584,64)),LittleEndian(),64)), -Def(Tid(1_604, "%00000644"), Attrs([Attr("address","0x11D4"), -Attr("insn","movq %rax, %rdx")]), Var("RDX",Imm(64)), Var("RAX",Imm(64))), -Def(Tid(1_610, "%0000064a"), Attrs([Attr("address","0x11D7"), -Attr("insn","leaq 0x2e63(%rip), %rsi")]), Var("RSI",Imm(64)), Int(16449,64)), -Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x11DE"), -Attr("insn","callq -0x173")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_627, "%0000065b"), - Attrs([Attr("address","0x11DE"), Attr("insn","callq -0x173")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4579,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_629, "%0000065d"), Attrs([Attr("address","0x11DE"), -Attr("insn","callq -0x173")]), Int(1,1), -(Direct(Tid(2_909, "@memcpy")),Direct(Tid(1_631, "%0000065f"))))])), -Blk(Tid(1_631, "%0000065f"), Attrs([Attr("address","0x11E3")]), Phis([]), -Defs([Def(Tid(1_637, "%00000665"), Attrs([Attr("address","0x11E3"), -Attr("insn","movq 0x2e6e(%rip), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_649, "%00000671"), Attrs([Attr("address","0x11EA"), -Attr("insn","callq -0x1af")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_654, "%00000676"), - Attrs([Attr("address","0x11EA"), Attr("insn","callq -0x1af")]), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(905, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(910, "%0000038e"), + Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), + Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), +Def(Tid(918, "%00000396"), Attrs([Attr("address","0x918"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(923, "%0000039b"), + Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4591,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_656, "%00000678"), Attrs([Attr("address","0x11EA"), -Attr("insn","callq -0x1af")]), Int(1,1), -(Direct(Tid(2_911, "@puts")),Direct(Tid(1_658, "%0000067a"))))])), -Blk(Tid(1_658, "%0000067a"), Attrs([Attr("address","0x11EF")]), Phis([]), -Defs([Def(Tid(1_664, "%00000680"), Attrs([Attr("address","0x11EF"), -Attr("insn","movq 0x2e62(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_693, "%0000069d"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("#12582877",Imm(64)), -Var("RAX",Imm(64))), Def(Tid(1_697, "%000006a1"), - Attrs([Attr("address","0x11F6"), Attr("insn","addq $0x4, %rax")]), - Var("RAX",Imm(64)), PLUS(Var("RAX",Imm(64)),Int(4,64))), -Def(Tid(1_702, "%000006a6"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("CF",Imm(1)), -LT(Var("RAX",Imm(64)),Var("#12582877",Imm(64)))), -Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("OF",Imm(1)), -AND(EQ(HIGH(1,Var("#12582877",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582877",Imm(64))),HIGH(1,Var("RAX",Imm(64)))),NOT(AND(HIGH(1,Var("#12582877",Imm(64))),HIGH(1,Var("RAX",Imm(64)))))))), -Def(Tid(1_715, "%000006b3"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RAX",Imm(64)),Var("#12582877",Imm(64))),Int(4,64))))), -Def(Tid(1_720, "%000006b8"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RAX",Imm(64)),Int(4,64)),Var("RAX",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_724, "%000006bc"), Attrs([Attr("address","0x11F6"), -Attr("insn","addq $0x4, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("RAX",Imm(64)))), Def(Tid(1_728, "%000006c0"), - Attrs([Attr("address","0x11F6"), Attr("insn","addq $0x4, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RAX",Imm(64)))), -Def(Tid(1_740, "%000006cc"), Attrs([Attr("address","0x11FA"), -Attr("insn","movq %rax, -0x8(%rbp)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551608,64)),Var("RAX",Imm(64)),LittleEndian(),64)), -Def(Tid(1_750, "%000006d6"), Attrs([Attr("address","0x11FE"), -Attr("insn","movq -0x8(%rbp), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), -Def(Tid(1_760, "%000006e0"), Attrs([Attr("address","0x1202"), -Attr("insn","movb $0x0, (%rax)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RAX",Imm(64)),Int(0,8),LittleEndian(),8)), -Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x1205"), -Attr("insn","movq 0x2e4c(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_780, "%000006f4"), Attrs([Attr("address","0x120C"), -Attr("insn","movq %rax, -0x18(%rbp)")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551592,64)),Var("RAX",Imm(64)),LittleEndian(),64)), -Def(Tid(1_788, "%000006fc"), Attrs([Attr("address","0x1210"), -Attr("insn","movq 0x2e41(%rip), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_799, "%00000707"), Attrs([Attr("address","0x1217"), -Attr("insn","callq -0x1cc")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_804, "%0000070c"), - Attrs([Attr("address","0x1217"), Attr("insn","callq -0x1cc")]), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x918"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x91C"), +Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(943, "%000003af"), + Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4636,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_806, "%0000070e"), Attrs([Attr("address","0x1217"), -Attr("insn","callq -0x1cc")]), Int(1,1), -(Direct(Tid(2_915, "@strlen")),Direct(Tid(1_808, "%00000710"))))])), -Blk(Tid(1_808, "%00000710"), Attrs([Attr("address","0x121C")]), Phis([]), -Defs([Def(Tid(1_816, "%00000718"), Attrs([Attr("address","0x121C"), -Attr("insn","movq -0x18(%rbp), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("RBP",Imm(64)),Int(18446744073709551592,64)),LittleEndian(),64)), -Def(Tid(1_824, "%00000720"), Attrs([Attr("address","0x1220"), -Attr("insn","movq %rax, %rdx")]), Var("RDX",Imm(64)), Var("RAX",Imm(64))), -Def(Tid(1_830, "%00000726"), Attrs([Attr("address","0x1223"), -Attr("insn","movl $0x1, %esi")]), Var("RSI",Imm(64)), Int(1,64)), -Def(Tid(1_842, "%00000732"), Attrs([Attr("address","0x1228"), -Attr("insn","callq -0x1cd")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_847, "%00000737"), - Attrs([Attr("address","0x1228"), Attr("insn","callq -0x1cd")]), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(951, "%000003b7"), Attrs([Attr("address","0x924"), +Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x928"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(965, "%000003c5"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x18c")]), Int(1,1), +(Direct(Tid(2_310, "@malloc")),Direct(Tid(967, "%000003c7"))))])), +Blk(Tid(967, "%000003c7"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x930"), +Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x934"), +Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x938"), +Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x93C"), +Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x940"), +Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x944"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x948"), +Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(1_024, "%00000400"), + Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4653,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_849, "%00000739"), Attrs([Attr("address","0x1228"), -Attr("insn","callq -0x1cd")]), Int(1,1), -(Direct(Tid(2_910, "@memset")),Direct(Tid(1_851, "%0000073b"))))])), -Blk(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x122D")]), Phis([]), -Defs([Def(Tid(1_857, "%00000741"), Attrs([Attr("address","0x122D"), -Attr("insn","movq 0x2e24(%rip), %rdi")]), Var("RDI",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16472,64),LittleEndian(),64)), -Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x1234"), -Attr("insn","callq -0x209")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_874, "%00000752"), - Attrs([Attr("address","0x1234"), Attr("insn","callq -0x209")]), +Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), +Jmps([Call(Tid(1_032, "%00000408"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x1e0")]), Int(1,1), +(Direct(Tid(2_317, "@strlen")),Direct(Tid(1_034, "%0000040a"))))])), +Blk(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x954")]), Phis([]), +Defs([Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x954"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x958"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_056, "%00000420"), Attrs([Attr("address","0x95C"), +Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), +Jmps([Call(Tid(1_064, "%00000428"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x200")]), Int(1,1), +(Direct(Tid(2_311, "@memcpy")),Direct(Tid(1_066, "%0000042a"))))])), +Blk(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x964"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x968"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), +Jmps([Call(Tid(1_088, "%00000440"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x18c")]), Int(1,1), +(Direct(Tid(2_313, "@puts")),Direct(Tid(1_090, "%00000442"))))])), +Blk(Tid(1_090, "%00000442"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x970"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x974"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x978"), +Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_119, "%0000045f"), + Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4665,64),LittleEndian(),64))]), -Jmps([Call(Tid(1_876, "%00000754"), Attrs([Attr("address","0x1234"), -Attr("insn","callq -0x209")]), Int(1,1), -(Direct(Tid(2_905, "@free")),Direct(Tid(1_878, "%00000756"))))])), -Blk(Tid(1_878, "%00000756"), Attrs([Attr("address","0x1239")]), Phis([]), -Defs([Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x1239"), -Attr("insn","xorl %eax, %eax")]), Var("RAX",Imm(64)), Int(0,64)), -Def(Tid(1_891, "%00000763"), Attrs([Attr("address","0x1239"), -Attr("insn","xorl %eax, %eax")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x1239"), -Attr("insn","xorl %eax, %eax")]), Var("ZF",Imm(1)), Int(1,1)), -Def(Tid(1_897, "%00000769"), Attrs([Attr("address","0x1239"), -Attr("insn","xorl %eax, %eax")]), Var("PF",Imm(1)), Int(1,1)), -Def(Tid(1_900, "%0000076c"), Attrs([Attr("address","0x1239"), -Attr("insn","xorl %eax, %eax")]), Var("OF",Imm(1)), Int(0,1)), -Def(Tid(1_903, "%0000076f"), Attrs([Attr("address","0x1239"), -Attr("insn","xorl %eax, %eax")]), Var("CF",Imm(1)), Int(0,1)), -Def(Tid(1_906, "%00000772"), Attrs([Attr("address","0x1239"), -Attr("insn","xorl %eax, %eax")]), Var("SF",Imm(1)), Int(0,1)), -Def(Tid(1_935, "%0000078f"), Attrs([Attr("address","0x123B"), -Attr("insn","addq $0x20, %rsp")]), Var("#12582874",Imm(64)), -Var("RSP",Imm(64))), Def(Tid(1_939, "%00000793"), - Attrs([Attr("address","0x123B"), Attr("insn","addq $0x20, %rsp")]), - Var("RSP",Imm(64)), PLUS(Var("RSP",Imm(64)),Int(32,64))), -Def(Tid(1_944, "%00000798"), Attrs([Attr("address","0x123B"), -Attr("insn","addq $0x20, %rsp")]), Var("CF",Imm(1)), -LT(Var("RSP",Imm(64)),Var("#12582874",Imm(64)))), -Def(Tid(1_952, "%000007a0"), Attrs([Attr("address","0x123B"), -Attr("insn","addq $0x20, %rsp")]), Var("OF",Imm(1)), -AND(EQ(HIGH(1,Var("#12582874",Imm(64))),Int(0,1)),AND(OR(HIGH(1,Var("#12582874",Imm(64))),HIGH(1,Var("RSP",Imm(64)))),NOT(AND(HIGH(1,Var("#12582874",Imm(64))),HIGH(1,Var("RSP",Imm(64)))))))), -Def(Tid(1_957, "%000007a5"), Attrs([Attr("address","0x123B"), -Attr("insn","addq $0x20, %rsp")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSP",Imm(64)),Var("#12582874",Imm(64))),Int(32,64))))), -Def(Tid(1_962, "%000007aa"), Attrs([Attr("address","0x123B"), -Attr("insn","addq $0x20, %rsp")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSP",Imm(64)),Int(4,64)),Var("RSP",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_966, "%000007ae"), Attrs([Attr("address","0x123B"), -Attr("insn","addq $0x20, %rsp")]), Var("SF",Imm(1)), -HIGH(1,Var("RSP",Imm(64)))), Def(Tid(1_970, "%000007b2"), - Attrs([Attr("address","0x123B"), Attr("insn","addq $0x20, %rsp")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSP",Imm(64)))), -Def(Tid(1_982, "%000007be"), Attrs([Attr("address","0x123F"), -Attr("insn","popq %rbp")]), Var("RBP",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(1_986, "%000007c2"), Attrs([Attr("address","0x123F"), -Attr("insn","popq %rbp")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(1_999, "%000007cf"), - Attrs([Attr("address","0x1240"), Attr("insn","retq")]), - Var("#12582871",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(2_003, "%000007d3"), Attrs([Attr("address","0x1240"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(2_006, "%000007d6"), - Attrs([Attr("address","0x1240"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582871",Imm(64))),))]))])), Sub(Tid(2_908, "@malloc"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x980"), +Attr("insn","ldur x9, [x29, #-0x8]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), +Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x984"), +Attr("insn","strb wzr, [x9]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),BigEndian(),8)), +Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x988"), +Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x98C"), +Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x990"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x994"), +Attr("insn","bl #-0x224")]), Var("R30",Imm(64)), Int(2456,64))]), +Jmps([Call(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x994"), +Attr("insn","bl #-0x224")]), Int(1,1), +(Direct(Tid(2_317, "@strlen")),Direct(Tid(1_168, "%00000490"))))])), +Blk(Tid(1_168, "%00000490"), Attrs([Attr("address","0x998")]), Phis([]), +Defs([Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x998"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x99C"), +Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x9A0"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x9A4"), +Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2472,64))]), +Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x9A4"), +Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_312, "@memset")),Direct(Tid(1_199, "%000004af"))))])), +Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x9A8")]), Phis([]), +Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x9A8"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x9AC"), +Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x9B0"), +Attr("insn","bl #-0x1c0")]), Var("R30",Imm(64)), Int(2484,64))]), +Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x9B0"), +Attr("insn","bl #-0x1c0")]), Int(1,1), +(Direct(Tid(2_308, "@free")),Direct(Tid(1_223, "%000004c7"))))])), +Blk(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x9B4")]), Phis([]), +Defs([Def(Tid(1_230, "%000004ce"), Attrs([Attr("address","0x9B4"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), +Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x9B8"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), +Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x9B8"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), +Def(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x9BC"), +Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_255, "%000004e7"), + Attrs([Attr("address","0x9C0"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_310, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x1080"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_929, "%00000b71"), Attrs([Attr("alloc-size","()"), +Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_379, "%0000094b"), 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("RDI",Imm(64)), In()), Arg(Tid(2_930, "%00000b72"), +Var("R0",Imm(64)), In()), Arg(Tid(2_380, "%0000094c"), Attrs([Attr("warn-unused","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("malloc_result",Imm(64)), Var("RAX",Imm(64)), Out())]), -Blks([Blk(Tid(1_520, "@malloc"), Attrs([Attr("address","0x1080")]), Phis([]), -Defs([]), Jmps([Call(Tid(2_605, "%00000a2d"), - Attrs([Attr("address","0x1080"), Attr("insn","jmpq *0x2fa2(%rip)")]), - Int(1,1), -(Direct(Tid(2_603, "@malloc:external")),Direct(Tid(2_607, "%00000a2f"))))])), -Blk(Tid(2_607, "%00000a2f"), Attrs([Attr("address","0x1086")]), Phis([]), -Defs([Def(Tid(2_616, "%00000a38"), Attrs([Attr("address","0x1086"), -Attr("insn","pushq $0x5")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_621, "%00000a3d"), - Attrs([Attr("address","0x1086"), Attr("insn","pushq $0x5")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(5,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_625, "%00000a41"), Attrs([Attr("address","0x108B"), -Attr("insn","jmp -0x70")]), Int(1,1), -(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), Sub(Tid(2_909, "@memcpy"), + Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(963, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_776, "%000006f0"), 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_783, "%000006f7"), 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_788, "%000006fc"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_311, "@memcpy"), Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), -Attr("address","0x1070"), Attr("stub","()")]), "memcpy", - Args([Arg(Tid(2_931, "%00000b73"), Attrs([Attr("nonnull","()"), +Attr("address","0x760"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_381, "%0000094d"), Attrs([Attr("nonnull","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void restrict *")]), Var("memcpy_dst",Imm(64)), -Var("RDI",Imm(64)), Both()), Arg(Tid(2_932, "%00000b74"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_382, "%0000094e"), Attrs([Attr("nonnull","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void restrict *")]), - Var("memcpy_src",Imm(64)), Var("RSI",Imm(64)), Both()), -Arg(Tid(2_933, "%00000b75"), Attrs([Attr("c.layout","[unsigned long : 64]"), + Var("memcpy_src",Imm(64)), Var("R1",Imm(64)), Both()), +Arg(Tid(2_383, "%0000094f"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), - Var("memcpy_n",Imm(64)), Var("RDX",Imm(64)), In()), -Arg(Tid(2_934, "%00000b76"), Attrs([Attr("c.layout","*[ : 8]"), + Var("memcpy_n",Imm(64)), Var("R2",Imm(64)), In()), +Arg(Tid(2_384, "%00000950"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("RAX",Imm(64)), Out())]), -Blks([Blk(Tid(1_618, "@memcpy"), Attrs([Attr("address","0x1070")]), Phis([]), -Defs([]), Jmps([Call(Tid(2_580, "%00000a14"), - Attrs([Attr("address","0x1070"), Attr("insn","jmpq *0x2faa(%rip)")]), - Int(1,1), -(Direct(Tid(2_578, "@memcpy:external")),Direct(Tid(2_582, "%00000a16"))))])), -Blk(Tid(2_582, "%00000a16"), Attrs([Attr("address","0x1076")]), Phis([]), -Defs([Def(Tid(2_591, "%00000a1f"), Attrs([Attr("address","0x1076"), -Attr("insn","pushq $0x4")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_596, "%00000a24"), - Attrs([Attr("address","0x1076"), Attr("insn","pushq $0x4")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(4,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_600, "%00000a28"), Attrs([Attr("address","0x107B"), -Attr("insn","jmp -0x60")]), Int(1,1), -(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), Sub(Tid(2_910, "@memset"), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_062, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_668, "%00000684"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_676, "%0000068c"), 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_683, "%00000693"), Attrs([Attr("address","0x768"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_688, "%00000698"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_312, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x1060"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_935, "%00000b77"), Attrs([Attr("nonnull","()"), +Attr("address","0x7B0"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_385, "%00000951"), Attrs([Attr("nonnull","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), -Attr("c.type","void*")]), Var("memset_buf",Imm(64)), Var("RDI",Imm(64)), -Both()), Arg(Tid(2_936, "%00000b78"), +Attr("c.type","void*")]), Var("memset_buf",Imm(64)), Var("R0",Imm(64)), +Both()), Arg(Tid(2_386, "%00000952"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("memset_c",Imm(32)), -LOW(32,Var("RSI",Imm(64))), In()), Arg(Tid(2_937, "%00000b79"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_387, "%00000953"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), -Attr("c.type","unsigned long")]), Var("memset_n",Imm(64)), -Var("RDX",Imm(64)), In()), Arg(Tid(2_938, "%00000b7a"), - Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), -Attr("c.type","void*")]), Var("memset_result",Imm(64)), Var("RAX",Imm(64)), -Out())]), Blks([Blk(Tid(1_838, "@memset"), Attrs([Attr("address","0x1060")]), - Phis([]), Defs([]), Jmps([Call(Tid(2_555, "%000009fb"), - Attrs([Attr("address","0x1060"), Attr("insn","jmpq *0x2fb2(%rip)")]), - Int(1,1), -(Direct(Tid(2_553, "@memset:external")),Direct(Tid(2_557, "%000009fd"))))])), -Blk(Tid(2_557, "%000009fd"), Attrs([Attr("address","0x1066")]), Phis([]), -Defs([Def(Tid(2_566, "%00000a06"), Attrs([Attr("address","0x1066"), -Attr("insn","pushq $0x3")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_571, "%00000a0b"), - Attrs([Attr("address","0x1066"), Attr("insn","pushq $0x3")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(3,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_575, "%00000a0f"), Attrs([Attr("address","0x106B"), -Attr("insn","jmp -0x50")]), Int(1,1), -(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), Sub(Tid(2_911, "@puts"), +Attr("c.type","unsigned long")]), Var("memset_n",Imm(64)), Var("R2",Imm(64)), +In()), Arg(Tid(2_388, "%00000954"), 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_195, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_793, "%00000701"), Attrs([Attr("address","0x7B0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_801, "%00000709"), 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_808, "%00000710"), 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_813, "%00000715"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_313, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x1040"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_939, "%00000b7b"), Attrs([Attr("c.layout","*[char : 8]"), +Attr("address","0x7E0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_389, "%00000955"), Attrs([Attr("c.layout","*[char : 8]"), Attr("c.data","Top:u8 ptr"), Attr("c.type"," const char*")]), - Var("puts_s",Imm(64)), Var("RDI",Imm(64)), In()), -Arg(Tid(2_940, "%00000b7c"), Attrs([Attr("c.layout","[signed : 32]"), + Var("puts_s",Imm(64)), Var("R0",Imm(64)), In()), +Arg(Tid(2_390, "%00000956"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(1_645, "@puts"), Attrs([Attr("address","0x1040")]), Phis([]), -Defs([]), Jmps([Call(Tid(2_505, "%000009c9"), - Attrs([Attr("address","0x1040"), Attr("insn","jmpq *0x2fc2(%rip)")]), - Int(1,1), -(Direct(Tid(2_503, "@puts:external")),Direct(Tid(2_507, "%000009cb"))))])), -Blk(Tid(2_507, "%000009cb"), Attrs([Attr("address","0x1046")]), Phis([]), -Defs([Def(Tid(2_516, "%000009d4"), Attrs([Attr("address","0x1046"), -Attr("insn","pushq $0x1")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_521, "%000009d9"), - Attrs([Attr("address","0x1046"), Attr("insn","pushq $0x1")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(1,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_525, "%000009dd"), Attrs([Attr("address","0x104B"), -Attr("insn","jmp -0x30")]), Int(1,1), -(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), -Sub(Tid(2_912, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x1100")]), - "register_tm_clones", Args([Arg(Tid(2_941, "%00000b7d"), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_086, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_868, "%0000074c"), Attrs([Attr("address","0x7E0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_876, "%00000754"), 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_883, "%0000075b"), 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_888, "%00000760"), + Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_314, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_391, "%00000957"), 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("RAX",Imm(64))), Out())]), -Blks([Blk(Tid(955, "@register_tm_clones"), Attrs([Attr("address","0x1100")]), - Phis([]), Defs([Def(Tid(959, "%000003bf"), Attrs([Attr("address","0x1100"), -Attr("insn","leaq 0x2f49(%rip), %rdi")]), Var("RDI",Imm(64)), Int(16464,64)), -Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x1107"), -Attr("insn","leaq 0x2f42(%rip), %rsi")]), Var("RSI",Imm(64)), Int(16464,64)), -Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("#12582897",Imm(64)), -Var("RSI",Imm(64))), Def(Tid(1_001, "%000003e9"), - Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), - Var("#12582896",Imm(64)), Var("RDI",Imm(64))), Def(Tid(1_006, "%000003ee"), - Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), - Var("RSI",Imm(64)), MINUS(Var("RSI",Imm(64)),Var("RDI",Imm(64)))), -Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("CF",Imm(1)), -LT(Var("#12582897",Imm(64)),Var("#12582896",Imm(64)))), -Def(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("OF",Imm(1)), -HIGH(1,AND(XOR(Var("#12582897",Imm(64)),Var("#12582896",Imm(64))),XOR(Var("#12582897",Imm(64)),Var("RSI",Imm(64)))))), -Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSI",Imm(64)),Var("#12582897",Imm(64))),Var("#12582896",Imm(64)))))), -Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x110E"), -Attr("insn","subq %rdi, %rsi")]), Var("SF",Imm(1)), -HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_037, "%0000040d"), - Attrs([Attr("address","0x110E"), Attr("insn","subq %rdi, %rsi")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), -Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x1111"), -Attr("insn","movq %rsi, %rax")]), Var("RAX",Imm(64)), Var("RSI",Imm(64))), -Def(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("#12582894",Imm(64)), -Var("RSI",Imm(64))), Def(Tid(1_070, "%0000042e"), - Attrs([Attr("address","0x1114"), Attr("insn","shrq $0x3f, %rsi")]), - Var("RSI",Imm(64)), RSHIFT(Var("RSI",Imm(64)),Int(63,64))), -Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("CF",Imm(1)), -HIGH(1,LSHIFT(Var("#12582894",Imm(64)),Int(1,64)))), -Def(Tid(1_078, "%00000436"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("SF",Imm(1)), -HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_082, "%0000043a"), - Attrs([Attr("address","0x1114"), Attr("insn","shrq $0x3f, %rsi")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), -Def(Tid(1_087, "%0000043f"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_090, "%00000442"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x1114"), -Attr("insn","shrq $0x3f, %rsi")]), Var("OF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_114, "%0000045a"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("#12582892",Imm(64)), -Var("RAX",Imm(64))), Def(Tid(1_118, "%0000045e"), - Attrs([Attr("address","0x1118"), Attr("insn","sarq $0x3, %rax")]), - Var("RAX",Imm(64)), ARSHIFT(Var("RAX",Imm(64)),Int(3,64))), -Def(Tid(1_122, "%00000462"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("CF",Imm(1)), -HIGH(1,LSHIFT(Var("#12582892",Imm(64)),Int(61,64)))), -Def(Tid(1_126, "%00000466"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("RAX",Imm(64)))), Def(Tid(1_130, "%0000046a"), - Attrs([Attr("address","0x1118"), Attr("insn","sarq $0x3, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RAX",Imm(64)))), -Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RAX",Imm(64)),Int(4,64)),Var("RAX",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_141, "%00000475"), Attrs([Attr("address","0x1118"), -Attr("insn","sarq $0x3, %rax")]), Var("OF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_175, "%00000497"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("#12582890",Imm(64)), -Var("RSI",Imm(64))), Def(Tid(1_179, "%0000049b"), - Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), - Var("#12582889",Imm(64)), Var("RAX",Imm(64))), Def(Tid(1_184, "%000004a0"), - Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), - Var("RSI",Imm(64)), PLUS(Var("RSI",Imm(64)),Var("#12582889",Imm(64)))), -Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("CF",Imm(1)), -LT(Var("RSI",Imm(64)),Var("#12582890",Imm(64)))), -Def(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("OF",Imm(1)), -AND(EQ(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("#12582889",Imm(64)))),AND(OR(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("RSI",Imm(64)))),NOT(AND(HIGH(1,Var("#12582890",Imm(64))),HIGH(1,Var("RSI",Imm(64)))))))), -Def(Tid(1_204, "%000004b4"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("AF",Imm(1)), -EQ(Int(16,64),AND(Int(16,64),XOR(XOR(Var("RSI",Imm(64)),Var("#12582890",Imm(64))),Var("#12582889",Imm(64)))))), -Def(Tid(1_209, "%000004b9"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x111C"), -Attr("insn","addq %rax, %rsi")]), Var("SF",Imm(1)), -HIGH(1,Var("RSI",Imm(64)))), Def(Tid(1_217, "%000004c1"), - Attrs([Attr("address","0x111C"), Attr("insn","addq %rax, %rsi")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("RSI",Imm(64)))), -Def(Tid(1_238, "%000004d6"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("#12582887",Imm(64)), Var("RSI",Imm(64))), -Def(Tid(1_242, "%000004da"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("RSI",Imm(64)), -ARSHIFT(Var("RSI",Imm(64)),Int(1,64))), Def(Tid(1_246, "%000004de"), - Attrs([Attr("address","0x111F"), Attr("insn","sarq %rsi")]), - Var("CF",Imm(1)), HIGH(1,LSHIFT(Var("#12582887",Imm(64)),Int(63,64)))), -Def(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("SF",Imm(1)), HIGH(1,Var("RSI",Imm(64)))), -Def(Tid(1_254, "%000004e6"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("ZF",Imm(1)), -EQ(Int(0,64),Var("RSI",Imm(64)))), Def(Tid(1_259, "%000004eb"), - Attrs([Attr("address","0x111F"), Attr("insn","sarq %rsi")]), - Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("RSI",Imm(64)),Int(4,64)),Var("RSI",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("AF",Imm(1)), Unknown("bits",Imm(1))), -Def(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x111F"), -Attr("insn","sarq %rsi")]), Var("OF",Imm(1)), Int(0,1))]), -Jmps([Goto(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x1122"), -Attr("insn","je 0x14")]), Var("ZF",Imm(1)), Direct(Tid(1_269, "%000004f5"))), -Goto(Tid(2_913, "%00000b61"), Attrs([]), Int(1,1), -Direct(Tid(2_194, "%00000892")))])), Blk(Tid(2_194, "%00000892"), - Attrs([Attr("address","0x1124")]), Phis([]), -Defs([Def(Tid(2_200, "%00000898"), Attrs([Attr("address","0x1124"), -Attr("insn","movq 0x2ead(%rip), %rax")]), Var("RAX",Imm(64)), -Load(Var("mem",Mem(64,8)),Int(16344,64),LittleEndian(),64)), -Def(Tid(2_218, "%000008aa"), Attrs([Attr("address","0x112B"), -Attr("insn","testq %rax, %rax")]), Var("#12582866",Imm(64)), -Var("RAX",Imm(64))), Def(Tid(2_221, "%000008ad"), - Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), - Var("OF",Imm(1)), Int(0,1)), Def(Tid(2_224, "%000008b0"), - Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), - Var("CF",Imm(1)), Int(0,1)), Def(Tid(2_227, "%000008b3"), - Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), - Var("AF",Imm(1)), Unknown("bits",Imm(1))), Def(Tid(2_232, "%000008b8"), - Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), - Var("PF",Imm(1)), -NOT(LOW(1,Let(Var("$0",Imm(64)),XOR(RSHIFT(Var("#12582866",Imm(64)),Int(4,64)),Var("#12582866",Imm(64))),Let(Var("$1",Imm(64)),XOR(RSHIFT(Var("$0",Imm(64)),Int(2,64)),Var("$0",Imm(64))),XOR(RSHIFT(Var("$1",Imm(64)),Int(1,64)),Var("$1",Imm(64)))))))), -Def(Tid(2_236, "%000008bc"), Attrs([Attr("address","0x112B"), -Attr("insn","testq %rax, %rax")]), Var("SF",Imm(1)), -HIGH(1,Var("#12582866",Imm(64)))), Def(Tid(2_240, "%000008c0"), - Attrs([Attr("address","0x112B"), Attr("insn","testq %rax, %rax")]), - Var("ZF",Imm(1)), EQ(Int(0,64),Var("#12582866",Imm(64))))]), -Jmps([Goto(Tid(2_246, "%000008c6"), Attrs([Attr("address","0x112E"), -Attr("insn","je 0x8")]), Var("ZF",Imm(1)), Direct(Tid(1_269, "%000004f5"))), -Goto(Tid(2_914, "%00000b62"), Attrs([]), Int(1,1), -Direct(Tid(2_250, "%000008ca")))])), Blk(Tid(1_269, "%000004f5"), - Attrs([Attr("address","0x1138")]), Phis([]), -Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x1138"), -Attr("insn","retq")]), Var("#12582885",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),LittleEndian(),64)), -Def(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x1138"), -Attr("insn","retq")]), Var("RSP",Imm(64)), -PLUS(Var("RSP",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_293, "%0000050d"), - Attrs([Attr("address","0x1138"), Attr("insn","retq")]), Int(1,1), -(Indirect(Var("#12582885",Imm(64))),))])), Blk(Tid(2_250, "%000008ca"), - Attrs([Attr("address","0x1130")]), Phis([]), Defs([]), -Jmps([Call(Tid(2_254, "%000008ce"), Attrs([Attr("address","0x1130"), -Attr("insn","jmpq *%rax")]), Int(1,1), -(Indirect(Var("RAX",Imm(64))),))]))])), Sub(Tid(2_915, "@strlen"), +LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(727, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x880"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x884"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(744, "%000002e8"), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(751, "%000002ef"), + Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x890"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(766, "%000002fe"), + Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(774, "%00000306"), 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,64)))), +Def(Tid(781, "%0000030d"), Attrs([Attr("address","0x89C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(793, "%00000319"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(787, "%00000313"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(785, "%00000311"))), Goto(Tid(2_359, "%00000937"), Attrs([]), + Int(1,1), Direct(Tid(1_327, "%0000052f")))])), Blk(Tid(1_327, "%0000052f"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_331, "%00000533"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_339, "%0000053b"), 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)), +Def(Tid(1_350, "%00000546"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_344, "%00000540"), + Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), + Var("#70",Imm(1)), Direct(Tid(785, "%00000311"))), +Goto(Tid(2_360, "%00000938"), Attrs([]), Int(1,1), +Direct(Tid(1_353, "%00000549")))])), Blk(Tid(785, "%00000311"), + Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), +Jmps([Call(Tid(798, "%0000031e"), Attrs([Attr("address","0x8B8"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x8B0"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8B4"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_317, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x1050"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_942, "%00000b7e"), Attrs([Attr("nonnull","()"), +Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_392, "%00000958"), 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("RDI",Imm(64)), -In()), Arg(Tid(2_943, "%00000b7f"), +Attr("c.type"," const char*")]), Var("strlen_s",Imm(64)), Var("R0",Imm(64)), +In()), Arg(Tid(2_393, "%00000959"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("RAX",Imm(64)), Out())]), Blks([Blk(Tid(1_575, "@strlen"), - Attrs([Attr("address","0x1050")]), Phis([]), Defs([]), -Jmps([Call(Tid(2_530, "%000009e2"), Attrs([Attr("address","0x1050"), -Attr("insn","jmpq *0x2fba(%rip)")]), Int(1,1), -(Direct(Tid(2_528, "@strlen:external")),Direct(Tid(2_532, "%000009e4"))))])), -Blk(Tid(2_532, "%000009e4"), Attrs([Attr("address","0x1056")]), Phis([]), -Defs([Def(Tid(2_541, "%000009ed"), Attrs([Attr("address","0x1056"), -Attr("insn","pushq $0x2")]), Var("RSP",Imm(64)), -MINUS(Var("RSP",Imm(64)),Int(8,64))), Def(Tid(2_546, "%000009f2"), - Attrs([Attr("address","0x1056"), Attr("insn","pushq $0x2")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("RSP",Imm(64)),Int(2,64),LittleEndian(),64))]), -Jmps([Call(Tid(2_550, "%000009f6"), Attrs([Attr("address","0x105B"), -Attr("insn","jmp -0x40")]), Int(1,1), -(Direct(Tid(2_906, "@free@plt-0x10")),))]))])), -Sub(Tid(831, "@__libc_start_main"), - Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), -Attr("synthetic","()"), Attr("stub","()")]), "__libc_start_main", - Args([Arg(Tid(2_944, "%00000b80"), - 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("RDI",Imm(64)), In()), -Arg(Tid(2_945, "%00000b81"), 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("RSI",Imm(64))), In()), -Arg(Tid(2_946, "%00000b82"), 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("RDX",Imm(64)), Both()), -Arg(Tid(2_947, "%00000b83"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("__libc_start_main_auxv",Imm(64)), Var("RCX",Imm(64)), Both()), -Arg(Tid(2_948, "%00000b84"), 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("RAX",Imm(64))), -Out())]), Blks([])), Sub(Tid(836, "@intrinsic:hlt"), - Attrs([Attr("intrinsic","()"), Attr("synthetic","()"), Attr("stub","()")]), - "intrinsic:hlt", Args([]), Blks([])), Sub(Tid(2_478, "@free:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "free:external", Args([Arg(Tid(2_949, "%00000b85"), - Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("free:external_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), -Sub(Tid(2_503, "@puts:external"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("synthetic","()"), Attr("stub","()")]), "puts:external", - Args([Arg(Tid(2_950, "%00000b86"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts:external_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), Out())]), -Blks([])), Sub(Tid(2_528, "@strlen:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "strlen:external", Args([Arg(Tid(2_951, "%00000b87"), - Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("strlen:external_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), -Sub(Tid(2_553, "@memset:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "memset:external", Args([Arg(Tid(2_952, "%00000b88"), - Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("memset:external_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), -Sub(Tid(2_578, "@memcpy:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "memcpy:external", Args([Arg(Tid(2_953, "%00000b89"), - Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("memcpy:external_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), -Sub(Tid(2_603, "@malloc:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "malloc:external", Args([Arg(Tid(2_954, "%00000b8a"), - Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), -Attr("c.type","signed")]), Var("malloc:external_result",Imm(32)), -LOW(32,Var("RAX",Imm(64))), Out())]), Blks([])), -Sub(Tid(2_887, "@__cxa_finalize:external"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("synthetic","()"), -Attr("stub","()")]), "__cxa_finalize:external", - Args([Arg(Tid(2_955, "%00000b8b"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("__cxa_finalize:external_result",Imm(32)), LOW(32,Var("RAX",Imm(64))), -Out())]), -Blks([]))]))) \ No newline at end of file +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_030, "@strlen"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_693, "%0000069d"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_701, "%000006a5"), 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_708, "%000006ac"), 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_713, "%000006b1"), + 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/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir index 851be613c..ed93b38a3 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir @@ -1,557 +1,361 @@ -00000b64: program -00000b4c: sub __cxa_finalize(__cxa_finalize_result) -00000b65: __cxa_finalize_result :: out u32 = low:32[RAX] - -00000885: -00000b49: call @__cxa_finalize:external with noreturn - -00000b4d: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000b66: __do_global_dtors_aux_result :: out u32 = low:32[RAX] - -00000514: -0000052c: #12582884 := mem[0x4050] -00000530: CF := mem[0x4050] < 0 -00000536: OF := high:1[mem[0x4050] & (mem[0x4050] ^ #12582884)] -0000053b: AF := 0x10 = (0x10 & (#12582884 ^ mem[0x4050])) -00000540: PF := - ~low:1[let $0 = #12582884 >> 4 ^ #12582884 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000544: SF := high:1[#12582884] -00000548: ZF := 0 = #12582884 -0000054f: when ~ZF goto %0000054c -00000b4e: goto %000007d8 - -0000054c: -0000055d: #12582882 := mem[RSP, el]:u64 -00000561: RSP := RSP + 8 -00000564: call #12582882 with noreturn - -000007d8: -000007e4: #12582870 := RBP -000007e8: RSP := RSP - 8 -000007ee: mem := mem with [RSP, el]:u64 <- #12582870 -00000806: #12582869 := mem[0x3FE0, el]:u64 -0000080a: CF := mem[0x3FE0, el]:u64 < 0 -00000810: OF := high:1[mem[0x3FE0, el]:u64 & - (mem[0x3FE0, el]:u64 ^ #12582869)] -00000815: AF := 0x10 = (0x10 & (#12582869 ^ mem[0x3FE0, el]:u64)) -0000081a: PF := - ~low:1[let $0 = #12582869 >> 4 ^ #12582869 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -0000081e: SF := high:1[#12582869] -00000822: ZF := 0 = #12582869 -0000082a: RBP := RSP -00000831: when ZF goto %0000082e -00000b4f: goto %00000877 - -00000877: -0000087d: RDI := mem[0x4038, el]:u64 -00000889: RSP := RSP - 8 -0000088e: mem := mem with [RSP, el]:u64 <- 0x1167 -00000890: call @__cxa_finalize with return %0000082e - -0000082e: -0000083d: RSP := RSP - 8 -00000842: mem := mem with [RSP, el]:u64 <- 0x116C -00000844: call @deregister_tm_clones with return %00000846 - -00000846: -0000084c: mem := mem with [0x4050] <- 1 -00000858: RBP := mem[RSP, el]:u64 -0000085c: RSP := RSP + 8 -00000869: #12582867 := mem[RSP, el]:u64 -0000086d: RSP := RSP + 8 -00000870: call #12582867 with noreturn - -00000b50: sub _fini(_fini_result) -00000b67: _fini_result :: out u32 = low:32[RAX] - -00000015: -00000038: #12582911 := RSP -0000003c: RSP := RSP - 8 -00000040: CF := #12582911 < 8 -00000046: OF := high:1[(#12582911 ^ 8) & (#12582911 ^ RSP)] -0000004b: AF := 0x10 = (0x10 & (RSP ^ #12582911 ^ 8)) -00000050: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000054: SF := high:1[RSP] -00000058: ZF := 0 = RSP -00000075: #12582908 := RSP -00000079: RSP := RSP + 8 -0000007e: CF := RSP < #12582908 -00000086: OF := ~high:1[#12582908] & (high:1[#12582908] | high:1[RSP]) & - ~(high:1[#12582908] & high:1[RSP]) -0000008b: AF := 0x10 = (0x10 & (RSP ^ #12582908 ^ 8)) -00000090: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000094: SF := high:1[RSP] -00000098: ZF := 0 = RSP -000000a5: #12582905 := mem[RSP, el]:u64 -000000a9: RSP := RSP + 8 -000000ac: call #12582905 with noreturn - -00000b51: sub _init(_init_result) -00000b68: _init_result :: out u32 = low:32[RAX] - -00000a5c: -00000a74: #12582855 := RSP -00000a78: RSP := RSP - 8 -00000a7c: CF := #12582855 < 8 -00000a82: OF := high:1[(#12582855 ^ 8) & (#12582855 ^ RSP)] -00000a87: AF := 0x10 = (0x10 & (RSP ^ #12582855 ^ 8)) -00000a8c: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000a90: SF := high:1[RSP] -00000a94: ZF := 0 = RSP -00000a9c: RAX := mem[0x3FD0, el]:u64 -00000aae: #12582852 := RAX -00000ab1: OF := 0 -00000ab4: CF := 0 -00000ab7: AF := unknown[bits]:u1 -00000abc: PF := - ~low:1[let $0 = #12582852 >> 4 ^ #12582852 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000ac0: SF := high:1[#12582852] -00000ac4: ZF := 0 = #12582852 -00000acb: when ZF goto %00000ac8 -00000b52: goto %00000b22 - -00000b22: -00000b2e: #12582846 := RAX -00000b32: RSP := RSP - 8 -00000b37: mem := mem with [RSP, el]:u64 <- 0x1012 -00000b3a: call #12582846 with return %00000ac8 - -00000ac8: -00000ae9: #12582850 := RSP -00000aed: RSP := RSP + 8 -00000af2: CF := RSP < #12582850 -00000afa: OF := ~high:1[#12582850] & (high:1[#12582850] | high:1[RSP]) & - ~(high:1[#12582850] & high:1[RSP]) -00000aff: AF := 0x10 = (0x10 & (RSP ^ #12582850 ^ 8)) -00000b04: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000b08: SF := high:1[RSP] -00000b0c: ZF := 0 = RSP -00000b19: #12582847 := mem[RSP, el]:u64 -00000b1d: RSP := RSP + 8 -00000b20: call #12582847 with noreturn - -00000b53: sub _start(_start_result) -00000b69: _start_result :: out u32 = low:32[RAX] - -00000251: -0000025b: RBP := 0 -0000025e: AF := unknown[bits]:u1 -00000261: ZF := 1 -00000264: PF := 1 -00000267: OF := 0 -0000026a: CF := 0 -0000026d: SF := 0 -00000275: R9 := RDX -00000281: RSI := mem[RSP, el]:u64 -00000285: RSP := RSP + 8 -0000028d: RDX := RSP -0000029f: RSP := RSP & 0xFFFFFFFFFFFFFFF0 -000002a2: OF := 0 -000002a5: CF := 0 -000002a8: AF := unknown[bits]:u1 -000002ad: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000002b1: SF := high:1[RSP] -000002b5: ZF := 0 = RSP -000002c3: #12582903 := RAX -000002c7: RSP := RSP - 8 -000002cd: mem := mem with [RSP, el]:u64 <- #12582903 -000002db: #12582902 := RSP -000002df: RSP := RSP - 8 -000002e5: mem := mem with [RSP, el]:u64 <- #12582902 -000002f1: R8 := 0 -000002f4: AF := unknown[bits]:u1 -000002f7: ZF := 1 -000002fa: PF := 1 -000002fd: OF := 0 -00000300: CF := 0 -00000303: SF := 0 -0000030f: RCX := 0 -00000312: AF := unknown[bits]:u1 -00000315: ZF := 1 -00000318: PF := 1 -0000031b: OF := 0 -0000031e: CF := 0 -00000321: SF := 0 -00000327: RDI := 0x1190 -00000335: #12582901 := mem[0x3FC0, el]:u64 -00000339: RSP := RSP - 8 -0000033e: mem := mem with [RSP, el]:u64 <- 0x10C1 -00000341: call @__libc_start_main with return %00000343 - -00000343: -00000346: call @intrinsic:hlt with return %00000348 - -00000348: -00000b54: call @deregister_tm_clones with noreturn - -00000b55: sub deregister_tm_clones(deregister_tm_clones_result) -00000b6a: deregister_tm_clones_result :: out u32 = low:32[RAX] - -00000352: -00000356: RDI := 0x4050 -0000035c: RAX := 0x4050 -00000379: #12582900 := RAX - RDI -0000037e: CF := RAX < RDI -00000385: OF := high:1[(RAX ^ RDI) & (RAX ^ #12582900)] -0000038b: AF := 0x10 = (0x10 & (#12582900 ^ RAX ^ RDI)) -00000390: PF := - ~low:1[let $0 = #12582900 >> 4 ^ #12582900 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000394: SF := high:1[#12582900] -00000398: ZF := 0 = #12582900 -0000039f: when ZF goto %0000039c -00000b56: goto %000008d5 - -000008d5: -000008db: RAX := mem[0x3FC8, el]:u64 -000008ed: #12582864 := RAX -000008f0: OF := 0 -000008f3: CF := 0 -000008f6: AF := unknown[bits]:u1 -000008fb: PF := - ~low:1[let $0 = #12582864 >> 4 ^ #12582864 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000008ff: SF := high:1[#12582864] -00000903: ZF := 0 = #12582864 -00000909: when ZF goto %0000039c -00000b57: goto %0000090d - -0000039c: -000003ad: #12582898 := mem[RSP, el]:u64 -000003b1: RSP := RSP + 8 -000003b4: call #12582898 with noreturn - -0000090d: -00000911: call RAX with noreturn - -00000b58: sub frame_dummy(frame_dummy_result) -00000b6b: frame_dummy_result :: out u32 = low:32[RAX] - -0000056b: -0000056f: call @register_tm_clones with noreturn - -00000b59: sub free(free_ptr) -00000b6c: free_ptr :: in out u64 = RDI - -00000749: -000009b0: call @free:external with return %000009b2 - -000009b2: -000009bb: RSP := RSP - 8 -000009c0: mem := mem with [RSP, el]:u64 <- 0 -000009c4: call @free@plt-0x10 with noreturn - -00000b5a: sub free@plt-0x10(free@plt-0x10_result) -00000b6d: free@plt-0x10_result :: out u32 = low:32[RAX] - -0000098a: -00000996: #12582862 := mem[0x3FF0, el]:u64 -0000099a: RSP := RSP - 8 -000009a0: mem := mem with [RSP, el]:u64 <- #12582862 -000009a6: call mem[0x3FF8, el]:u64 with noreturn - -00000b5b: sub main(main_argc, main_argv, main_result) -00000b6e: main_argc :: in u32 = low:32[RDI] -00000b6f: main_argv :: in out u64 = RSI -00000b70: main_result :: out u32 = low:32[RAX] - -00000576: -00000582: #12582881 := RBP -00000586: RSP := RSP - 8 -0000058c: mem := mem with [RSP, el]:u64 <- #12582881 -00000594: RBP := RSP -000005ae: #12582880 := RSP -000005b2: RSP := RSP - 0x20 -000005b6: CF := #12582880 < 0x20 -000005bc: OF := high:1[(#12582880 ^ 0x20) & (#12582880 ^ RSP)] -000005c1: AF := 0x10 = (0x10 & (RSP ^ #12582880 ^ 0x20)) -000005c6: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000005ca: SF := high:1[RSP] -000005ce: ZF := 0 = RSP -000005d8: mem := mem with [RBP - 8, el]:u64 <- 0 -000005e2: mem := mem with [RBP - 0x10, el]:u64 <- 0 -000005e8: RDI := 0xB -000005f4: RSP := RSP - 8 -000005f9: mem := mem with [RSP, el]:u64 <- 0x11B2 -000005fb: call @malloc with return %000005fd - -000005fd: -00000605: mem := mem with [0x4058, el]:u64 <- RAX -0000060d: RAX := mem[0x4058, el]:u64 -00000619: mem := mem with [RBP - 0x20, el]:u64 <- RAX -0000061f: RDI := 0x4041 -0000062b: RSP := RSP - 8 -00000630: mem := mem with [RSP, el]:u64 <- 0x11D0 -00000632: call @strlen with return %00000634 - -00000634: -0000063c: RDI := mem[RBP - 0x20, el]:u64 -00000644: RDX := RAX -0000064a: RSI := 0x4041 -00000656: RSP := RSP - 8 -0000065b: mem := mem with [RSP, el]:u64 <- 0x11E3 -0000065d: call @memcpy with return %0000065f - -0000065f: -00000665: RDI := mem[0x4058, el]:u64 -00000671: RSP := RSP - 8 -00000676: mem := mem with [RSP, el]:u64 <- 0x11EF -00000678: call @puts with return %0000067a - -0000067a: -00000680: RAX := mem[0x4058, el]:u64 -0000069d: #12582877 := RAX -000006a1: RAX := RAX + 4 -000006a6: CF := RAX < #12582877 -000006ae: OF := ~high:1[#12582877] & (high:1[#12582877] | high:1[RAX]) & - ~(high:1[#12582877] & high:1[RAX]) -000006b3: AF := 0x10 = (0x10 & (RAX ^ #12582877 ^ 4)) -000006b8: PF := - ~low:1[let $0 = RAX >> 4 ^ RAX in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000006bc: SF := high:1[RAX] -000006c0: ZF := 0 = RAX -000006cc: mem := mem with [RBP - 8, el]:u64 <- RAX -000006d6: RAX := mem[RBP - 8, el]:u64 -000006e0: mem := mem with [RAX] <- 0 -000006e8: RAX := mem[0x4058, el]:u64 -000006f4: mem := mem with [RBP - 0x18, el]:u64 <- RAX -000006fc: RDI := mem[0x4058, el]:u64 -00000707: RSP := RSP - 8 -0000070c: mem := mem with [RSP, el]:u64 <- 0x121C -0000070e: call @strlen with return %00000710 - -00000710: -00000718: RDI := mem[RBP - 0x18, el]:u64 -00000720: RDX := RAX -00000726: RSI := 1 -00000732: RSP := RSP - 8 -00000737: mem := mem with [RSP, el]:u64 <- 0x122D -00000739: call @memset with return %0000073b - -0000073b: -00000741: RDI := mem[0x4058, el]:u64 -0000074d: RSP := RSP - 8 -00000752: mem := mem with [RSP, el]:u64 <- 0x1239 -00000754: call @free with return %00000756 - -00000756: -00000760: RAX := 0 -00000763: AF := unknown[bits]:u1 -00000766: ZF := 1 -00000769: PF := 1 -0000076c: OF := 0 -0000076f: CF := 0 -00000772: SF := 0 -0000078f: #12582874 := RSP -00000793: RSP := RSP + 0x20 -00000798: CF := RSP < #12582874 -000007a0: OF := ~high:1[#12582874] & (high:1[#12582874] | high:1[RSP]) & - ~(high:1[#12582874] & high:1[RSP]) -000007a5: AF := 0x10 = (0x10 & (RSP ^ #12582874 ^ 0x20)) -000007aa: PF := - ~low:1[let $0 = RSP >> 4 ^ RSP in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000007ae: SF := high:1[RSP] -000007b2: ZF := 0 = RSP -000007be: RBP := mem[RSP, el]:u64 -000007c2: RSP := RSP + 8 -000007cf: #12582871 := mem[RSP, el]:u64 -000007d3: RSP := RSP + 8 -000007d6: call #12582871 with noreturn - -00000b5c: sub malloc(malloc_size, malloc_result) -00000b71: malloc_size :: in u64 = RDI -00000b72: malloc_result :: out u64 = RAX - -000005f0: -00000a2d: call @malloc:external with return %00000a2f - -00000a2f: -00000a38: RSP := RSP - 8 -00000a3d: mem := mem with [RSP, el]:u64 <- 5 -00000a41: call @free@plt-0x10 with noreturn - -00000b5d: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000b73: memcpy_dst :: in out u64 = RDI -00000b74: memcpy_src :: in out u64 = RSI -00000b75: memcpy_n :: in u64 = RDX -00000b76: memcpy_result :: out u64 = RAX - -00000652: -00000a14: call @memcpy:external with return %00000a16 - -00000a16: -00000a1f: RSP := RSP - 8 -00000a24: mem := mem with [RSP, el]:u64 <- 4 -00000a28: call @free@plt-0x10 with noreturn - -00000b5e: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000b77: memset_buf :: in out u64 = RDI -00000b78: memset_c :: in u32 = low:32[RSI] -00000b79: memset_n :: in u64 = RDX -00000b7a: memset_result :: out u64 = RAX - -0000072e: -000009fb: call @memset:external with return %000009fd - -000009fd: -00000a06: RSP := RSP - 8 -00000a0b: mem := mem with [RSP, el]:u64 <- 3 -00000a0f: call @free@plt-0x10 with noreturn - -00000b5f: sub puts(puts_s, puts_result) -00000b7b: puts_s :: in u64 = RDI -00000b7c: puts_result :: out u32 = low:32[RAX] - -0000066d: -000009c9: call @puts:external with return %000009cb - -000009cb: -000009d4: RSP := RSP - 8 -000009d9: mem := mem with [RSP, el]:u64 <- 1 -000009dd: call @free@plt-0x10 with noreturn - -00000b60: sub register_tm_clones(register_tm_clones_result) -00000b7d: register_tm_clones_result :: out u32 = low:32[RAX] - -000003bb: -000003bf: RDI := 0x4050 -000003c5: RSI := 0x4050 -000003e5: #12582897 := RSI -000003e9: #12582896 := RDI -000003ee: RSI := RSI - RDI -000003f3: CF := #12582897 < #12582896 -000003fa: OF := high:1[(#12582897 ^ #12582896) & (#12582897 ^ RSI)] -00000400: AF := 0x10 = (0x10 & (RSI ^ #12582897 ^ #12582896)) -00000405: PF := - ~low:1[let $0 = RSI >> 4 ^ RSI in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000409: SF := high:1[RSI] -0000040d: ZF := 0 = RSI -00000415: RAX := RSI -0000042a: #12582894 := RSI -0000042e: RSI := RSI >> 0x3F -00000432: CF := high:1[#12582894 << 1] -00000436: SF := high:1[RSI] -0000043a: ZF := 0 = RSI -0000043f: PF := - ~low:1[let $0 = RSI >> 4 ^ RSI in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000442: AF := unknown[bits]:u1 -00000445: OF := unknown[bits]:u1 -0000045a: #12582892 := RAX -0000045e: RAX := RAX ~>> 3 -00000462: CF := high:1[#12582892 << 0x3D] -00000466: SF := high:1[RAX] -0000046a: ZF := 0 = RAX -0000046f: PF := - ~low:1[let $0 = RAX >> 4 ^ RAX in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -00000472: AF := unknown[bits]:u1 -00000475: OF := unknown[bits]:u1 -00000497: #12582890 := RSI -0000049b: #12582889 := RAX -000004a0: RSI := RSI + #12582889 -000004a5: CF := RSI < #12582890 -000004ae: OF := high:1[#12582890] = high:1[#12582889] & - (high:1[#12582890] | high:1[RSI]) & - ~(high:1[#12582890] & high:1[RSI]) -000004b4: AF := 0x10 = (0x10 & (RSI ^ #12582890 ^ #12582889)) -000004b9: PF := - ~low:1[let $0 = RSI >> 4 ^ RSI in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000004bd: SF := high:1[RSI] -000004c1: ZF := 0 = RSI -000004d6: #12582887 := RSI -000004da: RSI := RSI ~>> 1 -000004de: CF := high:1[#12582887 << 0x3F] -000004e2: SF := high:1[RSI] -000004e6: ZF := 0 = RSI -000004eb: PF := - ~low:1[let $0 = RSI >> 4 ^ RSI in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000004ee: AF := unknown[bits]:u1 -000004f1: OF := 0 -000004f8: when ZF goto %000004f5 -00000b61: goto %00000892 - -00000892: -00000898: RAX := mem[0x3FD8, el]:u64 -000008aa: #12582866 := RAX -000008ad: OF := 0 -000008b0: CF := 0 -000008b3: AF := unknown[bits]:u1 -000008b8: PF := - ~low:1[let $0 = #12582866 >> 4 ^ #12582866 in - let $1 = $0 >> 2 ^ $0 in $1 >> 1 ^ $1] -000008bc: SF := high:1[#12582866] -000008c0: ZF := 0 = #12582866 -000008c6: when ZF goto %000004f5 -00000b62: goto %000008ca - -000004f5: -00000506: #12582885 := mem[RSP, el]:u64 -0000050a: RSP := RSP + 8 -0000050d: call #12582885 with noreturn - -000008ca: -000008ce: call RAX with noreturn - -00000b63: sub strlen(strlen_s, strlen_result) -00000b7e: strlen_s :: in u64 = RDI -00000b7f: strlen_result :: out u64 = RAX - -00000627: -000009e2: call @strlen:external with return %000009e4 - -000009e4: -000009ed: RSP := RSP - 8 -000009f2: mem := mem with [RSP, el]:u64 <- 2 -000009f6: call @free@plt-0x10 with noreturn - -0000033f: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000b80: __libc_start_main_main :: in u64 = RDI -00000b81: __libc_start_main_arg2 :: in u32 = low:32[RSI] -00000b82: __libc_start_main_arg3 :: in out u64 = RDX -00000b83: __libc_start_main_auxv :: in out u64 = RCX -00000b84: __libc_start_main_result :: out u32 = low:32[RAX] - -00000344: sub intrinsic:hlt() - - -000009ae: sub free:external(free:external_result) -00000b85: free:external_result :: out u32 = low:32[RAX] - -000009c7: sub puts:external(puts:external_result) -00000b86: puts:external_result :: out u32 = low:32[RAX] - -000009e0: sub strlen:external(strlen:external_result) -00000b87: strlen:external_result :: out u32 = low:32[RAX] - -000009f9: sub memset:external(memset:external_result) -00000b88: memset:external_result :: out u32 = low:32[RAX] - -00000a12: sub memcpy:external(memcpy:external_result) -00000b89: memcpy:external_result :: out u32 = low:32[RAX] - -00000a2b: sub malloc:external(malloc:external_result) -00000b8a: malloc:external_result :: out u32 = low:32[RAX] - -00000b47: sub __cxa_finalize:external(__cxa_finalize:external_result) -00000b8b: __cxa_finalize:external_result :: out u32 = low:32[RAX] +00000939: program +000008f2: sub __cxa_finalize(__cxa_finalize_result) +0000093a: __cxa_finalize_result :: out u32 = low:32[R0] + +0000052b: +000006cf: R16 := 0x20000 +000006d7: R17 := mem[R16 + 0x18, el]:u64 +000006de: R16 := R16 + 0x18 +000006e3: call R17 with noreturn + +000008f3: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000093b: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000322: +00000329: #34 := R31 - 0x20 +0000032e: mem := mem with [#34, el]:u64 <- R29 +00000333: mem := mem with [#34 + 8, el]:u64 <- R30 +00000337: R31 := #34 +0000033e: R29 := R31 +00000346: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000034c: R19 := 0x20000 +00000355: R0 := pad:32[mem[R19 + 0x70]] +00000361: #36 := ~~0:0[R0] +0000035b: when #36 goto %00000359 +0000092f: goto %000004e9 + +000004e9: +000004ed: R0 := 0x1F000 +000004f5: R0 := mem[R0 + 0xFC8, el]:u64 +00000501: #67 := R0 = 0 +000004fb: when #67 goto %000004f9 +00000930: goto %00000519 + +00000519: +0000051d: R0 := 0x20000 +00000525: R0 := mem[R0 + 0x58, el]:u64 +0000052a: R30 := 0x8F0 +0000052d: call @__cxa_finalize with return %000004f9 + +000004f9: +00000506: R30 := 0x8F4 +00000508: call @deregister_tm_clones with return %0000050a + +0000050a: +0000050f: R0 := 1 +00000517: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] +00000931: goto %00000359 + +00000359: +00000369: R19 := mem[R31 + 0x10, el]:u64 +00000373: R29 := mem[R31, el]:u64 +00000377: R30 := mem[R31 + 8, el]:u64 +0000037a: R31 := R31 + 0x20 +0000037f: call R30 with noreturn + +000008f7: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +0000093c: __libc_start_main_main :: in u64 = R0 +0000093d: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000093e: __libc_start_main_arg3 :: in out u64 = R2 +0000093f: __libc_start_main_auxv :: in out u64 = R3 +00000940: __libc_start_main_result :: out u32 = low:32[R0] + +00000266: +000006b6: R16 := 0x20000 +000006be: R17 := mem[R16 + 0x10, el]:u64 +000006c5: R16 := R16 + 0x10 +000006ca: call R17 with noreturn + +000008f8: sub _fini(_fini_result) +00000941: _fini_result :: out u32 = low:32[R0] + +00000020: +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +000008f9: sub _init(_init_result) +00000942: _init_result :: out u32 = low:32[R0] + +0000080d: +00000816: #98 := R31 - 0x10 +0000081b: mem := mem with [#98, el]:u64 <- R29 +00000820: mem := mem with [#98 + 8, el]:u64 <- R30 +00000824: R31 := #98 +0000082b: R29 := R31 +00000830: R30 := 0x738 +00000832: call @call_weak_fn with return %00000834 + +00000834: +0000083c: R29 := mem[R31, el]:u64 +00000840: R30 := mem[R31 + 8, el]:u64 +00000843: R31 := R31 + 0x10 +00000848: call R30 with noreturn + +000008fa: sub _start(_start_result) +00000943: _start_result :: out u32 = low:32[R0] + +0000021c: +00000222: R29 := 0 +00000228: R30 := 0 +00000230: R5 := R0 +00000238: R1 := mem[R31, el]:u64 +0000023f: R2 := R31 + 8 +00000246: R6 := R31 +0000024c: R0 := 0x1F000 +00000254: R0 := mem[R0 + 0xFD8, el]:u64 +0000025a: R3 := 0 +00000260: R4 := 0 +00000265: R30 := 0x830 +00000268: call @__libc_start_main with return %0000026a + +0000026a: +0000026d: R30 := 0x834 +00000270: call @abort with return %00000932 + +00000932: +00000933: call @call_weak_fn with noreturn + +000008fd: sub abort() + + +0000026e: +00000733: R16 := 0x20000 +0000073b: R17 := mem[R16 + 0x38, el]:u64 +00000742: R16 := R16 + 0x38 +00000747: call R17 with noreturn + +000008fe: sub call_weak_fn(call_weak_fn_result) +00000944: call_weak_fn_result :: out u32 = low:32[R0] + +00000272: +00000276: R0 := 0x1F000 +0000027e: R0 := mem[R0 + 0xFD0, el]:u64 +0000028a: #12 := R0 = 0 +00000284: when #12 goto %00000282 +00000934: goto %0000057d + +00000282: +0000028f: call R30 with noreturn + +0000057d: +00000580: goto @__gmon_start__ + +0000057e: +0000071a: R16 := 0x20000 +00000722: R17 := mem[R16 + 0x30, el]:u64 +00000729: R16 := R16 + 0x30 +0000072e: call R17 with noreturn + +00000900: sub deregister_tm_clones(deregister_tm_clones_result) +00000945: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000295: +00000299: R0 := 0x20000 +000002a0: R0 := R0 + 0x70 +000002a6: R1 := 0x20000 +000002ad: R1 := R1 + 0x70 +000002b5: #16 := 1 + ~R0 + R1 +000002b9: NF := 63:63[#16] +000002bc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002bf: ZF := #16 = 0 +000002c2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002d0: #21 := ZF +000002ca: when #21 goto %000002c8 +00000935: goto %00000556 + +00000556: +0000055a: R1 := 0x1F000 +00000562: R1 := mem[R1 + 0xFC0, el]:u64 +0000056d: #75 := R1 = 0 +00000567: when #75 goto %000002c8 +00000936: goto %00000570 + +000002c8: +000002d5: call R30 with noreturn + +00000570: +00000576: R16 := R1 +0000057b: call R16 with noreturn + +00000903: sub frame_dummy(frame_dummy_result) +00000946: frame_dummy_result :: out u32 = low:32[R0] + +00000385: +00000387: call @register_tm_clones with noreturn + +00000904: sub free(free_ptr) +00000947: free_ptr :: in out u64 = R0 + +000004c3: +00000765: R16 := 0x20000 +0000076d: R17 := mem[R16 + 0x48, el]:u64 +00000774: R16 := R16 + 0x48 +00000779: call R17 with noreturn + +00000905: sub main(main_argc, main_argv, main_result) +00000948: main_argc :: in u32 = low:32[R0] +00000949: main_argv :: in out u64 = R1 +0000094a: main_result :: out u32 = low:32[R0] + +00000389: +0000038e: R31 := R31 - 0x40 +00000396: #42 := R31 + 0x30 +0000039b: mem := mem with [#42, el]:u64 <- R29 +000003a0: mem := mem with [#42 + 8, el]:u64 <- R30 +000003a7: R29 := R31 + 0x30 +000003af: mem := mem with [R29 - 8, el]:u64 <- 0 +000003b7: mem := mem with [R29 - 0x10, el]:u64 <- 0 +000003bd: R0 := 0xB +000003c2: R30 := 0x930 +000003c5: call @malloc with return %000003c7 + +000003c7: +000003cb: R8 := 0x20000 +000003d3: mem := mem with [R31 + 0x18, el]:u64 <- R8 +000003db: mem := mem with [R8 + 0x78, el]:u64 <- R0 +000003e3: R8 := mem[R8 + 0x78, el]:u64 +000003eb: mem := mem with [R31 + 8, el]:u64 <- R8 +000003f1: R0 := 0x20000 +000003f8: R0 := R0 + 0x61 +00000400: mem := mem with [R31, el]:u64 <- R0 +00000405: R30 := 0x954 +00000408: call @strlen with return %0000040a + +0000040a: +00000410: R1 := mem[R31, el]:u64 +00000418: R2 := R0 +00000420: R0 := mem[R31 + 8, el]:u64 +00000425: R30 := 0x964 +00000428: call @memcpy with return %0000042a + +0000042a: +00000430: R8 := mem[R31 + 0x18, el]:u64 +00000438: R0 := mem[R8 + 0x78, el]:u64 +0000043d: R30 := 0x970 +00000440: call @puts with return %00000442 + +00000442: +00000448: R8 := mem[R31 + 0x18, el]:u64 +00000450: R9 := mem[R8 + 0x78, el]:u64 +00000457: R9 := R9 + 4 +0000045f: mem := mem with [R29 - 8, el]:u64 <- R9 +00000467: R9 := mem[R29 - 8, el]:u64 +0000046f: mem := mem with [R9] <- 0 +00000477: R9 := mem[R8 + 0x78, el]:u64 +0000047f: mem := mem with [R31 + 0x10, el]:u64 <- R9 +00000487: R0 := mem[R8 + 0x78, el]:u64 +0000048c: R30 := 0x998 +0000048e: call @strlen with return %00000490 + +00000490: +00000496: R2 := R0 +0000049e: R0 := mem[R31 + 0x10, el]:u64 +000004a5: R1 := 1 +000004aa: R30 := 0x9A8 +000004ad: call @memset with return %000004af + +000004af: +000004b5: R8 := mem[R31 + 0x18, el]:u64 +000004bd: R0 := mem[R8 + 0x78, el]:u64 +000004c2: R30 := 0x9B4 +000004c5: call @free with return %000004c7 + +000004c7: +000004ce: R0 := 0 +000004d7: R29 := mem[R31 + 0x30, el]:u64 +000004db: R30 := mem[R31 + 0x38, el]:u64 +000004e2: R31 := R31 + 0x40 +000004e7: call R30 with noreturn + +00000906: sub malloc(malloc_size, malloc_result) +0000094b: malloc_size :: in u64 = R0 +0000094c: malloc_result :: out u64 = R0 + +000003c3: +000006e8: R16 := 0x20000 +000006f0: R17 := mem[R16 + 0x20, el]:u64 +000006f7: R16 := R16 + 0x20 +000006fc: call R17 with noreturn + +00000907: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +0000094d: memcpy_dst :: in out u64 = R0 +0000094e: memcpy_src :: in out u64 = R1 +0000094f: memcpy_n :: in u64 = R2 +00000950: memcpy_result :: out u64 = R0 + +00000426: +00000684: R16 := 0x20000 +0000068c: R17 := mem[R16, el]:u64 +00000693: R16 := R16 +00000698: call R17 with noreturn + +00000908: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000951: memset_buf :: in out u64 = R0 +00000952: memset_c :: in u32 = low:32[R1] +00000953: memset_n :: in u64 = R2 +00000954: memset_result :: out u64 = R0 + +000004ab: +00000701: R16 := 0x20000 +00000709: R17 := mem[R16 + 0x28, el]:u64 +00000710: R16 := R16 + 0x28 +00000715: call R17 with noreturn + +00000909: sub puts(puts_s, puts_result) +00000955: puts_s :: in u64 = R0 +00000956: puts_result :: out u32 = low:32[R0] + +0000043e: +0000074c: R16 := 0x20000 +00000754: R17 := mem[R16 + 0x40, el]:u64 +0000075b: R16 := R16 + 0x40 +00000760: call R17 with noreturn + +0000090a: sub register_tm_clones(register_tm_clones_result) +00000957: register_tm_clones_result :: out u32 = low:32[R0] + +000002d7: +000002db: R0 := 0x20000 +000002e2: R0 := R0 + 0x70 +000002e8: R1 := 0x20000 +000002ef: R1 := R1 + 0x70 +000002f7: R1 := R1 - R0 +000002fe: R2 := R1 >> 0x3F +00000306: R1 := R2 + (R1 ~>> 3) +0000030d: R1 := R1 >> 1 +00000319: #30 := R1 = 0 +00000313: when #30 goto %00000311 +00000937: goto %0000052f + +0000052f: +00000533: R2 := 0x1F000 +0000053b: R2 := mem[R2 + 0xFE0, el]:u64 +00000546: #70 := R2 = 0 +00000540: when #70 goto %00000311 +00000938: goto %00000549 + +00000311: +0000031e: call R30 with noreturn + +00000549: +0000054f: R16 := R2 +00000554: call R16 with noreturn + +0000090d: sub strlen(strlen_s, strlen_result) +00000958: strlen_s :: in u64 = R0 +00000959: strlen_result :: out u64 = R0 + +00000406: +0000069d: R16 := 0x20000 +000006a5: R17 := mem[R16 + 8, el]:u64 +000006ac: R16 := R16 + 8 +000006b1: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected index 56b362747..8d4ba53d6 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected @@ -60,6 +60,10 @@ function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: 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]))))))) } @@ -72,32 +76,36 @@ function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64 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_be(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, 2448bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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); @@ -130,28 +138,28 @@ procedure {:extern} guarantee_reflexive(); 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, 2448bv64) == 1bv8); - free requires (memory_load8_le(mem, 2449bv64) == 0bv8); - free requires (memory_load8_le(mem, 2450bv64) == 2bv8); - free requires (memory_load8_le(mem, 2451bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + free requires (memory_load8_le(mem, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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); @@ -166,28 +174,28 @@ procedure #free(); 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, 2448bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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); @@ -237,28 +245,28 @@ procedure main() 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, 2448bv64) == 1bv8); - free requires (memory_load8_le(mem, 2449bv64) == 0bv8); - free requires (memory_load8_le(mem, 2450bv64) == 2bv8); - free requires (memory_load8_le(mem, 2451bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + free requires (memory_load8_le(mem, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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); @@ -277,28 +285,28 @@ procedure main() free ensures (Gamma_R31 == old(Gamma_R31)); free ensures (R29 == old(R29)); free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2448bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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); @@ -314,102 +322,104 @@ procedure main() free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); { - var #4: bv64; - var #5: bv64; - var Gamma_#4: bool; - var Gamma_#5: bool; + var #42: bv64; + var Gamma_#42: bool; lmain: assume {:captureState "lmain"} true; - R31, Gamma_R31 := bvadd64(R31, 18446744073709551552bv64), Gamma_R31; - #4, Gamma_#4 := bvadd64(R31, 48bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); - assume {:captureState "%00000362"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); - assume {:captureState "%00000368"} true; + R31, Gamma_R31 := bvsub64(R31, 64bv64), Gamma_R31; + #42, Gamma_#42 := bvadd64(R31, 48bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); + assume {:captureState "%0000039b"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); + assume {:captureState "%000003a0"} true; R29, Gamma_R29 := bvadd64(R31, 48bv64), Gamma_R31; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), true); - assume {:captureState "%00000375"} true; + assume {:captureState "%000003af"} true; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551600bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551600bv64), true); - assume {:captureState "%0000037c"} true; + assume {:captureState "%000003b7"} true; R0, Gamma_R0 := 11bv64, true; - R30, Gamma_R30 := 2288bv64, true; + R30, Gamma_R30 := 2352bv64, true; call malloc(); - goto l0000038b; - l0000038b: - assume {:captureState "l0000038b"} true; + goto l000003c7; + l000003c7: + assume {:captureState "l000003c7"} true; R8, Gamma_R8 := 131072bv64, true; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R8); - assume {:captureState "%00000396"} true; + assume {:captureState "%000003d3"} true; call rely(); assert (L(mem, bvadd64(R8, 120bv64)) ==> Gamma_R0); mem, Gamma_mem := memory_store64_le(mem, bvadd64(R8, 120bv64), R0), gamma_store64(Gamma_mem, bvadd64(R8, 120bv64), Gamma_R0); - assume {:captureState "%0000039e"} true; + assume {:captureState "%000003db"} true; call rely(); R8, Gamma_R8 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 8bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 8bv64), Gamma_R8); - assume {:captureState "%000003ad"} true; + assume {:captureState "%000003eb"} true; R0, Gamma_R0 := 131072bv64, true; R0, Gamma_R0 := bvadd64(R0, 97bv64), Gamma_R0; stack, Gamma_stack := memory_store64_le(stack, R31, R0), gamma_store64(Gamma_stack, R31, Gamma_R0); - assume {:captureState "%000003c0"} true; - R30, Gamma_R30 := 2324bv64, true; + assume {:captureState "%00000400"} true; + R30, Gamma_R30 := 2388bv64, true; call strlen(); - goto l000003ca; - l000003ca: - assume {:captureState "l000003ca"} true; + goto l0000040a; + l0000040a: + assume {:captureState "l0000040a"} true; R1, Gamma_R1 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); R2, Gamma_R2 := R0, Gamma_R0; R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); - R30, Gamma_R30 := 2340bv64, true; + R30, Gamma_R30 := 2404bv64, true; call memcpy(); - goto l000003e6; - l000003e6: - assume {:captureState "l000003e6"} true; + goto l0000042a; + l0000042a: + assume {:captureState "l0000042a"} true; R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); call rely(); R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R30, Gamma_R30 := 2352bv64, true; + R30, Gamma_R30 := 2416bv64, true; call puts(); - goto l000003fc; - l000003fc: - assume {:captureState "l000003fc"} true; + goto l00000442; + l00000442: + assume {:captureState "l00000442"} true; R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); call rely(); R9, Gamma_R9 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); R9, Gamma_R9 := bvadd64(R9, 4bv64), Gamma_R9; stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), R9), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), Gamma_R9); - assume {:captureState "%00000416"} true; + assume {:captureState "%0000045f"} true; + R9, Gamma_R9 := memory_load64_le(stack, bvadd64(R29, 18446744073709551608bv64)), gamma_load64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64)); + call rely(); + assert (L(mem, R9) ==> true); + mem, Gamma_mem := memory_store8_be(mem, R9, 0bv8), gamma_store8(Gamma_mem, R9, true); + assume {:captureState "%0000046f"} true; call rely(); R9, Gamma_R9 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R9), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R9); - assume {:captureState "%00000425"} true; + assume {:captureState "%0000047f"} true; call rely(); R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R30, Gamma_R30 := 2384bv64, true; + R30, Gamma_R30 := 2456bv64, true; call strlen(); - goto l00000435; - l00000435: - assume {:captureState "l00000435"} true; + goto l00000490; + l00000490: + assume {:captureState "l00000490"} true; R2, Gamma_R2 := R0, Gamma_R0; R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); R1, Gamma_R1 := 1bv64, true; - R30, Gamma_R30 := 2400bv64, true; + R30, Gamma_R30 := 2472bv64, true; call memset(); - goto l0000044f; - l0000044f: - assume {:captureState "l0000044f"} true; + goto l000004af; + l000004af: + assume {:captureState "l000004af"} true; R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); call rely(); R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R30, Gamma_R30 := 2412bv64, true; + R30, Gamma_R30 := 2484bv64, true; call #free(); - goto l00000465; - l00000465: - assume {:captureState "l00000465"} true; - R0, Gamma_R0 := 0bv64, true; - #5, Gamma_#5 := bvadd64(R31, 48bv64), Gamma_R31; - R29, Gamma_R29 := memory_load64_le(stack, #5), gamma_load64(Gamma_stack, #5); - R30, Gamma_R30 := memory_load64_le(stack, bvadd64(#5, 8bv64)), gamma_load64(Gamma_stack, bvadd64(#5, 8bv64)); + goto l000004c7; + l000004c7: + assume {:captureState "l000004c7"} true; + R0, Gamma_R0 := 0bv32, true; + R29, Gamma_R29 := memory_load64_le(stack, bvadd64(R31, 48bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 48bv64)); + R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 56bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 56bv64)); R31, Gamma_R31 := bvadd64(R31, 64bv64), Gamma_R31; return; } @@ -418,28 +428,28 @@ 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, 2448bv64) == 1bv8); - free requires (memory_load8_le(mem, 2449bv64) == 0bv8); - free requires (memory_load8_le(mem, 2450bv64) == 2bv8); - free requires (memory_load8_le(mem, 2451bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + free requires (memory_load8_le(mem, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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); @@ -464,28 +474,28 @@ procedure malloc(); 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, 2448bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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); @@ -503,28 +513,28 @@ procedure malloc(); procedure memcpy(); modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - free requires (memory_load8_le(mem, 2448bv64) == 1bv8); - free requires (memory_load8_le(mem, 2449bv64) == 0bv8); - free requires (memory_load8_le(mem, 2450bv64) == 2bv8); - free requires (memory_load8_le(mem, 2451bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + free requires (memory_load8_le(mem, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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); @@ -542,28 +552,28 @@ procedure memcpy(); 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, 2448bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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); @@ -582,28 +592,28 @@ procedure memcpy(); procedure memset(); modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; requires Gamma_R1; - free requires (memory_load8_le(mem, 2448bv64) == 1bv8); - free requires (memory_load8_le(mem, 2449bv64) == 0bv8); - free requires (memory_load8_le(mem, 2450bv64) == 2bv8); - free requires (memory_load8_le(mem, 2451bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + free requires (memory_load8_le(mem, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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); @@ -621,28 +631,28 @@ procedure memset(); 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, 2448bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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); @@ -660,28 +670,28 @@ procedure memset(); procedure puts(); modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2448bv64) == 1bv8); - free requires (memory_load8_le(mem, 2449bv64) == 0bv8); - free requires (memory_load8_le(mem, 2450bv64) == 2bv8); - free requires (memory_load8_le(mem, 2451bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + free requires (memory_load8_le(mem, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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); @@ -696,28 +706,28 @@ procedure puts(); 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, 2448bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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); @@ -735,28 +745,28 @@ procedure puts(); procedure strlen(); modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; - free requires (memory_load8_le(mem, 2448bv64) == 1bv8); - free requires (memory_load8_le(mem, 2449bv64) == 0bv8); - free requires (memory_load8_le(mem, 2450bv64) == 2bv8); - free requires (memory_load8_le(mem, 2451bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + free requires (memory_load8_le(mem, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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); @@ -776,28 +786,28 @@ procedure strlen(); 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, 2448bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2449bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2450bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2451bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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); diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf index 20ae7e5a2..c187b6cd1 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf @@ -1,82 +1,145 @@ -Relocation section '.rela.dyn' at offset 0x600 contains 8 entries: +Relocation section '.rela.dyn' at offset 0x578 contains 8 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -0000000000003dd0 0000000000000008 R_X86_64_RELATIVE 1180 -0000000000003dd8 0000000000000008 R_X86_64_RELATIVE 1140 -0000000000004038 0000000000000008 R_X86_64_RELATIVE 4038 -0000000000003fc0 0000000200000006 R_X86_64_GLOB_DAT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 -0000000000003fc8 0000000300000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -0000000000003fd0 0000000700000006 R_X86_64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 -0000000000003fd8 0000000a00000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 -0000000000003fe0 0000000b00000006 R_X86_64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.2.5 + 0 +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 0x6c0 contains 6 entries: +Relocation section '.rela.plt' at offset 0x638 contains 10 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -0000000000004000 0000000100000007 R_X86_64_JUMP_SLOT 0000000000000000 free@GLIBC_2.2.5 + 0 -0000000000004008 0000000400000007 R_X86_64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.2.5 + 0 -0000000000004010 0000000500000007 R_X86_64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.2.5 + 0 -0000000000004018 0000000600000007 R_X86_64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.2.5 + 0 -0000000000004020 0000000800000007 R_X86_64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.14 + 0 -0000000000004028 0000000900000007 R_X86_64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.2.5 + 0 +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 12 entries: +Symbol table '.dynsym' contains 15 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.2.5 (2) - 2: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) - 3: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.2.5 (2) - 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.2.5 (2) - 6: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.2.5 (2) - 7: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.14 (4) - 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.2.5 (2) - 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 11: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 (2) + 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 44 entries: +Symbol table '.symtab' contains 100 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o - 2: 000000000000037c 32 OBJECT LOCAL DEFAULT 4 __abi_tag - 3: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 4: 00000000000010d0 0 FUNC LOCAL DEFAULT 15 deregister_tm_clones - 5: 0000000000001100 0 FUNC LOCAL DEFAULT 15 register_tm_clones - 6: 0000000000001140 0 FUNC LOCAL DEFAULT 15 __do_global_dtors_aux - 7: 0000000000004050 1 OBJECT LOCAL DEFAULT 26 completed.0 - 8: 0000000000003dd8 0 OBJECT LOCAL DEFAULT 21 __do_global_dtors_aux_fini_array_entry - 9: 0000000000001180 0 FUNC LOCAL DEFAULT 15 frame_dummy - 10: 0000000000003dd0 0 OBJECT LOCAL DEFAULT 20 __frame_dummy_init_array_entry - 11: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 12: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 13: 00000000000020d8 0 OBJECT LOCAL DEFAULT 19 __FRAME_END__ - 14: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 15: 0000000000003de0 0 OBJECT LOCAL DEFAULT 22 _DYNAMIC - 16: 0000000000002004 0 NOTYPE LOCAL DEFAULT 18 __GNU_EH_FRAME_HDR - 17: 0000000000003fe8 0 OBJECT LOCAL DEFAULT 24 _GLOBAL_OFFSET_TABLE_ - 18: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.2.5 - 19: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 20: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 21: 0000000000004030 0 NOTYPE WEAK DEFAULT 25 data_start - 22: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.2.5 - 23: 000000000000404c 0 NOTYPE GLOBAL DEFAULT 25 _edata - 24: 0000000000001244 0 FUNC GLOBAL HIDDEN 16 _fini - 25: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.2.5 - 26: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.2.5 - 27: 0000000000004040 1 OBJECT GLOBAL DEFAULT 25 password - 28: 0000000000004030 0 NOTYPE GLOBAL DEFAULT 25 __data_start - 29: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 30: 0000000000004038 0 OBJECT GLOBAL HIDDEN 25 __dso_handle - 31: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.14 - 32: 0000000000002000 4 OBJECT GLOBAL DEFAULT 17 _IO_stdin_used - 33: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.2.5 - 34: 0000000000004060 0 NOTYPE GLOBAL DEFAULT 26 _end - 35: 00000000000010a0 34 FUNC GLOBAL DEFAULT 15 _start - 36: 0000000000004058 8 OBJECT GLOBAL DEFAULT 26 buf - 37: 0000000000004041 11 OBJECT GLOBAL DEFAULT 25 stext - 38: 000000000000404c 0 NOTYPE GLOBAL DEFAULT 26 __bss_start - 39: 0000000000001190 177 FUNC GLOBAL DEFAULT 15 main - 40: 0000000000004050 0 OBJECT GLOBAL HIDDEN 25 __TMC_END__ - 41: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 42: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 - 43: 0000000000001000 0 FUNC GLOBAL HIDDEN 12 _init + 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: 00000000000009c4 0 SECTION LOCAL DEFAULT 15 .fini + 16: 00000000000009d8 0 SECTION LOCAL DEFAULT 16 .rodata + 17: 00000000000009dc 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr + 18: 0000000000000a18 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: 0000000000000a2c 0 NOTYPE LOCAL DEFAULT 18 $d + 32: 00000000000009d8 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: 00000000000009c4 0 NOTYPE LOCAL DEFAULT 15 $x + 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 39: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x + 40: 00000000000009d0 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: 0000000000000a40 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: 0000000000000aa0 0 NOTYPE LOCAL DEFAULT 18 $d.4 + 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 62: 0000000000000adc 0 NOTYPE LOCAL DEFAULT 18 $d + 63: 0000000000000adc 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ + 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 65: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 66: 00000000000009dc 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: 00000000000009c4 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: 00000000000009d8 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 176 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/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 index b503d2aa0..beec69be2 100644 --- 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 @@ -1,760 +1,762 @@ 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 2400 20 2400)\n(code-region 1984 416 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 140)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2400 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2400 20)\n(llvm:code-entry .text 1984 416)\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 2424 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 2696)\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 2424 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 2696)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2488 208 2488)\n(llvm:section-entry .eh_frame_hdr 2424 60 2424)\n(llvm:section-entry .rodata 2420 4 2420)\n(llvm:section-entry .fini 2400 20 2400)\n(llvm:section-entry .text 1984 416 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 140 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2400 0 2400 2400)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2696 0)\n(mapped 130504 676 64968)\n(named-region 0 2696 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 416 .text)\n(named-region 2400 20 .fini)\n(named-region 2420 4 .rodata)\n(named-region 2424 60 .eh_frame_hdr)\n(named-region 2488 208 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2400 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 416)\n(section 2400 20)\n(section 2420 4)\n(section 2424 60)\n(section 2488 208)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2696 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 140 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2400 2400)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x88\x0a\x00\x00\x00\x00\x00\x00\x88\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x88\x0a\x00\x00\x00\x00\x00\x00\x88\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\x78\x09\x00\x00\x00\x00\x00\x00\x78\x09\x00\x00\x00\x00\x00\x00\x78\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\x5b\x10\x8b\xba\x47\xb7\xda\x9b\xd0\xcb\x03\x1e\x2f\x08\xb4\x7c\x89\x28\xe0\x38\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"), -Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\x88\x0a\x00\x00\x00\x00\x00\x00\x88\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\x78\x09\x00\x00\x00\x00\x00\x00\x78\x09\x00\x00\x00\x00\x00\x00\x78\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\x5b\x10\x8b\xba\x47\xb7\xda\x9b\xd0\xcb\x03\x1e\x2f\x08\xb4\x7c\x89\x28\xe0\x38\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xa8\x3e\x40\xf9\x1f\x11\x00\x39\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7c\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x88\xff\xff\x97\xa0\x3e\x40\xf9"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\x5b\x10\x8b\xba\x47\xb7\xda\x9b\xd0\xcb\x03\x1e\x2f\x08\xb4\x7c\x89\x28\xe0\x38"), +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(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x960, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x974, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x978, "\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", 0x9B8, "\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", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x60\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".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", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\x9a\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\x87\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x7f\xff\xff\x97\xe0\x03\x13\xaa\x9d\xff\xff\x97\xa8\x3e\x40\xf9\x1f\x11\x00\x39\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x7c\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x88\xff\xff\x97\xa0\x3e\x40\xf9\x96\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,0xA87), Attr("segment","02 0 2696")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +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,0x947), Attr("section","\".symtab\"")), -Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +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,0x2B3), Attr("section","\".gnu.hash\"")), -Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), -Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), -Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), -Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), -Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), -Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), -Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x95F), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x95F), Attr("symbol-info","main 0x8D4 140")), -Annotation(Region(0x960,0x973), Attr("section","\".fini\"")), -Annotation(Region(0x974,0x977), Attr("section","\".rodata\"")), -Annotation(Region(0x978,0x9B3), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x9B8,0xA87), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), -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(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(0x7C0,0x95F), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x95F), Attr("code-region","()")), -Annotation(Region(0x960,0x973), Attr("code-region","()"))]), -Program(Tid(2_109, "%0000083d"), Attrs([]), - Subs([Sub(Tid(2_081, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_110, "%0000083e"), +Annotation(Region(0x800,0x99F), Attr("section","\".text\"")), +Annotation(Region(0x800,0x99F), Attr("code-region","()")), +Annotation(Region(0x9A0,0x9B3), Attr("code-region","()"))]), +Program(Tid(2_263, "%000008d7"), Attrs([]), + Subs([Sub(Tid(2_192, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_264, "%000008d8"), 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_243, "@__cxa_finalize"), - Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_663, "%0000067f"), Attrs([Attr("address","0x740"), + Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_663, "%0000067f"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_671, "%00000687"), Attrs([Attr("address","0x744"), +Def(Tid(1_671, "%00000687"), 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_678, "%0000068e"), Attrs([Attr("address","0x748"), +Def(Tid(1_678, "%0000068e"), 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_683, "%00000693"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_082, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_111, "%0000083f"), +Sub(Tid(2_193, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_265, "%000008d9"), 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(766, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(773, "%00000305"), - Attrs([Attr("address","0x880"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(773, "%00000305"), + Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(778, "%0000030a"), Attrs([Attr("address","0x880"), +Def(Tid(778, "%0000030a"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x880"), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(787, "%00000313"), Attrs([Attr("address","0x880"), +Def(Tid(787, "%00000313"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), Var("#34",Imm(64))), Def(Tid(794, "%0000031a"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(802, "%00000322"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + 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(808, "%00000328"), Attrs([Attr("address","0x88C"), +Def(Tid(808, "%00000328"), Attrs([Attr("address","0x8CC"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(817, "%00000331"), Attrs([Attr("address","0x890"), +Def(Tid(817, "%00000331"), Attrs([Attr("address","0x8D0"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(829, "%0000033d"), Attrs([Attr("address","0x894"), +Def(Tid(829, "%0000033d"), Attrs([Attr("address","0x8D4"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(823, "%00000337"), Attrs([Attr("address","0x894"), +Jmps([Goto(Tid(823, "%00000337"), Attrs([Attr("address","0x8D4"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(821, "%00000335"))), Goto(Tid(2_083, "%00000823"), Attrs([]), +Direct(Tid(821, "%00000335"))), Goto(Tid(2_253, "%000008cd"), Attrs([]), Int(1,1), Direct(Tid(1_177, "%00000499")))])), Blk(Tid(1_177, "%00000499"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x898"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x8D8"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x89C"), +Def(Tid(1_189, "%000004a5"), 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)), -Def(Tid(1_201, "%000004b1"), Attrs([Attr("address","0x8A0"), +Def(Tid(1_201, "%000004b1"), Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), Var("#86",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_195, "%000004ab"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), Var("#86",Imm(1)), Direct(Tid(1_193, "%000004a9"))), -Goto(Tid(2_084, "%00000824"), Attrs([]), Int(1,1), +Goto(Tid(2_254, "%000008ce"), Attrs([]), Int(1,1), Direct(Tid(1_225, "%000004c9")))])), Blk(Tid(1_225, "%000004c9"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_229, "%000004cd"), Attrs([Attr("address","0x8A4"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_229, "%000004cd"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_237, "%000004d5"), 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_242, "%000004da"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_081, "@__cxa_finalize")),Direct(Tid(1_193, "%000004a9"))))])), -Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_208, "%000004b8"), Attrs([Attr("address","0x8B0"), +Def(Tid(1_242, "%000004da"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Int(1,1), +(Direct(Tid(2_192, "@__cxa_finalize")),Direct(Tid(1_193, "%000004a9"))))])), +Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_208, "%000004b8"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_095, "@deregister_tm_clones")),Direct(Tid(1_210, "%000004ba"))))])), -Blk(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_206, "@deregister_tm_clones")),Direct(Tid(1_210, "%000004ba"))))])), +Blk(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x8F4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_223, "%000004c7"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_085, "%00000825"), Attrs([]), Int(1,1), +Jmps([Goto(Tid(2_255, "%000008cf"), Attrs([]), Int(1,1), Direct(Tid(821, "%00000335")))])), Blk(Tid(821, "%00000335"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(837, "%00000345"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(837, "%00000345"), + 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(847, "%0000034f"), Attrs([Attr("address","0x8C0"), +Def(Tid(847, "%0000034f"), 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(851, "%00000353"), Attrs([Attr("address","0x8C0"), +Def(Tid(851, "%00000353"), 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(854, "%00000356"), Attrs([Attr("address","0x8C0"), +Def(Tid(854, "%00000356"), 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(859, "%0000035b"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_086, "@__libc_start_main"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_197, "@__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_112, "%00000840"), +Attr("address","0x780"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_266, "%000008da"), 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_113, "%00000841"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_267, "%000008db"), 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_114, "%00000842"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_268, "%000008dc"), 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_115, "%00000843"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_269, "%000008dd"), 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_116, "%00000844"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_270, "%000008de"), 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(578, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_638, "%00000666"), Attrs([Attr("address","0x730"), + Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_638, "%00000666"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_646, "%0000066e"), Attrs([Attr("address","0x734"), +Def(Tid(1_646, "%0000066e"), 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_653, "%00000675"), Attrs([Attr("address","0x738"), +Def(Tid(1_653, "%00000675"), 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_658, "%0000067a"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_087, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x960")]), - "_fini", Args([Arg(Tid(2_117, "%00000845"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_198, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A0")]), + "_fini", Args([Arg(Tid(2_271, "%000008df"), 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","0x960")]), Phis([]), Defs([Def(Tid(41, "%00000029"), - Attrs([Attr("address","0x964"), + Attrs([Attr("address","0x9A0")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9A4"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x964"), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9A4"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x964"), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9A4"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x964"), +Def(Tid(55, "%00000037"), Attrs([Attr("address","0x9A4"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x968"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9A8"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x96C"), +Def(Tid(72, "%00000048"), 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(76, "%0000004c"), Attrs([Attr("address","0x96C"), +Def(Tid(76, "%0000004c"), 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(79, "%0000004f"), Attrs([Attr("address","0x96C"), +Def(Tid(79, "%0000004f"), 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(84, "%00000054"), - Attrs([Attr("address","0x970"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_088, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_118, "%00000846"), + Attrs([Attr("address","0x9B0"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_199, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), + "_init", Args([Arg(Tid(2_272, "%000008e0"), 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_861, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_870, "%0000074e"), Attrs([Attr("address","0x6DC"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_972, "@_init"), + Attrs([Attr("address","0x728")]), Phis([]), +Defs([Def(Tid(1_981, "%000007bd"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#117",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_875, "%00000753"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_986, "%000007c2"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#117",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_880, "%00000758"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_991, "%000007c7"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#117",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_995, "%000007cb"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#117",Imm(64))), Def(Tid(1_891, "%00000763"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_896, "%00000768"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_898, "%0000076a"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_093, "@call_weak_fn")),Direct(Tid(1_900, "%0000076c"))))])), -Blk(Tid(1_900, "%0000076c"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_908, "%00000774"), Attrs([Attr("address","0x6E8"), +Var("#117",Imm(64))), Def(Tid(2_002, "%000007d2"), + Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_007, "%000007d7"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(2_009, "%000007d9"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), +(Direct(Tid(2_204, "@call_weak_fn")),Direct(Tid(2_011, "%000007db"))))])), +Blk(Tid(2_011, "%000007db"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(2_019, "%000007e3"), 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_912, "%00000778"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_023, "%000007e7"), 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_915, "%0000077b"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_026, "%000007ea"), 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_920, "%00000780"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_089, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_119, "%00000847"), - 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(504, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(510, "%000001fe"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(516, "%00000204"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(524, "%0000020c"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(532, "%00000214"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_031, "%000007ef"), + Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_200, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("stub","()"), Attr("entry-point","()")]), "_start", + Args([Arg(Tid(2_273, "%000008e1"), 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(504, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(510, "%000001fe"), Attrs([Attr("address","0x804"), +Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), +Def(Tid(516, "%00000204"), Attrs([Attr("address","0x808"), +Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), +Def(Tid(524, "%0000020c"), Attrs([Attr("address","0x80C"), +Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), +Def(Tid(532, "%00000214"), 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(539, "%0000021b"), Attrs([Attr("address","0x7D4"), +Def(Tid(539, "%0000021b"), Attrs([Attr("address","0x814"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(546, "%00000222"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(552, "%00000228"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), Def(Tid(560, "%00000230"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + 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(566, "%00000236"), Attrs([Attr("address","0x7E4"), +Def(Tid(566, "%00000236"), Attrs([Attr("address","0x824"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(572, "%0000023c"), Attrs([Attr("address","0x7E8"), +Def(Tid(572, "%0000023c"), Attrs([Attr("address","0x828"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(577, "%00000241"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(580, "%00000244"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_086, "@__libc_start_main")),Direct(Tid(582, "%00000246"))))])), -Blk(Tid(582, "%00000246"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(585, "%00000249"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(588, "%0000024c"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_092, "@abort")),Direct(Tid(2_090, "%0000082a"))))])), -Blk(Tid(2_090, "%0000082a"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_091, "%0000082b"), Attrs([]), Int(1,1), -(Direct(Tid(2_093, "@call_weak_fn")),))]))])), Sub(Tid(2_092, "@abort"), +Def(Tid(577, "%00000241"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(580, "%00000244"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Int(1,1), +(Direct(Tid(2_197, "@__libc_start_main")),Direct(Tid(582, "%00000246"))))])), +Blk(Tid(582, "%00000246"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(585, "%00000249"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(588, "%0000024c"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Int(1,1), +(Direct(Tid(2_203, "@abort")),Direct(Tid(2_256, "%000008d0"))))])), +Blk(Tid(2_256, "%000008d0"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_257, "%000008d1"), Attrs([]), Int(1,1), +(Direct(Tid(2_204, "@call_weak_fn")),))]))])), Sub(Tid(2_203, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(586, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_763, "%000006e3"), Attrs([Attr("address","0x780"), +Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(586, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_763, "%000006e3"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_771, "%000006eb"), Attrs([Attr("address","0x784"), +Def(Tid(1_771, "%000006eb"), 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_778, "%000006f2"), Attrs([Attr("address","0x788"), +Def(Tid(1_778, "%000006f2"), 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_783, "%000006f7"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_093, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_120, "%00000848"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_204, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_274, "%000008e2"), 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(590, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(594, "%00000252"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(594, "%00000252"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), Def(Tid(602, "%0000025a"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + 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)), -Def(Tid(614, "%00000266"), Attrs([Attr("address","0x7FC"), +Def(Tid(614, "%00000266"), Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(608, "%00000260"), - Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), Direct(Tid(606, "%0000025e"))), -Goto(Tid(2_094, "%0000082e"), Attrs([]), Int(1,1), +Goto(Tid(2_258, "%000008d2"), Attrs([]), Int(1,1), Direct(Tid(1_325, "%0000052d")))])), Blk(Tid(606, "%0000025e"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(619, "%0000026b"), Attrs([Attr("address","0x804"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(619, "%0000026b"), Attrs([Attr("address","0x844"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_328, "%00000530"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), +Blk(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_328, "%00000530"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0x80")]), Int(1,1), Direct(Tid(1_326, "@__gmon_start__")))])), Blk(Tid(1_326, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_738, "%000006ca"), Attrs([Attr("address","0x770"), + Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_738, "%000006ca"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_746, "%000006d2"), Attrs([Attr("address","0x774"), +Def(Tid(1_746, "%000006d2"), 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_753, "%000006d9"), Attrs([Attr("address","0x778"), +Def(Tid(1_753, "%000006d9"), 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_758, "%000006de"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_095, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_121, "%00000849"), +Sub(Tid(2_206, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_275, "%000008e3"), 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(625, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(629, "%00000275"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(629, "%00000275"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), Def(Tid(636, "%0000027c"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x70")]), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(642, "%00000282"), Attrs([Attr("address","0x818"), +Def(Tid(642, "%00000282"), Attrs([Attr("address","0x858"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(649, "%00000289"), Attrs([Attr("address","0x81C"), +Def(Tid(649, "%00000289"), 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","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("#16",Imm(64)), PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(661, "%00000295"), Attrs([Attr("address","0x820"), +Def(Tid(661, "%00000295"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), Extract(63,63,Var("#16",Imm(64)))), Def(Tid(664, "%00000298"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(667, "%0000029b"), Attrs([Attr("address","0x820"), +Def(Tid(667, "%0000029b"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(670, "%0000029e"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(684, "%000002ac"), Attrs([Attr("address","0x824"), +Def(Tid(684, "%000002ac"), Attrs([Attr("address","0x864"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(678, "%000002a6"), Attrs([Attr("address","0x824"), +Jmps([Goto(Tid(678, "%000002a6"), Attrs([Attr("address","0x864"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(676, "%000002a4"))), Goto(Tid(2_096, "%00000830"), Attrs([]), +Direct(Tid(676, "%000002a4"))), Goto(Tid(2_259, "%000008d3"), Attrs([]), Int(1,1), Direct(Tid(1_286, "%00000506")))])), Blk(Tid(1_286, "%00000506"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x828"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x868"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_298, "%00000512"), Attrs([Attr("address","0x82C"), +Def(Tid(1_298, "%00000512"), 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)), -Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x830"), +Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), Var("#94",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_303, "%00000517"), - Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), Var("#94",Imm(1)), Direct(Tid(676, "%000002a4"))), -Goto(Tid(2_097, "%00000831"), Attrs([]), Int(1,1), +Goto(Tid(2_260, "%000008d4"), Attrs([]), Int(1,1), Direct(Tid(1_312, "%00000520")))])), Blk(Tid(676, "%000002a4"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(689, "%000002b1"), Attrs([Attr("address","0x83C"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(689, "%000002b1"), Attrs([Attr("address","0x87C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_312, "%00000520"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_318, "%00000526"), Attrs([Attr("address","0x834"), +Blk(Tid(1_312, "%00000520"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_318, "%00000526"), Attrs([Attr("address","0x874"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_323, "%0000052b"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_323, "%0000052b"), Attrs([Attr("address","0x878"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_098, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_122, "%0000084a"), +Sub(Tid(2_209, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_276, "%000008e4"), 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(865, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(867, "%00000363"), Attrs([Attr("address","0x8D0"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(867, "%00000363"), Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_105, "@register_tm_clones")),))]))])), Sub(Tid(2_099, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_123, "%0000084b"), +(Direct(Tid(2_216, "@register_tm_clones")),))]))])), Sub(Tid(2_210, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_277, "%000008e5"), 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_121, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_813, "%00000715"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_121, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_813, "%00000715"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_821, "%0000071d"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_821, "%0000071d"), 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_828, "%00000724"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_828, "%00000724"), 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_833, "%00000729"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_100, "@main"), + Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_211, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_124, "%0000084c"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_278, "%000008e6"), 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_125, "%0000084d"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_279, "%000008e7"), 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_126, "%0000084e"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_280, "%000008e8"), 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(869, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(876, "%0000036c"), - Attrs([Attr("address","0x8D4"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(876, "%0000036c"), + Attrs([Attr("address","0x914"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(881, "%00000371"), Attrs([Attr("address","0x8D4"), +Def(Tid(881, "%00000371"), Attrs([Attr("address","0x914"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(886, "%00000376"), Attrs([Attr("address","0x8D4"), +Def(Tid(886, "%00000376"), Attrs([Attr("address","0x914"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(890, "%0000037a"), Attrs([Attr("address","0x8D4"), +Def(Tid(890, "%0000037a"), Attrs([Attr("address","0x914"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), Var("#42",Imm(64))), Def(Tid(898, "%00000382"), - Attrs([Attr("address","0x8D8"), Attr("insn","str x21, [sp, #0x10]")]), + 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(906, "%0000038a"), Attrs([Attr("address","0x8DC"), +Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x91C"), Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#47",Imm(64)), PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(911, "%0000038f"), - Attrs([Attr("address","0x8DC"), Attr("insn","stp x20, x19, [sp, #0x20]")]), + Attrs([Attr("address","0x91C"), Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#47",Imm(64)),Var("R20",Imm(64)),LittleEndian(),64)), -Def(Tid(916, "%00000394"), Attrs([Attr("address","0x8DC"), +Def(Tid(916, "%00000394"), Attrs([Attr("address","0x91C"), Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#47",Imm(64)),Int(8,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x8E0"), +Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x920"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x8E4"), +Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x924"), Attr("insn","mov w0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x8E8"), -Attr("insn","bl #-0x198")]), Var("R30",Imm(64)), Int(2284,64))]), -Jmps([Call(Tid(938, "%000003aa"), Attrs([Attr("address","0x8E8"), -Attr("insn","bl #-0x198")]), Int(1,1), -(Direct(Tid(2_101, "@malloc")),Direct(Tid(940, "%000003ac"))))])), -Blk(Tid(940, "%000003ac"), Attrs([Attr("address","0x8EC")]), Phis([]), -Defs([Def(Tid(944, "%000003b0"), Attrs([Attr("address","0x8EC"), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x188")]), Var("R30",Imm(64)), Int(2348,64))]), +Jmps([Call(Tid(938, "%000003aa"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x188")]), Int(1,1), +(Direct(Tid(2_212, "@malloc")),Direct(Tid(940, "%000003ac"))))])), +Blk(Tid(940, "%000003ac"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(944, "%000003b0"), Attrs([Attr("address","0x92C"), Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), -Def(Tid(950, "%000003b6"), Attrs([Attr("address","0x8F0"), +Def(Tid(950, "%000003b6"), Attrs([Attr("address","0x930"), Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), -Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8F4"), +Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x934"), Attr("insn","add x20, x20, #0x61")]), Var("R20",Imm(64)), PLUS(Var("R20",Imm(64)),Int(97,64))), Def(Tid(965, "%000003c5"), - Attrs([Attr("address","0x8F8"), Attr("insn","mov x19, x0")]), + Attrs([Attr("address","0x938"), Attr("insn","mov x19, x0")]), Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(973, "%000003cd"), - Attrs([Attr("address","0x8FC"), Attr("insn","str x0, [x21, #0x78]")]), + 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(981, "%000003d5"), Attrs([Attr("address","0x900"), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x940"), Attr("insn","mov x0, x20")]), Var("R0",Imm(64)), Var("R20",Imm(64))), -Def(Tid(986, "%000003da"), Attrs([Attr("address","0x904"), -Attr("insn","bl #-0x1e4")]), Var("R30",Imm(64)), Int(2312,64))]), -Jmps([Call(Tid(989, "%000003dd"), Attrs([Attr("address","0x904"), -Attr("insn","bl #-0x1e4")]), Int(1,1), -(Direct(Tid(2_108, "@strlen")),Direct(Tid(991, "%000003df"))))])), -Blk(Tid(991, "%000003df"), Attrs([Attr("address","0x908")]), Phis([]), -Defs([Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x908"), +Def(Tid(986, "%000003da"), Attrs([Attr("address","0x944"), +Attr("insn","bl #-0x1d4")]), Var("R30",Imm(64)), Int(2376,64))]), +Jmps([Call(Tid(989, "%000003dd"), Attrs([Attr("address","0x944"), +Attr("insn","bl #-0x1d4")]), Int(1,1), +(Direct(Tid(2_219, "@strlen")),Direct(Tid(991, "%000003df"))))])), +Blk(Tid(991, "%000003df"), Attrs([Attr("address","0x948")]), Phis([]), +Defs([Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x948"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x90C"), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x94C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x910"), +Def(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x950"), Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), -Def(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x914"), -Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2328,64))]), -Jmps([Call(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x914"), -Attr("insn","bl #-0x204")]), Int(1,1), -(Direct(Tid(2_102, "@memcpy")),Direct(Tid(1_023, "%000003ff"))))])), -Blk(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x918"), +Def(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2392,64))]), +Jmps([Call(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_213, "@memcpy")),Direct(Tid(1_023, "%000003ff"))))])), +Blk(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x958")]), Phis([]), +Defs([Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x958"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x91C"), -Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2336,64))]), -Jmps([Call(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x91C"), -Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_104, "@puts")),Direct(Tid(1_039, "%0000040f"))))])), -Blk(Tid(1_039, "%0000040f"), Attrs([Attr("address","0x920")]), Phis([]), -Defs([Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x920"), +Def(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2400,64))]), +Jmps([Call(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x17c")]), Int(1,1), +(Direct(Tid(2_215, "@puts")),Direct(Tid(1_039, "%0000040f"))))])), +Blk(Tid(1_039, "%0000040f"), Attrs([Attr("address","0x960")]), Phis([]), +Defs([Def(Tid(1_045, "%00000415"), 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(1_053, "%0000041d"), Attrs([Attr("address","0x924"), +Def(Tid(1_053, "%0000041d"), 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),BigEndian(),8)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x928"), +Def(Tid(1_061, "%00000425"), 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(1_069, "%0000042d"), Attrs([Attr("address","0x92C"), +Def(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x96C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x930"), -Attr("insn","bl #-0x210")]), Var("R30",Imm(64)), Int(2356,64))]), -Jmps([Call(Tid(1_076, "%00000434"), Attrs([Attr("address","0x930"), -Attr("insn","bl #-0x210")]), Int(1,1), -(Direct(Tid(2_108, "@strlen")),Direct(Tid(1_078, "%00000436"))))])), -Blk(Tid(1_078, "%00000436"), Attrs([Attr("address","0x934")]), Phis([]), -Defs([Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x934"), +Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2420,64))]), +Jmps([Call(Tid(1_076, "%00000434"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x200")]), Int(1,1), +(Direct(Tid(2_219, "@strlen")),Direct(Tid(1_078, "%00000436"))))])), +Blk(Tid(1_078, "%00000436"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x974"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_092, "%00000444"), Attrs([Attr("address","0x938"), +Def(Tid(1_092, "%00000444"), Attrs([Attr("address","0x978"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x93C"), +Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x97C"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x940"), -Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2372,64))]), -Jmps([Call(Tid(1_107, "%00000453"), Attrs([Attr("address","0x940"), -Attr("insn","bl #-0x1e0")]), Int(1,1), -(Direct(Tid(2_103, "@memset")),Direct(Tid(1_109, "%00000455"))))])), -Blk(Tid(1_109, "%00000455"), Attrs([Attr("address","0x944")]), Phis([]), -Defs([Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x944"), +Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2436,64))]), +Jmps([Call(Tid(1_107, "%00000453"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x1d0")]), Int(1,1), +(Direct(Tid(2_214, "@memset")),Direct(Tid(1_109, "%00000455"))))])), +Blk(Tid(1_109, "%00000455"), Attrs([Attr("address","0x984")]), Phis([]), +Defs([Def(Tid(1_115, "%0000045b"), 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_120, "%00000460"), Attrs([Attr("address","0x948"), -Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2380,64))]), -Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x948"), -Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_099, "@free")),Direct(Tid(1_125, "%00000465"))))])), -Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x94C")]), Phis([]), -Defs([Def(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x94C"), +Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x988"), +Attr("insn","bl #-0x198")]), Var("R30",Imm(64)), Int(2444,64))]), +Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x988"), +Attr("insn","bl #-0x198")]), Int(1,1), +(Direct(Tid(2_210, "@free")),Direct(Tid(1_125, "%00000465"))))])), +Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x98C")]), Phis([]), +Defs([Def(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x98C"), Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_141, "%00000475"), Attrs([Attr("address","0x950"), +Def(Tid(1_141, "%00000475"), Attrs([Attr("address","0x990"), Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R20",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),LittleEndian(),64)), -Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x950"), +Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x990"), Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), -Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x954"), +Def(Tid(1_153, "%00000481"), 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_163, "%0000048b"), Attrs([Attr("address","0x958"), +Def(Tid(1_163, "%0000048b"), 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_167, "%0000048f"), Attrs([Attr("address","0x958"), +Def(Tid(1_167, "%0000048f"), 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_170, "%00000492"), Attrs([Attr("address","0x958"), +Def(Tid(1_170, "%00000492"), 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_175, "%00000497"), - Attrs([Attr("address","0x95C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_101, "@malloc"), + Attrs([Attr("address","0x99C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_212, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_127, "%0000084f"), Attrs([Attr("alloc-size","()"), +Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_281, "%000008e9"), 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_128, "%00000850"), +Var("R0",Imm(64)), In()), Arg(Tid(2_282, "%000008ea"), 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(936, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(936, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_696, "%000006a0"), Attrs([Attr("address","0x754"), +Def(Tid(1_696, "%000006a0"), 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_703, "%000006a7"), Attrs([Attr("address","0x758"), +Def(Tid(1_703, "%000006a7"), 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_708, "%000006ac"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_102, "@memcpy"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_213, "@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_129, "%00000851"), Attrs([Attr("nonnull","()"), +Attr("address","0x760"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_283, "%000008eb"), 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_130, "%00000852"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_284, "%000008ec"), 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_131, "%00000853"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_285, "%000008ed"), 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_132, "%00000854"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_286, "%000008ee"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_019, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_588, "%00000634"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_019, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_588, "%00000634"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_596, "%0000063c"), Attrs([Attr("address","0x714"), +Def(Tid(1_596, "%0000063c"), 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_603, "%00000643"), Attrs([Attr("address","0x718"), +Def(Tid(1_603, "%00000643"), Attrs([Attr("address","0x768"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), Var("R16",Imm(64)))]), Jmps([Call(Tid(1_608, "%00000648"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_103, "@memset"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_214, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_133, "%00000855"), Attrs([Attr("nonnull","()"), +Attr("address","0x7B0"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_287, "%000008ef"), 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_134, "%00000856"), +Both()), Arg(Tid(2_288, "%000008f0"), 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_135, "%00000857"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_289, "%000008f1"), 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_136, "%00000858"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_290, "%000008f2"), 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_105, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_713, "%000006b1"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_105, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_713, "%000006b1"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_721, "%000006b9"), Attrs([Attr("address","0x764"), +Def(Tid(1_721, "%000006b9"), 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_728, "%000006c0"), Attrs([Attr("address","0x768"), +Def(Tid(1_728, "%000006c0"), 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_733, "%000006c5"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_104, "@puts"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_215, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_137, "%00000859"), Attrs([Attr("c.layout","*[char : 8]"), +Attr("address","0x7E0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_291, "%000008f3"), 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_138, "%0000085a"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_292, "%000008f4"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_035, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_788, "%000006fc"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_035, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_788, "%000006fc"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_796, "%00000704"), Attrs([Attr("address","0x794"), +Def(Tid(1_796, "%00000704"), 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_803, "%0000070b"), Attrs([Attr("address","0x798"), +Def(Tid(1_803, "%0000070b"), 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_808, "%00000710"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_105, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_139, "%0000085b"), +Sub(Tid(2_216, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_293, "%000008f5"), 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(691, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(691, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x880"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(702, "%000002be"), Attrs([Attr("address","0x844"), +Def(Tid(702, "%000002be"), Attrs([Attr("address","0x884"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(708, "%000002c4"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), Def(Tid(715, "%000002cb"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x70")]), + 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","0x850"), +Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x890"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(730, "%000002da"), - Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x858"), +Def(Tid(738, "%000002e2"), 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,64)))), -Def(Tid(745, "%000002e9"), Attrs([Attr("address","0x85C"), +Def(Tid(745, "%000002e9"), Attrs([Attr("address","0x89C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(757, "%000002f5"), - Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(751, "%000002ef"), Attrs([Attr("address","0x860"), +Jmps([Goto(Tid(751, "%000002ef"), Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(749, "%000002ed"))), Goto(Tid(2_106, "%0000083a"), Attrs([]), +Direct(Tid(749, "%000002ed"))), Goto(Tid(2_261, "%000008d5"), Attrs([]), Int(1,1), Direct(Tid(1_247, "%000004df")))])), Blk(Tid(1_247, "%000004df"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x864"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x868"), +Def(Tid(1_259, "%000004eb"), 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)), -Def(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x86C"), +Def(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), Var("#89",Imm(1)), EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_264, "%000004f0"), - Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), Var("#89",Imm(1)), Direct(Tid(749, "%000002ed"))), -Goto(Tid(2_107, "%0000083b"), Attrs([]), Int(1,1), +Goto(Tid(2_262, "%000008d6"), Attrs([]), Int(1,1), Direct(Tid(1_273, "%000004f9")))])), Blk(Tid(749, "%000002ed"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(762, "%000002fa"), Attrs([Attr("address","0x878"), + Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), +Jmps([Call(Tid(762, "%000002fa"), Attrs([Attr("address","0x8B8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x870"), +Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x8B0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_284, "%00000504"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_284, "%00000504"), Attrs([Attr("address","0x8B4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_108, "@strlen"), +Sub(Tid(2_219, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_140, "%0000085c"), Attrs([Attr("nonnull","()"), +Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_294, "%000008f6"), 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_141, "%0000085d"), +In()), Arg(Tid(2_295, "%000008f7"), 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(987, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_613, "%0000064d"), Attrs([Attr("address","0x720"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_613, "%0000064d"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_621, "%00000655"), Attrs([Attr("address","0x724"), +Def(Tid(1_621, "%00000655"), 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_628, "%0000065c"), Attrs([Attr("address","0x728"), +Def(Tid(1_628, "%0000065c"), 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_633, "%00000661"), - Attrs([Attr("address","0x72C"), Attr("insn","br x17")]), Int(1,1), + 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 index 50ab96027..86a3d38de 100644 --- 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 @@ -1,6 +1,6 @@ -0000083d: program -00000821: sub __cxa_finalize(__cxa_finalize_result) -0000083e: __cxa_finalize_result :: out u32 = low:32[R0] +000008d7: program +00000890: sub __cxa_finalize(__cxa_finalize_result) +000008d8: __cxa_finalize_result :: out u32 = low:32[R0] 000004db: 0000067f: R16 := 0x20000 @@ -8,8 +8,8 @@ 0000068e: R16 := R16 + 0x18 00000693: call R17 with noreturn -00000822: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000083f: __do_global_dtors_aux_result :: out u32 = low:32[R0] +00000891: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008d9: __do_global_dtors_aux_result :: out u32 = low:32[R0] 000002fe: 00000305: #34 := R31 - 0x20 @@ -22,29 +22,29 @@ 00000331: R0 := pad:32[mem[R19 + 0x70]] 0000033d: #36 := ~~0:0[R0] 00000337: when #36 goto %00000335 -00000823: goto %00000499 +000008cd: goto %00000499 00000499: 0000049d: R0 := 0x1F000 000004a5: R0 := mem[R0 + 0xFC8, el]:u64 000004b1: #86 := R0 = 0 000004ab: when #86 goto %000004a9 -00000824: goto %000004c9 +000008ce: goto %000004c9 000004c9: 000004cd: R0 := 0x20000 000004d5: R0 := mem[R0 + 0x58, el]:u64 -000004da: R30 := 0x8B0 +000004da: R30 := 0x8F0 000004dd: call @__cxa_finalize with return %000004a9 000004a9: -000004b6: R30 := 0x8B4 +000004b6: R30 := 0x8F4 000004b8: call @deregister_tm_clones with return %000004ba 000004ba: 000004bf: R0 := 1 000004c7: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -00000825: goto %00000335 +000008cf: goto %00000335 00000335: 00000345: R19 := mem[R31 + 0x10, el]:u64 @@ -53,12 +53,12 @@ 00000356: R31 := R31 + 0x20 0000035b: call R30 with noreturn -00000826: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000840: __libc_start_main_main :: in u64 = R0 -00000841: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000842: __libc_start_main_arg3 :: in out u64 = R2 -00000843: __libc_start_main_auxv :: in out u64 = R3 -00000844: __libc_start_main_result :: out u32 = low:32[R0] +00000895: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008da: __libc_start_main_main :: in u64 = R0 +000008db: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008dc: __libc_start_main_arg3 :: in out u64 = R2 +000008dd: __libc_start_main_auxv :: in out u64 = R3 +000008de: __libc_start_main_result :: out u32 = low:32[R0] 00000242: 00000666: R16 := 0x20000 @@ -66,8 +66,8 @@ 00000675: R16 := R16 + 0x10 0000067a: call R17 with noreturn -00000827: sub _fini(_fini_result) -00000845: _fini_result :: out u32 = low:32[R0] +00000896: sub _fini(_fini_result) +000008df: _fini_result :: out u32 = low:32[R0] 00000020: 00000029: #3 := R31 - 0x10 @@ -80,26 +80,26 @@ 0000004f: R31 := R31 + 0x10 00000054: call R30 with noreturn -00000828: sub _init(_init_result) -00000846: _init_result :: out u32 = low:32[R0] +00000897: sub _init(_init_result) +000008e0: _init_result :: out u32 = low:32[R0] -00000745: -0000074e: #117 := R31 - 0x10 -00000753: mem := mem with [#117, el]:u64 <- R29 -00000758: mem := mem with [#117 + 8, el]:u64 <- R30 -0000075c: R31 := #117 -00000763: R29 := R31 -00000768: R30 := 0x6E8 -0000076a: call @call_weak_fn with return %0000076c +000007b4: +000007bd: #117 := R31 - 0x10 +000007c2: mem := mem with [#117, el]:u64 <- R29 +000007c7: mem := mem with [#117 + 8, el]:u64 <- R30 +000007cb: R31 := #117 +000007d2: R29 := R31 +000007d7: R30 := 0x738 +000007d9: call @call_weak_fn with return %000007db -0000076c: -00000774: R29 := mem[R31, el]:u64 -00000778: R30 := mem[R31 + 8, el]:u64 -0000077b: R31 := R31 + 0x10 -00000780: call R30 with noreturn +000007db: +000007e3: R29 := mem[R31, el]:u64 +000007e7: R30 := mem[R31 + 8, el]:u64 +000007ea: R31 := R31 + 0x10 +000007ef: call R30 with noreturn -00000829: sub _start(_start_result) -00000847: _start_result :: out u32 = low:32[R0] +00000898: sub _start(_start_result) +000008e1: _start_result :: out u32 = low:32[R0] 000001f8: 000001fe: R29 := 0 @@ -112,17 +112,17 @@ 00000230: R0 := mem[R0 + 0xFD8, el]:u64 00000236: R3 := 0 0000023c: R4 := 0 -00000241: R30 := 0x7F0 +00000241: R30 := 0x830 00000244: call @__libc_start_main with return %00000246 00000246: -00000249: R30 := 0x7F4 -0000024c: call @abort with return %0000082a +00000249: R30 := 0x834 +0000024c: call @abort with return %000008d0 -0000082a: -0000082b: call @call_weak_fn with noreturn +000008d0: +000008d1: call @call_weak_fn with noreturn -0000082c: sub abort() +0000089b: sub abort() 0000024a: @@ -131,15 +131,15 @@ 000006f2: R16 := R16 + 0x38 000006f7: call R17 with noreturn -0000082d: sub call_weak_fn(call_weak_fn_result) -00000848: call_weak_fn_result :: out u32 = low:32[R0] +0000089c: sub call_weak_fn(call_weak_fn_result) +000008e2: call_weak_fn_result :: out u32 = low:32[R0] 0000024e: 00000252: R0 := 0x1F000 0000025a: R0 := mem[R0 + 0xFD0, el]:u64 00000266: #12 := R0 = 0 00000260: when #12 goto %0000025e -0000082e: goto %0000052d +000008d2: goto %0000052d 0000025e: 0000026b: call R30 with noreturn @@ -153,8 +153,8 @@ 000006d9: R16 := R16 + 0x30 000006de: call R17 with noreturn -0000082f: sub deregister_tm_clones(deregister_tm_clones_result) -00000849: deregister_tm_clones_result :: out u32 = low:32[R0] +0000089e: sub deregister_tm_clones(deregister_tm_clones_result) +000008e3: deregister_tm_clones_result :: out u32 = low:32[R0] 00000271: 00000275: R0 := 0x20000 @@ -170,14 +170,14 @@ & ~63:63[#16] 000002ac: #21 := ZF 000002a6: when #21 goto %000002a4 -00000830: goto %00000506 +000008d3: goto %00000506 00000506: 0000050a: R1 := 0x1F000 00000512: R1 := mem[R1 + 0xFC0, el]:u64 0000051d: #94 := R1 = 0 00000517: when #94 goto %000002a4 -00000831: goto %00000520 +000008d4: goto %00000520 000002a4: 000002b1: call R30 with noreturn @@ -186,14 +186,14 @@ 00000526: R16 := R1 0000052b: call R16 with noreturn -00000832: sub frame_dummy(frame_dummy_result) -0000084a: frame_dummy_result :: out u32 = low:32[R0] +000008a1: sub frame_dummy(frame_dummy_result) +000008e4: frame_dummy_result :: out u32 = low:32[R0] 00000361: 00000363: call @register_tm_clones with noreturn -00000833: sub free(free_ptr) -0000084b: free_ptr :: in out u64 = R0 +000008a2: sub free(free_ptr) +000008e5: free_ptr :: in out u64 = R0 00000461: 00000715: R16 := 0x20000 @@ -201,10 +201,10 @@ 00000724: R16 := R16 + 0x48 00000729: call R17 with noreturn -00000834: sub main(main_argc, main_argv, main_result) -0000084c: main_argc :: in u32 = low:32[R0] -0000084d: main_argv :: in out u64 = R1 -0000084e: main_result :: out u32 = low:32[R0] +000008a3: sub main(main_argc, main_argv, main_result) +000008e6: main_argc :: in u32 = low:32[R0] +000008e7: main_argv :: in out u64 = R1 +000008e8: main_result :: out u32 = low:32[R0] 00000365: 0000036c: #42 := R31 - 0x30 @@ -217,7 +217,7 @@ 00000394: mem := mem with [#47 + 8, el]:u64 <- R19 0000039b: R29 := R31 000003a2: R0 := 0xB -000003a7: R30 := 0x8EC +000003a7: R30 := 0x92C 000003aa: call @malloc with return %000003ac 000003ac: @@ -227,19 +227,19 @@ 000003c5: R19 := R0 000003cd: mem := mem with [R21 + 0x78, el]:u64 <- R0 000003d5: R0 := R20 -000003da: R30 := 0x908 +000003da: R30 := 0x948 000003dd: call @strlen with return %000003df 000003df: 000003e5: R2 := R0 000003ed: R0 := R19 000003f5: R1 := R20 -000003fa: R30 := 0x918 +000003fa: R30 := 0x958 000003fd: call @memcpy with return %000003ff 000003ff: 00000405: R0 := R19 -0000040a: R30 := 0x920 +0000040a: R30 := 0x960 0000040d: call @puts with return %0000040f 0000040f: @@ -247,19 +247,19 @@ 0000041d: mem := mem with [R8 + 4] <- 0 00000425: R19 := mem[R21 + 0x78, el]:u64 0000042d: R0 := R19 -00000432: R30 := 0x934 +00000432: R30 := 0x974 00000434: call @strlen with return %00000436 00000436: 0000043c: R2 := R0 00000444: R0 := R19 0000044b: R1 := 1 -00000450: R30 := 0x944 +00000450: R30 := 0x984 00000453: call @memset with return %00000455 00000455: 0000045b: R0 := mem[R21 + 0x78, el]:u64 -00000460: R30 := 0x94C +00000460: R30 := 0x98C 00000463: call @free with return %00000465 00000465: @@ -272,9 +272,9 @@ 00000492: R31 := R31 + 0x30 00000497: call R30 with noreturn -00000835: sub malloc(malloc_size, malloc_result) -0000084f: malloc_size :: in u64 = R0 -00000850: malloc_result :: out u64 = R0 +000008a4: sub malloc(malloc_size, malloc_result) +000008e9: malloc_size :: in u64 = R0 +000008ea: malloc_result :: out u64 = R0 000003a8: 00000698: R16 := 0x20000 @@ -282,11 +282,11 @@ 000006a7: R16 := R16 + 0x20 000006ac: call R17 with noreturn -00000836: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000851: memcpy_dst :: in out u64 = R0 -00000852: memcpy_src :: in out u64 = R1 -00000853: memcpy_n :: in u64 = R2 -00000854: memcpy_result :: out u64 = R0 +000008a5: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008eb: memcpy_dst :: in out u64 = R0 +000008ec: memcpy_src :: in out u64 = R1 +000008ed: memcpy_n :: in u64 = R2 +000008ee: memcpy_result :: out u64 = R0 000003fb: 00000634: R16 := 0x20000 @@ -294,11 +294,11 @@ 00000643: R16 := R16 00000648: call R17 with noreturn -00000837: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000855: memset_buf :: in out u64 = R0 -00000856: memset_c :: in u32 = low:32[R1] -00000857: memset_n :: in u64 = R2 -00000858: memset_result :: out u64 = R0 +000008a6: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008ef: memset_buf :: in out u64 = R0 +000008f0: memset_c :: in u32 = low:32[R1] +000008f1: memset_n :: in u64 = R2 +000008f2: memset_result :: out u64 = R0 00000451: 000006b1: R16 := 0x20000 @@ -306,9 +306,9 @@ 000006c0: R16 := R16 + 0x28 000006c5: call R17 with noreturn -00000838: sub puts(puts_s, puts_result) -00000859: puts_s :: in u64 = R0 -0000085a: puts_result :: out u32 = low:32[R0] +000008a7: sub puts(puts_s, puts_result) +000008f3: puts_s :: in u64 = R0 +000008f4: puts_result :: out u32 = low:32[R0] 0000040b: 000006fc: R16 := 0x20000 @@ -316,8 +316,8 @@ 0000070b: R16 := R16 + 0x40 00000710: call R17 with noreturn -00000839: sub register_tm_clones(register_tm_clones_result) -0000085b: register_tm_clones_result :: out u32 = low:32[R0] +000008a8: sub register_tm_clones(register_tm_clones_result) +000008f5: register_tm_clones_result :: out u32 = low:32[R0] 000002b3: 000002b7: R0 := 0x20000 @@ -330,14 +330,14 @@ 000002e9: R1 := R1 >> 1 000002f5: #30 := R1 = 0 000002ef: when #30 goto %000002ed -0000083a: goto %000004df +000008d5: goto %000004df 000004df: 000004e3: R2 := 0x1F000 000004eb: R2 := mem[R2 + 0xFE0, el]:u64 000004f6: #89 := R2 = 0 000004f0: when #89 goto %000002ed -0000083b: goto %000004f9 +000008d6: goto %000004f9 000002ed: 000002fa: call R30 with noreturn @@ -346,9 +346,9 @@ 000004ff: R16 := R2 00000504: call R16 with noreturn -0000083c: sub strlen(strlen_s, strlen_result) -0000085c: strlen_s :: in u64 = R0 -0000085d: strlen_result :: out u64 = R0 +000008ab: sub strlen(strlen_s, strlen_result) +000008f6: strlen_s :: in u64 = R0 +000008f7: strlen_result :: out u64 = R0 000003db: 0000064d: R16 := 0x20000 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..332b58eaf --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,825 @@ +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_be(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 #42: bv64; + var #47: bv64; + var Gamma_#42: bool; + var Gamma_#47: bool; + lmain: + assume {:captureState "lmain"} true; + #42, Gamma_#42 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); + assume {:captureState "%00000371"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); + assume {:captureState "%00000376"} true; + R31, Gamma_R31 := #42, Gamma_#42; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R21), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R21); + assume {:captureState "%00000382"} true; + #47, Gamma_#47 := bvadd64(R31, 32bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #47, R20), gamma_store64(Gamma_stack, #47, Gamma_R20); + assume {:captureState "%0000038f"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#47, 8bv64), R19), gamma_store64(Gamma_stack, bvadd64(#47, 8bv64), Gamma_R19); + assume {:captureState "%00000394"} true; + R29, Gamma_R29 := R31, Gamma_R31; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2348bv64, true; + call malloc(); + goto l000003ac; + l000003ac: + assume {:captureState "l000003ac"} 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 "%000003cd"} true; + R0, Gamma_R0 := R20, Gamma_R20; + R30, Gamma_R30 := 2376bv64, true; + call strlen(); + goto l000003df; + l000003df: + assume {:captureState "l000003df"} 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 l000003ff; + l000003ff: + assume {:captureState "l000003ff"} true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2400bv64, true; + call puts(); + goto l0000040f; + l0000040f: + assume {:captureState "l0000040f"} 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_be(mem, bvadd64(R8, 4bv64), 0bv8), gamma_store8(Gamma_mem, bvadd64(R8, 4bv64), true); + assume {:captureState "%0000041d"} 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 l00000436; + l00000436: + assume {:captureState "l00000436"} 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 l00000455; + l00000455: + assume {:captureState "l00000455"} 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 l00000465; + l00000465: + assume {:captureState "l00000465"} true; + R0, Gamma_R0 := 0bv32, true; + R20, Gamma_R20 := memory_load64_le(stack, bvadd64(R31, 32bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 32bv64)); + R19, Gamma_R19 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); + 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 index 3382b0fb3..a3d3583af 100644 --- 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 @@ -1,16 +1,16 @@ -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: +Relocation section '.rela.dyn' at offset 0x578 contains 8 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +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 0x5e8 contains 10 entries: +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 @@ -26,8 +26,8 @@ Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: 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 + 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) @@ -41,104 +41,105 @@ Symbol table '.dynsym' contains 15 entries: 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 99 entries: +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 .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: 0000000000000960 0 SECTION LOCAL DEFAULT 14 .fini - 15: 0000000000000974 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 0000000000000978 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009b8 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 00000000000009cc 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 0000000000000974 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 0000000000000960 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 000000000000096c 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 00000000000009e0 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 - 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 - 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 - 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 - 59: 0000000000000a40 0 NOTYPE LOCAL DEFAULT 17 $d.4 - 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 61: 0000000000000a84 0 NOTYPE LOCAL DEFAULT 17 $d - 62: 0000000000000a84 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 65: 0000000000000978 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata - 77: 0000000000000960 0 FUNC GLOBAL HIDDEN 14 _fini - 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 86: 0000000000000974 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end - 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf - 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext - 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 95: 00000000000008d4 140 FUNC GLOBAL DEFAULT 13 main - 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init + 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/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt index 32718d866..4ce6993bd 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt @@ -1,779 +1,781 @@ 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 2436 20 2436)\n(code-region 1984 452 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 176)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2436 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2436 20)\n(llvm:code-entry .text 1984 452)\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 2460 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 2720)\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 2460 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 2720)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68804)\n(llvm:section-entry .strtab 0 716 68088)\n(llvm:section-entry .symtab 0 2376 65712)\n(llvm:section-entry .comment 0 63 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 2520 200 2520)\n(llvm:section-entry .eh_frame_hdr 2460 60 2460)\n(llvm:section-entry .rodata 2456 4 2456)\n(llvm:section-entry .fini 2436 20 2436)\n(llvm:section-entry .text 1984 452 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 176 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2436 0 2436 2436)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2720 0)\n(mapped 130504 676 64968)\n(named-region 0 2720 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 452 .text)\n(named-region 2436 20 .fini)\n(named-region 2456 4 .rodata)\n(named-region 2460 60 .eh_frame_hdr)\n(named-region 2520 200 .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 63 .comment)\n(named-region 0 2376 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2436 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 452)\n(section 2436 20)\n(section 2456 4)\n(section 2460 60)\n(section 2520 200)\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 63)\n(section 0 2376)\n(section 0 716)\n(section 0 259)\n(segment 0 2720 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 176 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2436 2436)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("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 2500 20 2500)\n(code-region 2048 452 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 176)\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 2500 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 2500 20)\n(llvm:code-entry .text 2048 452)\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 2524 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 2784)\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 2524 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 2784)\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 2584 200 2584)\n(llvm:section-entry .eh_frame_hdr 2524 60 2524)\n(llvm:section-entry .rodata 2520 4 2520)\n(llvm:section-entry .fini 2500 20 2500)\n(llvm:section-entry .text 2048 452 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 176 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 2500 0 2500 2500)\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 2784 0)\n(mapped 130488 692 64952)\n(named-region 0 2784 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 452 .text)\n(named-region 2500 20 .fini)\n(named-region 2520 4 .rodata)\n(named-region 2524 60 .eh_frame_hdr)\n(named-region 2584 200 .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 2500 _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 452)\n(section 2500 20)\n(section 2520 4)\n(section 2524 60)\n(section 2584 200)\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 2784 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 176 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 2500 2500)\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\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\x9c\x09\x00\x00\x00\x00\x00\x00\x9c\x09\x00\x00\x00\x00\x00\x00\x9c\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\x70\xc6\x6a\x89\xe9\x7c\x20\xe5\xd8\x2d\x59\xd2\x32\xff\xf0\x9f\xfb\x53\x96\x2f\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"), -Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\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\x9c\x09\x00\x00\x00\x00\x00\x00\x9c\x09\x00\x00\x00\x00\x00\x00\x9c\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\x70\xc6\x6a\x89\xe9\x7c\x20\xe5\xd8\x2d\x59\xd2\x32\xff\xf0\x9f\xfb\x53\x96\x2f\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\xa9\x83\x5f\xf8\x3f\x01\x00\x39"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c"), +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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\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\x70\xc6\x6a\x89\xe9\x7c\x20\xe5\xd8\x2d\x59\xd2\x32\xff\xf0\x9f\xfb\x53\x96\x2f"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad"), Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x984, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x998, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x99C, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x24\xfe\xff\xff\x50\x00\x00\x00\x74\xfe\xff\xff\x64\x00\x00\x00\xa4\xfe\xff\xff\x78\x00\x00\x00\xe4\xfe\xff\xff\x8c\x00\x00\x00\x34\xff\xff\xff\xb0\x00\x00\x00\x38\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0x9D8, "\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\xcc\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x08\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x24\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x50\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\x7c\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\x24\x00\x00\x00\x18\x00\x00\x00\x58\xfe\xff\xff\xb0\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x98\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x84\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".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", 0x9C4, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9D8, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9DC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x24\xfe\xff\xff\x50\x00\x00\x00\x74\xfe\xff\xff\x64\x00\x00\x00\xa4\xfe\xff\xff\x78\x00\x00\x00\xe4\xfe\xff\xff\x8c\x00\x00\x00\x34\xff\xff\xff\xb0\x00\x00\x00\x38\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0xA18, "\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\xcc\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x08\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x24\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x50\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\x7c\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\x24\x00\x00\x00\x18\x00\x00\x00\x58\xfe\xff\xff\xb0\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x98\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\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\xc4\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", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\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\xa5\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x99\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x84\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7c\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x99\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\xa9\x83\x5f\xf8\x3f\x01\x00\x39\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x73\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x7f\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x8c\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xA9F), Attr("segment","02 0 2720")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x80\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x9d\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\xa9\x83\x5f\xf8\x3f\x01\x00\x39\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x77\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x83\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x90\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xADF), Attr("segment","02 0 2784")), +Annotation(Region(0x800,0x833), Attr("symbol","\"_start\"")), Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), -Annotation(Region(0x0,0x947), Attr("section","\".symtab\"")), -Annotation(Region(0x0,0x3E), Attr("section","\".comment\"")), +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,0x2B3), Attr("section","\".gnu.hash\"")), -Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), -Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), -Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), -Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), -Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), -Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), -Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), -Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x983), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x983), Attr("symbol-info","main 0x8D4 176")), -Annotation(Region(0x984,0x997), Attr("section","\".fini\"")), -Annotation(Region(0x998,0x99B), Attr("section","\".rodata\"")), -Annotation(Region(0x99C,0x9D7), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x9D8,0xA9F), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), -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(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,0x9C3), Attr("symbol","\"main\"")), +Annotation(Region(0x914,0x9C3), Attr("symbol-info","main 0x914 176")), +Annotation(Region(0x9C4,0x9D7), Attr("section","\".fini\"")), +Annotation(Region(0x9D8,0x9DB), Attr("section","\".rodata\"")), +Annotation(Region(0x9DC,0xA17), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA18,0xADF), 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(0x7C0,0x983), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x983), Attr("code-region","()")), -Annotation(Region(0x984,0x997), Attr("code-region","()"))]), -Program(Tid(2_198, "%00000896"), Attrs([]), - Subs([Sub(Tid(2_170, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_199, "%00000897"), +Annotation(Region(0x800,0x9C3), Attr("section","\".text\"")), +Annotation(Region(0x800,0x9C3), Attr("code-region","()")), +Annotation(Region(0x9C4,0x9D7), Attr("code-region","()"))]), +Program(Tid(2_361, "%00000939"), Attrs([]), + Subs([Sub(Tid(2_290, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_362, "%0000093a"), 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_323, "@__cxa_finalize"), - Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_743, "%000006cf"), Attrs([Attr("address","0x740"), + Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_743, "%000006cf"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x744"), +Def(Tid(1_751, "%000006d7"), 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_758, "%000006de"), Attrs([Attr("address","0x748"), +Def(Tid(1_758, "%000006de"), 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_763, "%000006e3"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_171, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_200, "%00000898"), +Sub(Tid(2_291, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_363, "%0000093b"), 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(802, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(809, "%00000329"), - Attrs([Attr("address","0x880"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(809, "%00000329"), + Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x880"), +Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(819, "%00000333"), Attrs([Attr("address","0x880"), +Def(Tid(819, "%00000333"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(823, "%00000337"), Attrs([Attr("address","0x880"), +Def(Tid(823, "%00000337"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), Var("#34",Imm(64))), Def(Tid(830, "%0000033e"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(838, "%00000346"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + 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(844, "%0000034c"), Attrs([Attr("address","0x88C"), +Def(Tid(844, "%0000034c"), Attrs([Attr("address","0x8CC"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(853, "%00000355"), Attrs([Attr("address","0x890"), +Def(Tid(853, "%00000355"), Attrs([Attr("address","0x8D0"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(865, "%00000361"), Attrs([Attr("address","0x894"), +Def(Tid(865, "%00000361"), Attrs([Attr("address","0x8D4"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(859, "%0000035b"), Attrs([Attr("address","0x894"), +Jmps([Goto(Tid(859, "%0000035b"), Attrs([Attr("address","0x8D4"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(857, "%00000359"))), Goto(Tid(2_172, "%0000087c"), Attrs([]), +Direct(Tid(857, "%00000359"))), Goto(Tid(2_351, "%0000092f"), Attrs([]), Int(1,1), Direct(Tid(1_257, "%000004e9")))])), Blk(Tid(1_257, "%000004e9"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x898"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8D8"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x89C"), +Def(Tid(1_269, "%000004f5"), 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)), -Def(Tid(1_281, "%00000501"), Attrs([Attr("address","0x8A0"), +Def(Tid(1_281, "%00000501"), Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_275, "%000004fb"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), Direct(Tid(1_273, "%000004f9"))), -Goto(Tid(2_173, "%0000087d"), Attrs([]), Int(1,1), +Goto(Tid(2_352, "%00000930"), Attrs([]), Int(1,1), Direct(Tid(1_305, "%00000519")))])), Blk(Tid(1_305, "%00000519"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x8A4"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_317, "%00000525"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_317, "%00000525"), 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_322, "%0000052a"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_170, "@__cxa_finalize")),Direct(Tid(1_273, "%000004f9"))))])), -Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_288, "%00000508"), Attrs([Attr("address","0x8B0"), +Def(Tid(1_322, "%0000052a"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Int(1,1), +(Direct(Tid(2_290, "@__cxa_finalize")),Direct(Tid(1_273, "%000004f9"))))])), +Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_288, "%00000508"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_184, "@deregister_tm_clones")),Direct(Tid(1_290, "%0000050a"))))])), -Blk(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_295, "%0000050f"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_304, "@deregister_tm_clones")),Direct(Tid(1_290, "%0000050a"))))])), +Blk(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_295, "%0000050f"), Attrs([Attr("address","0x8F4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_303, "%00000517"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_303, "%00000517"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_174, "%0000087e"), Attrs([]), Int(1,1), +Jmps([Goto(Tid(2_353, "%00000931"), Attrs([]), Int(1,1), Direct(Tid(857, "%00000359")))])), Blk(Tid(857, "%00000359"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(873, "%00000369"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(873, "%00000369"), + 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(883, "%00000373"), Attrs([Attr("address","0x8C0"), +Def(Tid(883, "%00000373"), 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(887, "%00000377"), Attrs([Attr("address","0x8C0"), +Def(Tid(887, "%00000377"), 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(890, "%0000037a"), Attrs([Attr("address","0x8C0"), +Def(Tid(890, "%0000037a"), 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(895, "%0000037f"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_175, "@__libc_start_main"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_295, "@__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_201, "%00000899"), +Attr("address","0x780"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_364, "%0000093c"), 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_202, "%0000089a"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_365, "%0000093d"), 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_203, "%0000089b"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_366, "%0000093e"), 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_204, "%0000089c"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_367, "%0000093f"), 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_205, "%0000089d"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_368, "%00000940"), 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(614, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x730"), + Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_726, "%000006be"), Attrs([Attr("address","0x734"), +Def(Tid(1_726, "%000006be"), 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_733, "%000006c5"), Attrs([Attr("address","0x738"), +Def(Tid(1_733, "%000006c5"), 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_738, "%000006ca"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_176, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x984")]), - "_fini", Args([Arg(Tid(2_206, "%0000089e"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_296, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9C4")]), + "_fini", Args([Arg(Tid(2_369, "%00000941"), 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","0x984")]), Phis([]), Defs([Def(Tid(41, "%00000029"), - Attrs([Attr("address","0x988"), + Attrs([Attr("address","0x9C4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9C8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x988"), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9C8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x988"), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9C8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x988"), +Def(Tid(55, "%00000037"), Attrs([Attr("address","0x9C8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x98C"), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9CC"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x990"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9D0"), 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(76, "%0000004c"), Attrs([Attr("address","0x990"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x9D0"), 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(79, "%0000004f"), Attrs([Attr("address","0x990"), +Def(Tid(79, "%0000004f"), Attrs([Attr("address","0x9D0"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), - Attrs([Attr("address","0x994"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_177, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_207, "%0000089f"), + Attrs([Attr("address","0x9D4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_297, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), + "_init", Args([Arg(Tid(2_370, "%00000942"), 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_941, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_950, "%0000079e"), Attrs([Attr("address","0x6DC"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(2_061, "@_init"), + Attrs([Attr("address","0x728")]), Phis([]), +Defs([Def(Tid(2_070, "%00000816"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#98",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_955, "%000007a3"), Attrs([Attr("address","0x6DC"), +Def(Tid(2_075, "%0000081b"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#98",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_960, "%000007a8"), Attrs([Attr("address","0x6DC"), +Def(Tid(2_080, "%00000820"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#98",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_964, "%000007ac"), Attrs([Attr("address","0x6DC"), +Def(Tid(2_084, "%00000824"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#98",Imm(64))), Def(Tid(1_971, "%000007b3"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_976, "%000007b8"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_978, "%000007ba"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_182, "@call_weak_fn")),Direct(Tid(1_980, "%000007bc"))))])), -Blk(Tid(1_980, "%000007bc"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_988, "%000007c4"), Attrs([Attr("address","0x6E8"), +Var("#98",Imm(64))), Def(Tid(2_091, "%0000082b"), + Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_096, "%00000830"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(2_098, "%00000832"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), +(Direct(Tid(2_302, "@call_weak_fn")),Direct(Tid(2_100, "%00000834"))))])), +Blk(Tid(2_100, "%00000834"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(2_108, "%0000083c"), 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_992, "%000007c8"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_112, "%00000840"), 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_995, "%000007cb"), Attrs([Attr("address","0x6E8"), +Def(Tid(2_115, "%00000843"), 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(2_000, "%000007d0"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_178, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_208, "%000008a0"), - 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(540, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(546, "%00000222"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(552, "%00000228"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(560, "%00000230"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(568, "%00000238"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_120, "%00000848"), + Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_298, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("stub","()"), Attr("entry-point","()")]), "_start", + Args([Arg(Tid(2_371, "%00000943"), 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(540, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(546, "%00000222"), Attrs([Attr("address","0x804"), +Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), +Def(Tid(552, "%00000228"), Attrs([Attr("address","0x808"), +Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), +Def(Tid(560, "%00000230"), Attrs([Attr("address","0x80C"), +Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), +Def(Tid(568, "%00000238"), 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(575, "%0000023f"), Attrs([Attr("address","0x7D4"), +Def(Tid(575, "%0000023f"), Attrs([Attr("address","0x814"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(582, "%00000246"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(588, "%0000024c"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), Def(Tid(596, "%00000254"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + 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(602, "%0000025a"), Attrs([Attr("address","0x7E4"), +Def(Tid(602, "%0000025a"), Attrs([Attr("address","0x824"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(608, "%00000260"), Attrs([Attr("address","0x7E8"), +Def(Tid(608, "%00000260"), Attrs([Attr("address","0x828"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(613, "%00000265"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_175, "@__libc_start_main")),Direct(Tid(618, "%0000026a"))))])), -Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_181, "@abort")),Direct(Tid(2_179, "%00000883"))))])), -Blk(Tid(2_179, "%00000883"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_180, "%00000884"), Attrs([]), Int(1,1), -(Direct(Tid(2_182, "@call_weak_fn")),))]))])), Sub(Tid(2_181, "@abort"), +Def(Tid(613, "%00000265"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Int(1,1), +(Direct(Tid(2_295, "@__libc_start_main")),Direct(Tid(618, "%0000026a"))))])), +Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Int(1,1), +(Direct(Tid(2_301, "@abort")),Direct(Tid(2_354, "%00000932"))))])), +Blk(Tid(2_354, "%00000932"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_355, "%00000933"), Attrs([]), Int(1,1), +(Direct(Tid(2_302, "@call_weak_fn")),))]))])), Sub(Tid(2_301, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(622, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x780"), +Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(622, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x784"), +Def(Tid(1_851, "%0000073b"), 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_858, "%00000742"), Attrs([Attr("address","0x788"), +Def(Tid(1_858, "%00000742"), 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_863, "%00000747"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_182, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_209, "%000008a1"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_302, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_372, "%00000944"), 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(626, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(630, "%00000276"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(630, "%00000276"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), Def(Tid(638, "%0000027e"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + 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)), -Def(Tid(650, "%0000028a"), Attrs([Attr("address","0x7FC"), +Def(Tid(650, "%0000028a"), Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(644, "%00000284"), - Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), Direct(Tid(642, "%00000282"))), -Goto(Tid(2_183, "%00000887"), Attrs([]), Int(1,1), +Goto(Tid(2_356, "%00000934"), Attrs([]), Int(1,1), Direct(Tid(1_405, "%0000057d")))])), Blk(Tid(642, "%00000282"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(655, "%0000028f"), Attrs([Attr("address","0x804"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(655, "%0000028f"), Attrs([Attr("address","0x844"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_405, "%0000057d"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_408, "%00000580"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), +Blk(Tid(1_405, "%0000057d"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_408, "%00000580"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0x80")]), Int(1,1), Direct(Tid(1_406, "@__gmon_start__")))])), Blk(Tid(1_406, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_818, "%0000071a"), Attrs([Attr("address","0x770"), + Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_818, "%0000071a"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x774"), +Def(Tid(1_826, "%00000722"), 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_833, "%00000729"), Attrs([Attr("address","0x778"), +Def(Tid(1_833, "%00000729"), 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_838, "%0000072e"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_184, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_210, "%000008a2"), +Sub(Tid(2_304, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_373, "%00000945"), 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(661, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(665, "%00000299"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(665, "%00000299"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), Def(Tid(672, "%000002a0"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x70")]), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x818"), +Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x858"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x81C"), +Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x85C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(693, "%000002b5"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("#16",Imm(64)), PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x820"), +Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), Extract(63,63,Var("#16",Imm(64)))), Def(Tid(700, "%000002bc"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x820"), +Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(706, "%000002c2"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x824"), +Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x864"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(714, "%000002ca"), Attrs([Attr("address","0x824"), +Jmps([Goto(Tid(714, "%000002ca"), Attrs([Attr("address","0x864"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(712, "%000002c8"))), Goto(Tid(2_185, "%00000889"), Attrs([]), +Direct(Tid(712, "%000002c8"))), Goto(Tid(2_357, "%00000935"), Attrs([]), Int(1,1), Direct(Tid(1_366, "%00000556")))])), Blk(Tid(1_366, "%00000556"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_370, "%0000055a"), Attrs([Attr("address","0x828"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_370, "%0000055a"), Attrs([Attr("address","0x868"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_378, "%00000562"), Attrs([Attr("address","0x82C"), +Def(Tid(1_378, "%00000562"), 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)), -Def(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x830"), +Def(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_383, "%00000567"), - Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), Direct(Tid(712, "%000002c8"))), -Goto(Tid(2_186, "%0000088a"), Attrs([]), Int(1,1), +Goto(Tid(2_358, "%00000936"), Attrs([]), Int(1,1), Direct(Tid(1_392, "%00000570")))])), Blk(Tid(712, "%000002c8"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(725, "%000002d5"), Attrs([Attr("address","0x83C"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(725, "%000002d5"), Attrs([Attr("address","0x87C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_392, "%00000570"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_398, "%00000576"), Attrs([Attr("address","0x834"), +Blk(Tid(1_392, "%00000570"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_398, "%00000576"), Attrs([Attr("address","0x874"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x878"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_187, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_211, "%000008a3"), +Sub(Tid(2_307, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_374, "%00000946"), 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(901, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(903, "%00000387"), Attrs([Attr("address","0x8D0"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(903, "%00000387"), Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_194, "@register_tm_clones")),))]))])), Sub(Tid(2_188, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_212, "%000008a4"), +(Direct(Tid(2_314, "@register_tm_clones")),))]))])), Sub(Tid(2_308, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_375, "%00000947"), 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_219, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_893, "%00000765"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_219, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_893, "%00000765"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_901, "%0000076d"), 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_908, "%00000774"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_908, "%00000774"), 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_913, "%00000779"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_189, "@main"), + Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_309, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_213, "%000008a5"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_376, "%00000948"), 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_214, "%000008a6"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_377, "%00000949"), 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_215, "%000008a7"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_378, "%0000094a"), 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(905, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(910, "%0000038e"), - Attrs([Attr("address","0x8D4"), Attr("insn","sub sp, sp, #0x40")]), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(910, "%0000038e"), + Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), -Def(Tid(918, "%00000396"), Attrs([Attr("address","0x8D8"), +Def(Tid(918, "%00000396"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(923, "%0000039b"), - Attrs([Attr("address","0x8D8"), Attr("insn","stp x29, x30, [sp, #0x30]")]), + Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x8D8"), +Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x8DC"), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x91C"), Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(943, "%000003af"), - Attrs([Attr("address","0x8E0"), Attr("insn","stur xzr, [x29, #-0x8]")]), + Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(951, "%000003b7"), Attrs([Attr("address","0x8E4"), +Def(Tid(951, "%000003b7"), Attrs([Attr("address","0x924"), Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8E8"), +Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x928"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(965, "%000003c5"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_190, "@malloc")),Direct(Tid(967, "%000003c7"))))])), -Blk(Tid(967, "%000003c7"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x8F0"), +Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(965, "%000003c5"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x18c")]), Int(1,1), +(Direct(Tid(2_310, "@malloc")),Direct(Tid(967, "%000003c7"))))])), +Blk(Tid(967, "%000003c7"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x930"), Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x8F4"), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x934"), Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x8F8"), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x938"), Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x8FC"), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x93C"), Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x900"), +Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x940"), Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x904"), +Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x944"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x908"), +Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(1_024, "%00000400"), - Attrs([Attr("address","0x90C"), Attr("insn","str x0, [sp]")]), + Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x910"), -Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2324,64))]), -Jmps([Call(Tid(1_032, "%00000408"), Attrs([Attr("address","0x910"), -Attr("insn","bl #-0x1f0")]), Int(1,1), -(Direct(Tid(2_197, "@strlen")),Direct(Tid(1_034, "%0000040a"))))])), -Blk(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x914")]), Phis([]), -Defs([Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x914"), +Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), +Jmps([Call(Tid(1_032, "%00000408"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x1e0")]), Int(1,1), +(Direct(Tid(2_317, "@strlen")),Direct(Tid(1_034, "%0000040a"))))])), +Blk(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x954")]), Phis([]), +Defs([Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x954"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x918"), +Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x958"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_056, "%00000420"), Attrs([Attr("address","0x91C"), +Def(Tid(1_056, "%00000420"), Attrs([Attr("address","0x95C"), Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x920"), -Attr("insn","bl #-0x210")]), Var("R30",Imm(64)), Int(2340,64))]), -Jmps([Call(Tid(1_064, "%00000428"), Attrs([Attr("address","0x920"), -Attr("insn","bl #-0x210")]), Int(1,1), -(Direct(Tid(2_191, "@memcpy")),Direct(Tid(1_066, "%0000042a"))))])), -Blk(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x924"), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), +Jmps([Call(Tid(1_064, "%00000428"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x200")]), Int(1,1), +(Direct(Tid(2_311, "@memcpy")),Direct(Tid(1_066, "%0000042a"))))])), +Blk(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x928"), +Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x968"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(1_088, "%00000440"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_193, "@puts")),Direct(Tid(1_090, "%00000442"))))])), -Blk(Tid(1_090, "%00000442"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x930"), +Def(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), +Jmps([Call(Tid(1_088, "%00000440"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x18c")]), Int(1,1), +(Direct(Tid(2_313, "@puts")),Direct(Tid(1_090, "%00000442"))))])), +Blk(Tid(1_090, "%00000442"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x970"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x934"), +Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x974"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x938"), +Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x978"), Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_119, "%0000045f"), - Attrs([Attr("address","0x93C"), Attr("insn","stur x9, [x29, #-0x8]")]), + Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x940"), +Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x980"), Attr("insn","ldur x9, [x29, #-0x8]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), -Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x944"), +Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x984"), Attr("insn","strb wzr, [x9]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),BigEndian(),8)), -Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x948"), +Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x988"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x94C"), +Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x98C"), Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x950"), +Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x990"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x954"), -Attr("insn","bl #-0x234")]), Var("R30",Imm(64)), Int(2392,64))]), -Jmps([Call(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x954"), -Attr("insn","bl #-0x234")]), Int(1,1), -(Direct(Tid(2_197, "@strlen")),Direct(Tid(1_168, "%00000490"))))])), -Blk(Tid(1_168, "%00000490"), Attrs([Attr("address","0x958")]), Phis([]), -Defs([Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x958"), +Def(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x994"), +Attr("insn","bl #-0x224")]), Var("R30",Imm(64)), Int(2456,64))]), +Jmps([Call(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x994"), +Attr("insn","bl #-0x224")]), Int(1,1), +(Direct(Tid(2_317, "@strlen")),Direct(Tid(1_168, "%00000490"))))])), +Blk(Tid(1_168, "%00000490"), Attrs([Attr("address","0x998")]), Phis([]), +Defs([Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x998"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x95C"), +Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x99C"), Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x960"), +Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x9A0"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x964"), -Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2408,64))]), -Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x964"), -Attr("insn","bl #-0x204")]), Int(1,1), -(Direct(Tid(2_192, "@memset")),Direct(Tid(1_199, "%000004af"))))])), -Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x968")]), Phis([]), -Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x968"), +Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x9A4"), +Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2472,64))]), +Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x9A4"), +Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_312, "@memset")),Direct(Tid(1_199, "%000004af"))))])), +Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x9A8")]), Phis([]), +Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x9A8"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x96C"), +Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x9AC"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x970"), -Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2420,64))]), -Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x970"), -Attr("insn","bl #-0x1d0")]), Int(1,1), -(Direct(Tid(2_188, "@free")),Direct(Tid(1_223, "%000004c7"))))])), -Blk(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x974")]), Phis([]), -Defs([Def(Tid(1_230, "%000004ce"), Attrs([Attr("address","0x974"), +Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x9B0"), +Attr("insn","bl #-0x1c0")]), Var("R30",Imm(64)), Int(2484,64))]), +Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x9B0"), +Attr("insn","bl #-0x1c0")]), Int(1,1), +(Direct(Tid(2_308, "@free")),Direct(Tid(1_223, "%000004c7"))))])), +Blk(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x9B4")]), Phis([]), +Defs([Def(Tid(1_230, "%000004ce"), Attrs([Attr("address","0x9B4"), Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x978"), +Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x9B8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), -Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x978"), +Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x9B8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), -Def(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x97C"), +Def(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x9BC"), Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_255, "%000004e7"), - Attrs([Attr("address","0x980"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_190, "@malloc"), + Attrs([Attr("address","0x9C0"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_310, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_216, "%000008a8"), Attrs([Attr("alloc-size","()"), +Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_379, "%0000094b"), 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_217, "%000008a9"), +Var("R0",Imm(64)), In()), Arg(Tid(2_380, "%0000094c"), 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(963, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(963, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x754"), +Def(Tid(1_776, "%000006f0"), 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_783, "%000006f7"), Attrs([Attr("address","0x758"), +Def(Tid(1_783, "%000006f7"), 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_788, "%000006fc"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_191, "@memcpy"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_311, "@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_218, "%000008aa"), Attrs([Attr("nonnull","()"), +Attr("address","0x760"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_381, "%0000094d"), 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_219, "%000008ab"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_382, "%0000094e"), 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_220, "%000008ac"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_383, "%0000094f"), 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_221, "%000008ad"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_384, "%00000950"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_062, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_668, "%00000684"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_062, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_668, "%00000684"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_676, "%0000068c"), Attrs([Attr("address","0x714"), +Def(Tid(1_676, "%0000068c"), 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_683, "%00000693"), Attrs([Attr("address","0x718"), +Def(Tid(1_683, "%00000693"), Attrs([Attr("address","0x768"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), Var("R16",Imm(64)))]), Jmps([Call(Tid(1_688, "%00000698"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_192, "@memset"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_312, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_222, "%000008ae"), Attrs([Attr("nonnull","()"), +Attr("address","0x7B0"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_385, "%00000951"), 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_223, "%000008af"), +Both()), Arg(Tid(2_386, "%00000952"), 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_224, "%000008b0"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_387, "%00000953"), 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_225, "%000008b1"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_388, "%00000954"), 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_195, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_793, "%00000701"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_195, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_793, "%00000701"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x764"), +Def(Tid(1_801, "%00000709"), 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_808, "%00000710"), Attrs([Attr("address","0x768"), +Def(Tid(1_808, "%00000710"), 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_813, "%00000715"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_193, "@puts"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_313, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_226, "%000008b2"), Attrs([Attr("c.layout","*[char : 8]"), +Attr("address","0x7E0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_389, "%00000955"), 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_227, "%000008b3"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_390, "%00000956"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_086, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_868, "%0000074c"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_086, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_868, "%0000074c"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x794"), +Def(Tid(1_876, "%00000754"), 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_883, "%0000075b"), Attrs([Attr("address","0x798"), +Def(Tid(1_883, "%0000075b"), 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_888, "%00000760"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), + Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_194, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_228, "%000008b4"), +Sub(Tid(2_314, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_391, "%00000957"), 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(727, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(727, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x880"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x844"), +Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x884"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(744, "%000002e8"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), Def(Tid(751, "%000002ef"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x70")]), + Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x850"), +Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x890"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(766, "%000002fe"), - Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(774, "%00000306"), Attrs([Attr("address","0x858"), +Def(Tid(774, "%00000306"), 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,64)))), -Def(Tid(781, "%0000030d"), Attrs([Attr("address","0x85C"), +Def(Tid(781, "%0000030d"), Attrs([Attr("address","0x89C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(793, "%00000319"), - Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(787, "%00000313"), Attrs([Attr("address","0x860"), +Jmps([Goto(Tid(787, "%00000313"), Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(785, "%00000311"))), Goto(Tid(2_195, "%00000893"), Attrs([]), +Direct(Tid(785, "%00000311"))), Goto(Tid(2_359, "%00000937"), Attrs([]), Int(1,1), Direct(Tid(1_327, "%0000052f")))])), Blk(Tid(1_327, "%0000052f"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_331, "%00000533"), Attrs([Attr("address","0x864"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_331, "%00000533"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_339, "%0000053b"), Attrs([Attr("address","0x868"), +Def(Tid(1_339, "%0000053b"), 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)), -Def(Tid(1_350, "%00000546"), Attrs([Attr("address","0x86C"), +Def(Tid(1_350, "%00000546"), Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_344, "%00000540"), - Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), Direct(Tid(785, "%00000311"))), -Goto(Tid(2_196, "%00000894"), Attrs([]), Int(1,1), +Goto(Tid(2_360, "%00000938"), Attrs([]), Int(1,1), Direct(Tid(1_353, "%00000549")))])), Blk(Tid(785, "%00000311"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(798, "%0000031e"), Attrs([Attr("address","0x878"), + Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), +Jmps([Call(Tid(798, "%0000031e"), Attrs([Attr("address","0x8B8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x870"), +Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x8B0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_364, "%00000554"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8B4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_197, "@strlen"), +Sub(Tid(2_317, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_229, "%000008b5"), Attrs([Attr("nonnull","()"), +Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_392, "%00000958"), 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_230, "%000008b6"), +In()), Arg(Tid(2_393, "%00000959"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_030, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_693, "%0000069d"), Attrs([Attr("address","0x720"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_693, "%0000069d"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_701, "%000006a5"), Attrs([Attr("address","0x724"), +Def(Tid(1_701, "%000006a5"), 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_708, "%000006ac"), Attrs([Attr("address","0x728"), +Def(Tid(1_708, "%000006ac"), 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_713, "%000006b1"), - Attrs([Attr("address","0x72C"), Attr("insn","br x17")]), Int(1,1), + 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir index 6395d0f72..ed93b38a3 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir @@ -1,6 +1,6 @@ -00000896: program -0000087a: sub __cxa_finalize(__cxa_finalize_result) -00000897: __cxa_finalize_result :: out u32 = low:32[R0] +00000939: program +000008f2: sub __cxa_finalize(__cxa_finalize_result) +0000093a: __cxa_finalize_result :: out u32 = low:32[R0] 0000052b: 000006cf: R16 := 0x20000 @@ -8,8 +8,8 @@ 000006de: R16 := R16 + 0x18 000006e3: call R17 with noreturn -0000087b: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000898: __do_global_dtors_aux_result :: out u32 = low:32[R0] +000008f3: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000093b: __do_global_dtors_aux_result :: out u32 = low:32[R0] 00000322: 00000329: #34 := R31 - 0x20 @@ -22,29 +22,29 @@ 00000355: R0 := pad:32[mem[R19 + 0x70]] 00000361: #36 := ~~0:0[R0] 0000035b: when #36 goto %00000359 -0000087c: goto %000004e9 +0000092f: goto %000004e9 000004e9: 000004ed: R0 := 0x1F000 000004f5: R0 := mem[R0 + 0xFC8, el]:u64 00000501: #67 := R0 = 0 000004fb: when #67 goto %000004f9 -0000087d: goto %00000519 +00000930: goto %00000519 00000519: 0000051d: R0 := 0x20000 00000525: R0 := mem[R0 + 0x58, el]:u64 -0000052a: R30 := 0x8B0 +0000052a: R30 := 0x8F0 0000052d: call @__cxa_finalize with return %000004f9 000004f9: -00000506: R30 := 0x8B4 +00000506: R30 := 0x8F4 00000508: call @deregister_tm_clones with return %0000050a 0000050a: 0000050f: R0 := 1 00000517: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -0000087e: goto %00000359 +00000931: goto %00000359 00000359: 00000369: R19 := mem[R31 + 0x10, el]:u64 @@ -53,12 +53,12 @@ 0000037a: R31 := R31 + 0x20 0000037f: call R30 with noreturn -0000087f: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000899: __libc_start_main_main :: in u64 = R0 -0000089a: __libc_start_main_arg2 :: in u32 = low:32[R1] -0000089b: __libc_start_main_arg3 :: in out u64 = R2 -0000089c: __libc_start_main_auxv :: in out u64 = R3 -0000089d: __libc_start_main_result :: out u32 = low:32[R0] +000008f7: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +0000093c: __libc_start_main_main :: in u64 = R0 +0000093d: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000093e: __libc_start_main_arg3 :: in out u64 = R2 +0000093f: __libc_start_main_auxv :: in out u64 = R3 +00000940: __libc_start_main_result :: out u32 = low:32[R0] 00000266: 000006b6: R16 := 0x20000 @@ -66,8 +66,8 @@ 000006c5: R16 := R16 + 0x10 000006ca: call R17 with noreturn -00000880: sub _fini(_fini_result) -0000089e: _fini_result :: out u32 = low:32[R0] +000008f8: sub _fini(_fini_result) +00000941: _fini_result :: out u32 = low:32[R0] 00000020: 00000029: #3 := R31 - 0x10 @@ -80,26 +80,26 @@ 0000004f: R31 := R31 + 0x10 00000054: call R30 with noreturn -00000881: sub _init(_init_result) -0000089f: _init_result :: out u32 = low:32[R0] +000008f9: sub _init(_init_result) +00000942: _init_result :: out u32 = low:32[R0] -00000795: -0000079e: #98 := R31 - 0x10 -000007a3: mem := mem with [#98, el]:u64 <- R29 -000007a8: mem := mem with [#98 + 8, el]:u64 <- R30 -000007ac: R31 := #98 -000007b3: R29 := R31 -000007b8: R30 := 0x6E8 -000007ba: call @call_weak_fn with return %000007bc +0000080d: +00000816: #98 := R31 - 0x10 +0000081b: mem := mem with [#98, el]:u64 <- R29 +00000820: mem := mem with [#98 + 8, el]:u64 <- R30 +00000824: R31 := #98 +0000082b: R29 := R31 +00000830: R30 := 0x738 +00000832: call @call_weak_fn with return %00000834 -000007bc: -000007c4: R29 := mem[R31, el]:u64 -000007c8: R30 := mem[R31 + 8, el]:u64 -000007cb: R31 := R31 + 0x10 -000007d0: call R30 with noreturn +00000834: +0000083c: R29 := mem[R31, el]:u64 +00000840: R30 := mem[R31 + 8, el]:u64 +00000843: R31 := R31 + 0x10 +00000848: call R30 with noreturn -00000882: sub _start(_start_result) -000008a0: _start_result :: out u32 = low:32[R0] +000008fa: sub _start(_start_result) +00000943: _start_result :: out u32 = low:32[R0] 0000021c: 00000222: R29 := 0 @@ -112,17 +112,17 @@ 00000254: R0 := mem[R0 + 0xFD8, el]:u64 0000025a: R3 := 0 00000260: R4 := 0 -00000265: R30 := 0x7F0 +00000265: R30 := 0x830 00000268: call @__libc_start_main with return %0000026a 0000026a: -0000026d: R30 := 0x7F4 -00000270: call @abort with return %00000883 +0000026d: R30 := 0x834 +00000270: call @abort with return %00000932 -00000883: -00000884: call @call_weak_fn with noreturn +00000932: +00000933: call @call_weak_fn with noreturn -00000885: sub abort() +000008fd: sub abort() 0000026e: @@ -131,15 +131,15 @@ 00000742: R16 := R16 + 0x38 00000747: call R17 with noreturn -00000886: sub call_weak_fn(call_weak_fn_result) -000008a1: call_weak_fn_result :: out u32 = low:32[R0] +000008fe: sub call_weak_fn(call_weak_fn_result) +00000944: call_weak_fn_result :: out u32 = low:32[R0] 00000272: 00000276: R0 := 0x1F000 0000027e: R0 := mem[R0 + 0xFD0, el]:u64 0000028a: #12 := R0 = 0 00000284: when #12 goto %00000282 -00000887: goto %0000057d +00000934: goto %0000057d 00000282: 0000028f: call R30 with noreturn @@ -153,8 +153,8 @@ 00000729: R16 := R16 + 0x30 0000072e: call R17 with noreturn -00000888: sub deregister_tm_clones(deregister_tm_clones_result) -000008a2: deregister_tm_clones_result :: out u32 = low:32[R0] +00000900: sub deregister_tm_clones(deregister_tm_clones_result) +00000945: deregister_tm_clones_result :: out u32 = low:32[R0] 00000295: 00000299: R0 := 0x20000 @@ -170,14 +170,14 @@ & ~63:63[#16] 000002d0: #21 := ZF 000002ca: when #21 goto %000002c8 -00000889: goto %00000556 +00000935: goto %00000556 00000556: 0000055a: R1 := 0x1F000 00000562: R1 := mem[R1 + 0xFC0, el]:u64 0000056d: #75 := R1 = 0 00000567: when #75 goto %000002c8 -0000088a: goto %00000570 +00000936: goto %00000570 000002c8: 000002d5: call R30 with noreturn @@ -186,14 +186,14 @@ 00000576: R16 := R1 0000057b: call R16 with noreturn -0000088b: sub frame_dummy(frame_dummy_result) -000008a3: frame_dummy_result :: out u32 = low:32[R0] +00000903: sub frame_dummy(frame_dummy_result) +00000946: frame_dummy_result :: out u32 = low:32[R0] 00000385: 00000387: call @register_tm_clones with noreturn -0000088c: sub free(free_ptr) -000008a4: free_ptr :: in out u64 = R0 +00000904: sub free(free_ptr) +00000947: free_ptr :: in out u64 = R0 000004c3: 00000765: R16 := 0x20000 @@ -201,10 +201,10 @@ 00000774: R16 := R16 + 0x48 00000779: call R17 with noreturn -0000088d: sub main(main_argc, main_argv, main_result) -000008a5: main_argc :: in u32 = low:32[R0] -000008a6: main_argv :: in out u64 = R1 -000008a7: main_result :: out u32 = low:32[R0] +00000905: sub main(main_argc, main_argv, main_result) +00000948: main_argc :: in u32 = low:32[R0] +00000949: main_argv :: in out u64 = R1 +0000094a: main_result :: out u32 = low:32[R0] 00000389: 0000038e: R31 := R31 - 0x40 @@ -215,7 +215,7 @@ 000003af: mem := mem with [R29 - 8, el]:u64 <- 0 000003b7: mem := mem with [R29 - 0x10, el]:u64 <- 0 000003bd: R0 := 0xB -000003c2: R30 := 0x8F0 +000003c2: R30 := 0x930 000003c5: call @malloc with return %000003c7 000003c7: @@ -227,20 +227,20 @@ 000003f1: R0 := 0x20000 000003f8: R0 := R0 + 0x61 00000400: mem := mem with [R31, el]:u64 <- R0 -00000405: R30 := 0x914 +00000405: R30 := 0x954 00000408: call @strlen with return %0000040a 0000040a: 00000410: R1 := mem[R31, el]:u64 00000418: R2 := R0 00000420: R0 := mem[R31 + 8, el]:u64 -00000425: R30 := 0x924 +00000425: R30 := 0x964 00000428: call @memcpy with return %0000042a 0000042a: 00000430: R8 := mem[R31 + 0x18, el]:u64 00000438: R0 := mem[R8 + 0x78, el]:u64 -0000043d: R30 := 0x930 +0000043d: R30 := 0x970 00000440: call @puts with return %00000442 00000442: @@ -253,20 +253,20 @@ 00000477: R9 := mem[R8 + 0x78, el]:u64 0000047f: mem := mem with [R31 + 0x10, el]:u64 <- R9 00000487: R0 := mem[R8 + 0x78, el]:u64 -0000048c: R30 := 0x958 +0000048c: R30 := 0x998 0000048e: call @strlen with return %00000490 00000490: 00000496: R2 := R0 0000049e: R0 := mem[R31 + 0x10, el]:u64 000004a5: R1 := 1 -000004aa: R30 := 0x968 +000004aa: R30 := 0x9A8 000004ad: call @memset with return %000004af 000004af: 000004b5: R8 := mem[R31 + 0x18, el]:u64 000004bd: R0 := mem[R8 + 0x78, el]:u64 -000004c2: R30 := 0x974 +000004c2: R30 := 0x9B4 000004c5: call @free with return %000004c7 000004c7: @@ -276,9 +276,9 @@ 000004e2: R31 := R31 + 0x40 000004e7: call R30 with noreturn -0000088e: sub malloc(malloc_size, malloc_result) -000008a8: malloc_size :: in u64 = R0 -000008a9: malloc_result :: out u64 = R0 +00000906: sub malloc(malloc_size, malloc_result) +0000094b: malloc_size :: in u64 = R0 +0000094c: malloc_result :: out u64 = R0 000003c3: 000006e8: R16 := 0x20000 @@ -286,11 +286,11 @@ 000006f7: R16 := R16 + 0x20 000006fc: call R17 with noreturn -0000088f: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008aa: memcpy_dst :: in out u64 = R0 -000008ab: memcpy_src :: in out u64 = R1 -000008ac: memcpy_n :: in u64 = R2 -000008ad: memcpy_result :: out u64 = R0 +00000907: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +0000094d: memcpy_dst :: in out u64 = R0 +0000094e: memcpy_src :: in out u64 = R1 +0000094f: memcpy_n :: in u64 = R2 +00000950: memcpy_result :: out u64 = R0 00000426: 00000684: R16 := 0x20000 @@ -298,11 +298,11 @@ 00000693: R16 := R16 00000698: call R17 with noreturn -00000890: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008ae: memset_buf :: in out u64 = R0 -000008af: memset_c :: in u32 = low:32[R1] -000008b0: memset_n :: in u64 = R2 -000008b1: memset_result :: out u64 = R0 +00000908: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000951: memset_buf :: in out u64 = R0 +00000952: memset_c :: in u32 = low:32[R1] +00000953: memset_n :: in u64 = R2 +00000954: memset_result :: out u64 = R0 000004ab: 00000701: R16 := 0x20000 @@ -310,9 +310,9 @@ 00000710: R16 := R16 + 0x28 00000715: call R17 with noreturn -00000891: sub puts(puts_s, puts_result) -000008b2: puts_s :: in u64 = R0 -000008b3: puts_result :: out u32 = low:32[R0] +00000909: sub puts(puts_s, puts_result) +00000955: puts_s :: in u64 = R0 +00000956: puts_result :: out u32 = low:32[R0] 0000043e: 0000074c: R16 := 0x20000 @@ -320,8 +320,8 @@ 0000075b: R16 := R16 + 0x40 00000760: call R17 with noreturn -00000892: sub register_tm_clones(register_tm_clones_result) -000008b4: register_tm_clones_result :: out u32 = low:32[R0] +0000090a: sub register_tm_clones(register_tm_clones_result) +00000957: register_tm_clones_result :: out u32 = low:32[R0] 000002d7: 000002db: R0 := 0x20000 @@ -334,14 +334,14 @@ 0000030d: R1 := R1 >> 1 00000319: #30 := R1 = 0 00000313: when #30 goto %00000311 -00000893: goto %0000052f +00000937: goto %0000052f 0000052f: 00000533: R2 := 0x1F000 0000053b: R2 := mem[R2 + 0xFE0, el]:u64 00000546: #70 := R2 = 0 00000540: when #70 goto %00000311 -00000894: goto %00000549 +00000938: goto %00000549 00000311: 0000031e: call R30 with noreturn @@ -350,9 +350,9 @@ 0000054f: R16 := R2 00000554: call R16 with noreturn -00000895: sub strlen(strlen_s, strlen_result) -000008b5: strlen_s :: in u64 = R0 -000008b6: strlen_result :: out u64 = R0 +0000090d: sub strlen(strlen_s, strlen_result) +00000958: strlen_s :: in u64 = R0 +00000959: strlen_result :: out u64 = R0 00000406: 0000069d: R16 := 0x20000 diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected new file mode 100644 index 000000000..8d4ba53d6 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,824 @@ +var {:extern} Gamma_R0: bool; +var {:extern} Gamma_R1: bool; +var {:extern} Gamma_R16: bool; +var {:extern} Gamma_R17: bool; +var {:extern} Gamma_R2: bool; +var {:extern} Gamma_R29: bool; +var {:extern} Gamma_R30: bool; +var {:extern} Gamma_R31: bool; +var {:extern} Gamma_R8: bool; +var {:extern} Gamma_R9: 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} R2: bv64; +var {:extern} R29: bv64; +var {:extern} R30: bv64; +var {:extern} R31: bv64; +var {:extern} R8: bv64; +var {:extern} R9: 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_be(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, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, 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, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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 #42: bv64; + var Gamma_#42: bool; + lmain: + assume {:captureState "lmain"} true; + R31, Gamma_R31 := bvsub64(R31, 64bv64), Gamma_R31; + #42, Gamma_#42 := bvadd64(R31, 48bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); + assume {:captureState "%0000039b"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); + assume {:captureState "%000003a0"} true; + R29, Gamma_R29 := bvadd64(R31, 48bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), true); + assume {:captureState "%000003af"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551600bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551600bv64), true); + assume {:captureState "%000003b7"} true; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2352bv64, true; + call malloc(); + goto l000003c7; + l000003c7: + assume {:captureState "l000003c7"} true; + R8, Gamma_R8 := 131072bv64, true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R8); + assume {:captureState "%000003d3"} true; + call rely(); + assert (L(mem, bvadd64(R8, 120bv64)) ==> Gamma_R0); + mem, Gamma_mem := memory_store64_le(mem, bvadd64(R8, 120bv64), R0), gamma_store64(Gamma_mem, bvadd64(R8, 120bv64), Gamma_R0); + assume {:captureState "%000003db"} true; + call rely(); + R8, Gamma_R8 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 8bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 8bv64), Gamma_R8); + assume {:captureState "%000003eb"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 97bv64), Gamma_R0; + stack, Gamma_stack := memory_store64_le(stack, R31, R0), gamma_store64(Gamma_stack, R31, Gamma_R0); + assume {:captureState "%00000400"} true; + R30, Gamma_R30 := 2388bv64, true; + call strlen(); + goto l0000040a; + l0000040a: + assume {:captureState "l0000040a"} true; + R1, Gamma_R1 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); + R30, Gamma_R30 := 2404bv64, true; + call memcpy(); + goto l0000042a; + l0000042a: + assume {:captureState "l0000042a"} true; + R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + R30, Gamma_R30 := 2416bv64, true; + call puts(); + goto l00000442; + l00000442: + assume {:captureState "l00000442"} true; + R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + R9, Gamma_R9 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + R9, Gamma_R9 := bvadd64(R9, 4bv64), Gamma_R9; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), R9), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), Gamma_R9); + assume {:captureState "%0000045f"} true; + R9, Gamma_R9 := memory_load64_le(stack, bvadd64(R29, 18446744073709551608bv64)), gamma_load64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64)); + call rely(); + assert (L(mem, R9) ==> true); + mem, Gamma_mem := memory_store8_be(mem, R9, 0bv8), gamma_store8(Gamma_mem, R9, true); + assume {:captureState "%0000046f"} true; + call rely(); + R9, Gamma_R9 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R9), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R9); + assume {:captureState "%0000047f"} true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + R30, Gamma_R30 := 2456bv64, true; + call strlen(); + goto l00000490; + l00000490: + assume {:captureState "l00000490"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); + R1, Gamma_R1 := 1bv64, true; + R30, Gamma_R30 := 2472bv64, true; + call memset(); + goto l000004af; + l000004af: + assume {:captureState "l000004af"} true; + R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); + R30, Gamma_R30 := 2484bv64, true; + call #free(); + goto l000004c7; + l000004c7: + assume {:captureState "l000004c7"} true; + R0, Gamma_R0 := 0bv32, true; + R29, Gamma_R29 := memory_load64_le(stack, bvadd64(R31, 48bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 48bv64)); + R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 56bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 56bv64)); + R31, Gamma_R31 := bvadd64(R31, 64bv64), 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, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free requires (memory_load8_le(mem, 2521bv64) == 0bv8); + free requires (memory_load8_le(mem, 2522bv64) == 2bv8); + free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2523bv64) == 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf index 8b595940b..c187b6cd1 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf @@ -1,16 +1,16 @@ -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: +Relocation section '.rela.dyn' at offset 0x578 contains 8 entries: Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +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 0x5e8 contains 10 entries: +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 @@ -26,8 +26,8 @@ Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: 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 + 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) @@ -41,104 +41,105 @@ Symbol table '.dynsym' contains 15 entries: 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 99 entries: +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 .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: 0000000000000984 0 SECTION LOCAL DEFAULT 14 .fini - 15: 0000000000000998 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 000000000000099c 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009d8 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: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 00000000000009ec 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 0000000000000998 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 0000000000000984 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 0000000000000990 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a00 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x.0 - 56: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d.1 - 57: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d.2 - 58: 000000000000003e 0 NOTYPE LOCAL DEFAULT 25 $d.3 - 59: 0000000000000a60 0 NOTYPE LOCAL DEFAULT 17 $d.4 - 60: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 61: 0000000000000a9c 0 NOTYPE LOCAL DEFAULT 17 $d - 62: 0000000000000a9c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 64: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 65: 000000000000099c 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 66: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 67: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 72: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 73: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 74: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 75: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 76: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata - 77: 0000000000000984 0 FUNC GLOBAL HIDDEN 14 _fini - 78: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 81: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 82: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 83: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 84: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 86: 0000000000000998 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 88: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end - 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 90: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 91: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf - 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 93: 0000000000020061 11 OBJECT GLOBAL DEFAULT 23 stext - 94: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 95: 00000000000008d4 176 FUNC GLOBAL DEFAULT 13 main - 96: 0000000000020070 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 97: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 98: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init + 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: 00000000000009c4 0 SECTION LOCAL DEFAULT 15 .fini + 16: 00000000000009d8 0 SECTION LOCAL DEFAULT 16 .rodata + 17: 00000000000009dc 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr + 18: 0000000000000a18 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: 0000000000000a2c 0 NOTYPE LOCAL DEFAULT 18 $d + 32: 00000000000009d8 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: 00000000000009c4 0 NOTYPE LOCAL DEFAULT 15 $x + 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 39: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x + 40: 00000000000009d0 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: 0000000000000a40 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: 0000000000000aa0 0 NOTYPE LOCAL DEFAULT 18 $d.4 + 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 62: 0000000000000adc 0 NOTYPE LOCAL DEFAULT 18 $d + 63: 0000000000000adc 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ + 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 65: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 66: 00000000000009dc 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: 00000000000009c4 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: 00000000000009d8 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 176 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/clang_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..ecd840932 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,787 @@ +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 2572 20 2572)\n(code-region 2112 460 2112)\n(code-region 1904 192 1904)\n(code-region 1880 24 1880)\n(code-start 2164)\n(code-start 2112)\n(code-start 2388)\n(entry-point 2112)\n(external-reference 130992 _ITM_deregisterTMCloneTable)\n(external-reference 131000 __cxa_finalize)\n(external-reference 131008 __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 1880 0)\n(llvm:code-entry main 2388 184)\n(llvm:code-entry _start 2112 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 2572 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 2384 0)\n(llvm:code-entry __do_global_dtors_aux 2304 0)\n(llvm:code-entry register_tm_clones 2240 0)\n(llvm:code-entry deregister_tm_clones 2192 0)\n(llvm:code-entry call_weak_fn 2164 20)\n(llvm:code-entry .fini 2572 20)\n(llvm:code-entry .text 2112 460)\n(llvm:code-entry .plt 1904 192)\n(llvm:code-entry .init 1880 24)\n(llvm:elf-program-header 08 64936 600)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2596 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64952 496)\n(llvm:elf-program-header 03 64936 708)\n(llvm:elf-program-header 02 0 2856)\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 2596 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130488 496)\n(llvm:elf-virtual-program-header 03 130472 728)\n(llvm:elf-virtual-program-header 02 0 2856)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 2112)\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 131008 __gmon_start__)\n(llvm:name-reference 131000 __cxa_finalize)\n(llvm:name-reference 130992 _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 130984 64 65448)\n(llvm:section-entry .dynamic 130488 496 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 2656 200 2656)\n(llvm:section-entry .eh_frame_hdr 2596 60 2596)\n(llvm:section-entry .rodata 2592 4 2592)\n(llvm:section-entry .fini 2572 20 2572)\n(llvm:section-entry .text 2112 460 2112)\n(llvm:section-entry .plt 1904 192 1904)\n(llvm:section-entry .init 1880 24 1880)\n(llvm:section-entry .rela.plt 1640 240 1640)\n(llvm:section-entry .rela.dyn 1400 240 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 1880 0 1880 1880)\n(llvm:symbol-entry main 2388 184 2388 2388)\n(llvm:symbol-entry _start 2112 52 2112 2112)\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 2572 0 2572 2572)\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 2384 0 2384 2384)\n(llvm:symbol-entry __do_global_dtors_aux 2304 0 2304 2304)\n(llvm:symbol-entry register_tm_clones 2240 0 2240 2240)\n(llvm:symbol-entry deregister_tm_clones 2192 0 2192 2192)\n(llvm:symbol-entry call_weak_fn 2164 20 2164 2164)\n(mapped 0 2856 0)\n(mapped 130472 708 64936)\n(named-region 0 2856 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 179 .dynstr)\n(named-region 1316 30 .gnu.version)\n(named-region 1352 48 .gnu.version_r)\n(named-region 1400 240 .rela.dyn)\n(named-region 1640 240 .rela.plt)\n(named-region 1880 24 .init)\n(named-region 1904 192 .plt)\n(named-region 2112 460 .text)\n(named-region 2572 20 .fini)\n(named-region 2592 4 .rodata)\n(named-region 2596 60 .eh_frame_hdr)\n(named-region 2656 200 .eh_frame)\n(named-region 130472 8 .init_array)\n(named-region 130480 8 .fini_array)\n(named-region 130488 496 .dynamic)\n(named-region 130984 64 .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 2164 call_weak_fn)\n(named-symbol 2192 deregister_tm_clones)\n(named-symbol 2240 register_tm_clones)\n(named-symbol 2304 __do_global_dtors_aux)\n(named-symbol 2384 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 2572 _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 2112 _start)\n(named-symbol 2388 main)\n(named-symbol 1880 _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 240)\n(section 1640 240)\n(section 1880 24)\n(section 1904 192)\n(section 2112 460)\n(section 2572 20)\n(section 2592 4)\n(section 2596 60)\n(section 2656 200)\n(section 130472 8)\n(section 130480 8)\n(section 130488 496)\n(section 130984 64)\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 2856 true false true)\n(segment 130472 728 true true false)\n(subarch v8)\n(symbol-chunk 2164 20 2164)\n(symbol-chunk 2112 52 2112)\n(symbol-chunk 2388 184 2388)\n(symbol-value 2164 2164)\n(symbol-value 2192 2192)\n(symbol-value 2240 2240)\n(symbol-value 2304 2304)\n(symbol-value 2384 2384)\n(symbol-value 2572 2572)\n(symbol-value 2112 2112)\n(symbol-value 2388 2388)\n(symbol-value 1880 1880)\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\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\x28\x0b\x00\x00\x00\x00\x00\x00\x28\x0b\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"), +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\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\x28\x0b\x00\x00\x00\x00\x00\x00\x28\x0b\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\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\x24\x0a\x00\x00\x00\x00\x00\x00\x24\x0a\x00\x00\x00\x00\x00\x00\x24\x0a\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\xcc\xa8\x08\x16\x6f\x54\x78\x09\xc7\x6a\x9c\x3a\xb0\x99\x7c\xd8\x5a\xcf\xf1\x87\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\x40\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\x28\x0b\x00\x00\x00\x00\x00\x00\x28\x0b\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\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\x24\x0a\x00\x00\x00\x00\x00\x00\x24\x0a\x00\x00\x00\x00\x00\x00\x24\x0a\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\xcc\xa8\x08\x16\x6f\x54\x78\x09\xc7\x6a\x9c\x3a\xb0\x99\x7c\xd8\x5a\xcf\xf1\x87\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\x58\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\xa8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x50\x09\x00\x00\x00\x00\x00\x00\xb0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x54\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91"), +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\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\xcc\xa8\x08\x16\x6f\x54\x78\x09\xc7\x6a\x9c\x3a\xb0\x99\x7c\xd8\x5a\xcf\xf1\x87"), +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\x58\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, "\xa8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x50\x09\x00\x00\x00\x00\x00\x00\xb0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x54\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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", 0x668, "\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", 0x758, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x770, "\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", 0xA0C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0xA20, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0xA24, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x1c\xfe\xff\xff\x50\x00\x00\x00\x6c\xfe\xff\xff\x64\x00\x00\x00\x9c\xfe\xff\xff\x78\x00\x00\x00\xdc\xfe\xff\xff\x8c\x00\x00\x00\x2c\xff\xff\xff\xb0\x00\x00\x00\x30\xff\xff\xff\xd8\x00\x00\x00"), +Section(".eh_frame", 0xA60, "\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\xc4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x00\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x1c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x48\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\x74\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\x24\x00\x00\x00\x18\x00\x00\x00\x50\xfe\xff\xff\xb8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\xa0\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDB0, "\x00\x09\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\x0c\x00\x00\x00\x00\x00\x00\x00\x58\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x0c\x0a\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\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\x68\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\xf0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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, "\x50\x09\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFA8, "\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\x78\x00\x02\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\x54\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\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\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", 0x840, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xe8\x00\x00\xf0\x08\xe5\x47\xf9\xe8\x0f\x00\xf9\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x96\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x00\xf9\x08\x01\x40\xf9\xe8\x07\x00\xf9\xe0\x00\x00\xf0\x00\xe8\x47\xf9\xe0\x03\x00\xf9\x82\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7a\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x97\xff\xff\x97\xe8\x0f\x40\xf9\x09\x01\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\xa9\x83\x5f\xf8\x3f\x01\x00\x39\x09\x01\x40\xf9\xe9\x0b\x00\xf9\x00\x01\x40\xf9\x71\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x7d\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x8a\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xB27), Attr("segment","02 0 2856")), +Annotation(Region(0x840,0x873), 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,0x667), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x668,0x757), Attr("section","\".rela.plt\"")), +Annotation(Region(0x758,0x76F), Attr("section","\".init\"")), +Annotation(Region(0x770,0x82F), Attr("section","\".plt\"")), +Annotation(Region(0x758,0x76F), Attr("code-region","()")), +Annotation(Region(0x770,0x82F), Attr("code-region","()")), +Annotation(Region(0x840,0x873), Attr("symbol-info","_start 0x840 52")), +Annotation(Region(0x874,0x887), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x874,0x887), Attr("symbol-info","call_weak_fn 0x874 20")), +Annotation(Region(0x954,0xA0B), Attr("symbol","\"main\"")), +Annotation(Region(0x954,0xA0B), Attr("symbol-info","main 0x954 184")), +Annotation(Region(0xA0C,0xA1F), Attr("section","\".fini\"")), +Annotation(Region(0xA20,0xA23), Attr("section","\".rodata\"")), +Annotation(Region(0xA24,0xA5F), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA60,0xB27), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDA8,0x2006B), Attr("segment","03 0x1FDA8 728")), +Annotation(Region(0x1FDB0,0x1FDB7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDB8,0x1FFA7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDA8,0x1FDAF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFA8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x840,0xA0B), Attr("section","\".text\"")), +Annotation(Region(0x840,0xA0B), Attr("code-region","()")), +Annotation(Region(0xA0C,0xA1F), Attr("code-region","()"))]), +Program(Tid(2_268, "%000008dc"), Attrs([]), + Subs([Sub(Tid(2_197, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_269, "%000008dd"), + 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_348, "@__cxa_finalize"), + Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x7C0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x7C4"), +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_783, "%000006f7"), Attrs([Attr("address","0x7C8"), +Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_788, "%000006fc"), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_198, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_270, "%000008de"), + 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(810, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x900")]), Phis([]), Defs([Def(Tid(817, "%00000331"), + Attrs([Attr("address","0x900"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(822, "%00000336"), Attrs([Attr("address","0x900"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(827, "%0000033b"), Attrs([Attr("address","0x900"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(831, "%0000033f"), Attrs([Attr("address","0x900"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#34",Imm(64))), Def(Tid(838, "%00000346"), + Attrs([Attr("address","0x904"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(846, "%0000034e"), + Attrs([Attr("address","0x908"), 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(852, "%00000354"), Attrs([Attr("address","0x90C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(861, "%0000035d"), Attrs([Attr("address","0x910"), +Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), +Def(Tid(873, "%00000369"), Attrs([Attr("address","0x914"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(867, "%00000363"), Attrs([Attr("address","0x914"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(865, "%00000361"))), Goto(Tid(2_258, "%000008d2"), Attrs([]), + Int(1,1), Direct(Tid(1_282, "%00000502")))])), Blk(Tid(1_282, "%00000502"), + Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x918"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x91C"), +Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64)), +Def(Tid(1_306, "%0000051a"), Attrs([Attr("address","0x920"), +Attr("insn","cbz x0, #0x10")]), Var("#70",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_300, "%00000514"), + Attrs([Attr("address","0x920"), Attr("insn","cbz x0, #0x10")]), + Var("#70",Imm(1)), Direct(Tid(1_298, "%00000512"))), +Goto(Tid(2_259, "%000008d3"), Attrs([]), Int(1,1), +Direct(Tid(1_330, "%00000532")))])), Blk(Tid(1_330, "%00000532"), + Attrs([Attr("address","0x924")]), Phis([]), +Defs([Def(Tid(1_334, "%00000536"), Attrs([Attr("address","0x924"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_342, "%0000053e"), Attrs([Attr("address","0x928"), +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_347, "%00000543"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(1_350, "%00000546"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_197, "@__cxa_finalize")),Direct(Tid(1_298, "%00000512"))))])), +Blk(Tid(1_298, "%00000512"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_311, "%0000051f"), Attrs([Attr("address","0x930"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2356,64))]), +Jmps([Call(Tid(1_313, "%00000521"), Attrs([Attr("address","0x930"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_211, "@deregister_tm_clones")),Direct(Tid(1_315, "%00000523"))))])), +Blk(Tid(1_315, "%00000523"), Attrs([Attr("address","0x934")]), Phis([]), +Defs([Def(Tid(1_320, "%00000528"), Attrs([Attr("address","0x934"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_328, "%00000530"), Attrs([Attr("address","0x938"), +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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_260, "%000008d4"), Attrs([]), Int(1,1), +Direct(Tid(865, "%00000361")))])), Blk(Tid(865, "%00000361"), + Attrs([Attr("address","0x93C")]), Phis([]), Defs([Def(Tid(881, "%00000371"), + Attrs([Attr("address","0x93C"), 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(891, "%0000037b"), Attrs([Attr("address","0x940"), +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(895, "%0000037f"), Attrs([Attr("address","0x940"), +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(898, "%00000382"), Attrs([Attr("address","0x940"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(903, "%00000387"), + Attrs([Attr("address","0x944"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_202, "@__libc_start_main"), + Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), +Attr("address","0x7B0"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_271, "%000008df"), + 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_272, "%000008e0"), 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_273, "%000008e1"), 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_274, "%000008e2"), 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_275, "%000008e3"), 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(622, "@__libc_start_main"), + Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_743, "%000006cf"), Attrs([Attr("address","0x7B0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x7B4"), +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_758, "%000006de"), Attrs([Attr("address","0x7B8"), +Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_763, "%000006e3"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_203, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0xA0C")]), + "_fini", Args([Arg(Tid(2_276, "%000008e4"), + 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","0xA0C")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0xA10"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0xA10"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0xA10"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0xA10"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0xA14"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0xA18"), +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(76, "%0000004c"), Attrs([Attr("address","0xA18"), +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(79, "%0000004f"), Attrs([Attr("address","0xA18"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0xA1C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_204, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x758")]), + "_init", Args([Arg(Tid(2_277, "%000008e5"), + 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_966, "@_init"), + Attrs([Attr("address","0x758")]), Phis([]), +Defs([Def(Tid(1_975, "%000007b7"), Attrs([Attr("address","0x75C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#101",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_980, "%000007bc"), Attrs([Attr("address","0x75C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#101",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_985, "%000007c1"), Attrs([Attr("address","0x75C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#101",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_989, "%000007c5"), Attrs([Attr("address","0x75C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#101",Imm(64))), Def(Tid(1_996, "%000007cc"), + Attrs([Attr("address","0x760"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_001, "%000007d1"), + Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1896,64))]), Jmps([Call(Tid(2_003, "%000007d3"), + Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_209, "@call_weak_fn")),Direct(Tid(2_005, "%000007d5"))))])), +Blk(Tid(2_005, "%000007d5"), Attrs([Attr("address","0x768")]), Phis([]), +Defs([Def(Tid(2_013, "%000007dd"), Attrs([Attr("address","0x768"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(2_017, "%000007e1"), Attrs([Attr("address","0x768"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(2_020, "%000007e4"), Attrs([Attr("address","0x768"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_025, "%000007e9"), + Attrs([Attr("address","0x76C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_205, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_278, "%000008e6"), + 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(548, "@_start"), + Attrs([Attr("address","0x840")]), Phis([]), Defs([Def(Tid(554, "%0000022a"), + Attrs([Attr("address","0x844"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(560, "%00000230"), + Attrs([Attr("address","0x848"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(568, "%00000238"), + Attrs([Attr("address","0x84C"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(576, "%00000240"), + Attrs([Attr("address","0x850"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(583, "%00000247"), Attrs([Attr("address","0x854"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(590, "%0000024e"), + Attrs([Attr("address","0x858"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(596, "%00000254"), + Attrs([Attr("address","0x85C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(604, "%0000025c"), + Attrs([Attr("address","0x860"), 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(610, "%00000262"), Attrs([Attr("address","0x864"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(616, "%00000268"), Attrs([Attr("address","0x868"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x86C"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2160,64))]), +Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x86C"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_202, "@__libc_start_main")),Direct(Tid(626, "%00000272"))))])), +Blk(Tid(626, "%00000272"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(629, "%00000275"), Attrs([Attr("address","0x870"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2164,64))]), +Jmps([Call(Tid(632, "%00000278"), Attrs([Attr("address","0x870"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_208, "@abort")),Direct(Tid(2_261, "%000008d5"))))])), +Blk(Tid(2_261, "%000008d5"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_262, "%000008d6"), Attrs([]), Int(1,1), +(Direct(Tid(2_209, "@call_weak_fn")),))]))])), Sub(Tid(2_208, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x800"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(630, "@abort"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(1_868, "%0000074c"), Attrs([Attr("address","0x800"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x804"), +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_883, "%0000075b"), Attrs([Attr("address","0x808"), +Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_888, "%00000760"), + Attrs([Attr("address","0x80C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_209, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x874")]), + "call_weak_fn", Args([Arg(Tid(2_279, "%000008e7"), + 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(634, "@call_weak_fn"), + Attrs([Attr("address","0x874")]), Phis([]), Defs([Def(Tid(638, "%0000027e"), + Attrs([Attr("address","0x874"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(646, "%00000286"), + Attrs([Attr("address","0x878"), Attr("insn","ldr x0, [x0, #0xfc0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(658, "%00000292"), Attrs([Attr("address","0x87C"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(652, "%0000028c"), + Attrs([Attr("address","0x87C"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(650, "%0000028a"))), +Goto(Tid(2_263, "%000008d7"), Attrs([]), Int(1,1), +Direct(Tid(1_430, "%00000596")))])), Blk(Tid(650, "%0000028a"), + Attrs([Attr("address","0x884")]), Phis([]), Defs([]), +Jmps([Call(Tid(663, "%00000297"), Attrs([Attr("address","0x884"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_430, "%00000596"), Attrs([Attr("address","0x880")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_433, "%00000599"), Attrs([Attr("address","0x880"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_431, "@__gmon_start__")))])), Blk(Tid(1_431, "@__gmon_start__"), + Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x7F0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x7F4"), +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_858, "%00000742"), Attrs([Attr("address","0x7F8"), +Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_863, "%00000747"), + Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_211, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x890")]), + "deregister_tm_clones", Args([Arg(Tid(2_280, "%000008e8"), + 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(669, "@deregister_tm_clones"), + Attrs([Attr("address","0x890")]), Phis([]), Defs([Def(Tid(673, "%000002a1"), + Attrs([Attr("address","0x890"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(680, "%000002a8"), + Attrs([Attr("address","0x894"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(686, "%000002ae"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(693, "%000002b5"), Attrs([Attr("address","0x89C"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(701, "%000002bd"), + Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(705, "%000002c1"), Attrs([Attr("address","0x8A0"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(708, "%000002c4"), + Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x8A0"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(714, "%000002ca"), + Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(728, "%000002d8"), Attrs([Attr("address","0x8A4"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(722, "%000002d2"), Attrs([Attr("address","0x8A4"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(720, "%000002d0"))), Goto(Tid(2_264, "%000008d8"), Attrs([]), + Int(1,1), Direct(Tid(1_391, "%0000056f")))])), Blk(Tid(1_391, "%0000056f"), + Attrs([Attr("address","0x8A8")]), Phis([]), +Defs([Def(Tid(1_395, "%00000573"), Attrs([Attr("address","0x8A8"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x8AC"), +Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64)), +Def(Tid(1_414, "%00000586"), Attrs([Attr("address","0x8B0"), +Attr("insn","cbz x1, #0xc")]), Var("#78",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_408, "%00000580"), + Attrs([Attr("address","0x8B0"), Attr("insn","cbz x1, #0xc")]), + Var("#78",Imm(1)), Direct(Tid(720, "%000002d0"))), +Goto(Tid(2_265, "%000008d9"), Attrs([]), Int(1,1), +Direct(Tid(1_417, "%00000589")))])), Blk(Tid(720, "%000002d0"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([]), +Jmps([Call(Tid(733, "%000002dd"), Attrs([Attr("address","0x8BC"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_417, "%00000589"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_423, "%0000058f"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_428, "%00000594"), Attrs([Attr("address","0x8B8"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_214, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x950")]), "frame_dummy", Args([Arg(Tid(2_281, "%000008e9"), + 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(909, "@frame_dummy"), + Attrs([Attr("address","0x950")]), Phis([]), Defs([]), +Jmps([Call(Tid(911, "%0000038f"), Attrs([Attr("address","0x950"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_221, "@register_tm_clones")),))]))])), Sub(Tid(2_215, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x820"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_282, "%000008ea"), + 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_244, "@free"), Attrs([Attr("address","0x820")]), + Phis([]), Defs([Def(Tid(1_918, "%0000077e"), Attrs([Attr("address","0x820"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x824"), +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_933, "%0000078d"), Attrs([Attr("address","0x828"), +Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_938, "%00000792"), + Attrs([Attr("address","0x82C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_216, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x954")]), "main", Args([Arg(Tid(2_283, "%000008eb"), + 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_284, "%000008ec"), + 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_285, "%000008ed"), + 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(913, "@main"), + Attrs([Attr("address","0x954")]), Phis([]), Defs([Def(Tid(918, "%00000396"), + Attrs([Attr("address","0x954"), Attr("insn","sub sp, sp, #0x40")]), + Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), +Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x958"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(931, "%000003a3"), + Attrs([Attr("address","0x958"), Attr("insn","stp x29, x30, [sp, #0x30]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(936, "%000003a8"), Attrs([Attr("address","0x958"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(943, "%000003af"), Attrs([Attr("address","0x95C"), +Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(949, "%000003b5"), + Attrs([Attr("address","0x960"), Attr("insn","adrp x8, #0x1f000")]), + Var("R8",Imm(64)), Int(126976,64)), Def(Tid(957, "%000003bd"), + Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [x8, #0xfc8]")]), + Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x968"), +Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x96C"), +Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x970"), +Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x974"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(992, "%000003e0"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2428,64))]), +Jmps([Call(Tid(995, "%000003e3"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1a8")]), Int(1,1), +(Direct(Tid(2_217, "@malloc")),Direct(Tid(997, "%000003e5"))))])), +Blk(Tid(997, "%000003e5"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x97C"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x980"), +Attr("insn","str x0, [x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R8",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x984"), +Attr("insn","ldr x8, [x8]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_027, "%00000403"), Attrs([Attr("address","0x988"), +Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x98C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x990"), +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)), +Def(Tid(1_049, "%00000419"), Attrs([Attr("address","0x994"), +Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_054, "%0000041e"), Attrs([Attr("address","0x998"), +Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2460,64))]), +Jmps([Call(Tid(1_057, "%00000421"), Attrs([Attr("address","0x998"), +Attr("insn","bl #-0x1f8")]), Int(1,1), +(Direct(Tid(2_224, "@strlen")),Direct(Tid(1_059, "%00000423"))))])), +Blk(Tid(1_059, "%00000423"), Attrs([Attr("address","0x99C")]), Phis([]), +Defs([Def(Tid(1_065, "%00000429"), Attrs([Attr("address","0x99C"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x9A0"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x9A4"), +Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2476,64))]), +Jmps([Call(Tid(1_089, "%00000441"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_218, "@memcpy")),Direct(Tid(1_091, "%00000443"))))])), +Blk(Tid(1_091, "%00000443"), Attrs([Attr("address","0x9AC")]), Phis([]), +Defs([Def(Tid(1_097, "%00000449"), Attrs([Attr("address","0x9AC"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_105, "%00000451"), Attrs([Attr("address","0x9B0"), +Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_110, "%00000456"), Attrs([Attr("address","0x9B4"), +Attr("insn","bl #-0x1a4")]), Var("R30",Imm(64)), Int(2488,64))]), +Jmps([Call(Tid(1_113, "%00000459"), Attrs([Attr("address","0x9B4"), +Attr("insn","bl #-0x1a4")]), Int(1,1), +(Direct(Tid(2_220, "@puts")),Direct(Tid(1_115, "%0000045b"))))])), +Blk(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x9B8")]), Phis([]), +Defs([Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x9B8"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x9BC"), +Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_136, "%00000470"), Attrs([Attr("address","0x9C0"), +Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_144, "%00000478"), + Attrs([Attr("address","0x9C4"), Attr("insn","stur x9, [x29, #-0x8]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_152, "%00000480"), Attrs([Attr("address","0x9C8"), +Attr("insn","ldur x9, [x29, #-0x8]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), +Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x9CC"), +Attr("insn","strb wzr, [x9]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),BigEndian(),8)), +Def(Tid(1_168, "%00000490"), Attrs([Attr("address","0x9D0"), +Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_176, "%00000498"), Attrs([Attr("address","0x9D4"), +Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), +Def(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x9D8"), +Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x9DC"), +Attr("insn","bl #-0x23c")]), Var("R30",Imm(64)), Int(2528,64))]), +Jmps([Call(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x9DC"), +Attr("insn","bl #-0x23c")]), Int(1,1), +(Direct(Tid(2_224, "@strlen")),Direct(Tid(1_193, "%000004a9"))))])), +Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x9E0")]), Phis([]), +Defs([Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x9E0"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_207, "%000004b7"), Attrs([Attr("address","0x9E4"), +Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_214, "%000004be"), Attrs([Attr("address","0x9E8"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x9EC"), +Attr("insn","bl #-0x20c")]), Var("R30",Imm(64)), Int(2544,64))]), +Jmps([Call(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x9EC"), +Attr("insn","bl #-0x20c")]), Int(1,1), +(Direct(Tid(2_219, "@memset")),Direct(Tid(1_224, "%000004c8"))))])), +Blk(Tid(1_224, "%000004c8"), Attrs([Attr("address","0x9F0")]), Phis([]), +Defs([Def(Tid(1_230, "%000004ce"), Attrs([Attr("address","0x9F0"), +Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_238, "%000004d6"), Attrs([Attr("address","0x9F4"), +Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), +Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x9F8"), +Attr("insn","bl #-0x1d8")]), Var("R30",Imm(64)), Int(2556,64))]), +Jmps([Call(Tid(1_246, "%000004de"), Attrs([Attr("address","0x9F8"), +Attr("insn","bl #-0x1d8")]), Int(1,1), +(Direct(Tid(2_215, "@free")),Direct(Tid(1_248, "%000004e0"))))])), +Blk(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x9FC")]), Phis([]), +Defs([Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x9FC"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), +Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0xA00"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), +Def(Tid(1_268, "%000004f4"), Attrs([Attr("address","0xA00"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), +Def(Tid(1_275, "%000004fb"), Attrs([Attr("address","0xA04"), +Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_280, "%00000500"), + Attrs([Attr("address","0xA08"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_217, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x7D0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_286, "%000008ee"), 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_287, "%000008ef"), + 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(993, "@malloc"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_793, "%00000701"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x7D4"), +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_808, "%00000710"), Attrs([Attr("address","0x7D8"), +Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_813, "%00000715"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_218, "@memcpy"), + Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), +Attr("address","0x790"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_288, "%000008f0"), 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_289, "%000008f1"), + 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_290, "%000008f2"), 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_291, "%000008f3"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_087, "@memcpy"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_693, "%0000069d"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_701, "%000006a5"), Attrs([Attr("address","0x794"), +Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), +Def(Tid(1_708, "%000006ac"), Attrs([Attr("address","0x798"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_713, "%000006b1"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_219, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x7E0"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_292, "%000008f4"), 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_293, "%000008f5"), + 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_294, "%000008f6"), + 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_295, "%000008f7"), 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_220, "@memset"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_818, "%0000071a"), Attrs([Attr("address","0x7E0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x7E4"), +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_833, "%00000729"), Attrs([Attr("address","0x7E8"), +Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_838, "%0000072e"), + Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_220, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x810"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_296, "%000008f8"), 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_297, "%000008f9"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_111, "@puts"), Attrs([Attr("address","0x810")]), Phis([]), +Defs([Def(Tid(1_893, "%00000765"), Attrs([Attr("address","0x810"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x814"), +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_908, "%00000774"), Attrs([Attr("address","0x818"), +Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_913, "%00000779"), + Attrs([Attr("address","0x81C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_221, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "register_tm_clones", Args([Arg(Tid(2_298, "%000008fa"), + 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(735, "@register_tm_clones"), Attrs([Attr("address","0x8C0")]), + Phis([]), Defs([Def(Tid(739, "%000002e3"), Attrs([Attr("address","0x8C0"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x8C4"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(752, "%000002f0"), + Attrs([Attr("address","0x8C8"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(759, "%000002f7"), + Attrs([Attr("address","0x8CC"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(767, "%000002ff"), Attrs([Attr("address","0x8D0"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(774, "%00000306"), + Attrs([Attr("address","0x8D4"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(782, "%0000030e"), Attrs([Attr("address","0x8D8"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(789, "%00000315"), Attrs([Attr("address","0x8DC"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(801, "%00000321"), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(795, "%0000031b"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(793, "%00000319"))), Goto(Tid(2_266, "%000008da"), Attrs([]), + Int(1,1), Direct(Tid(1_352, "%00000548")))])), Blk(Tid(1_352, "%00000548"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_356, "%0000054c"), Attrs([Attr("address","0x8E4"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8E8"), +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)), +Def(Tid(1_375, "%0000055f"), Attrs([Attr("address","0x8EC"), +Attr("insn","cbz x2, #0xc")]), Var("#73",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_369, "%00000559"), + Attrs([Attr("address","0x8EC"), Attr("insn","cbz x2, #0xc")]), + Var("#73",Imm(1)), Direct(Tid(793, "%00000319"))), +Goto(Tid(2_267, "%000008db"), Attrs([]), Int(1,1), +Direct(Tid(1_378, "%00000562")))])), Blk(Tid(793, "%00000319"), + Attrs([Attr("address","0x8F8")]), Phis([]), Defs([]), +Jmps([Call(Tid(806, "%00000326"), Attrs([Attr("address","0x8F8"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_378, "%00000562"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8F0"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x8F4"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_224, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x7A0"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_299, "%000008fb"), 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_300, "%000008fc"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_055, "@strlen"), + Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_726, "%000006be"), Attrs([Attr("address","0x7A4"), +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_733, "%000006c5"), Attrs([Attr("address","0x7A8"), +Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_738, "%000006ca"), + Attrs([Attr("address","0x7AC"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..eedb3fa69 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,363 @@ +000008dc: program +00000895: sub __cxa_finalize(__cxa_finalize_result) +000008dd: __cxa_finalize_result :: out u32 = low:32[R0] + +00000544: +000006e8: R16 := 0x20000 +000006f0: R17 := mem[R16 + 0x18, el]:u64 +000006f7: R16 := R16 + 0x18 +000006fc: call R17 with noreturn + +00000896: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008de: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000032a: +00000331: #34 := R31 - 0x20 +00000336: mem := mem with [#34, el]:u64 <- R29 +0000033b: mem := mem with [#34 + 8, el]:u64 <- R30 +0000033f: R31 := #34 +00000346: R29 := R31 +0000034e: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000354: R19 := 0x20000 +0000035d: R0 := pad:32[mem[R19 + 0x70]] +00000369: #36 := ~~0:0[R0] +00000363: when #36 goto %00000361 +000008d2: goto %00000502 + +00000502: +00000506: R0 := 0x1F000 +0000050e: R0 := mem[R0 + 0xFB8, el]:u64 +0000051a: #70 := R0 = 0 +00000514: when #70 goto %00000512 +000008d3: goto %00000532 + +00000532: +00000536: R0 := 0x20000 +0000053e: R0 := mem[R0 + 0x58, el]:u64 +00000543: R30 := 0x930 +00000546: call @__cxa_finalize with return %00000512 + +00000512: +0000051f: R30 := 0x934 +00000521: call @deregister_tm_clones with return %00000523 + +00000523: +00000528: R0 := 1 +00000530: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] +000008d4: goto %00000361 + +00000361: +00000371: R19 := mem[R31 + 0x10, el]:u64 +0000037b: R29 := mem[R31, el]:u64 +0000037f: R30 := mem[R31 + 8, el]:u64 +00000382: R31 := R31 + 0x20 +00000387: call R30 with noreturn + +0000089a: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008df: __libc_start_main_main :: in u64 = R0 +000008e0: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008e1: __libc_start_main_arg3 :: in out u64 = R2 +000008e2: __libc_start_main_auxv :: in out u64 = R3 +000008e3: __libc_start_main_result :: out u32 = low:32[R0] + +0000026e: +000006cf: R16 := 0x20000 +000006d7: R17 := mem[R16 + 0x10, el]:u64 +000006de: R16 := R16 + 0x10 +000006e3: call R17 with noreturn + +0000089b: sub _fini(_fini_result) +000008e4: _fini_result :: out u32 = low:32[R0] + +00000020: +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +0000089c: sub _init(_init_result) +000008e5: _init_result :: out u32 = low:32[R0] + +000007ae: +000007b7: #101 := R31 - 0x10 +000007bc: mem := mem with [#101, el]:u64 <- R29 +000007c1: mem := mem with [#101 + 8, el]:u64 <- R30 +000007c5: R31 := #101 +000007cc: R29 := R31 +000007d1: R30 := 0x768 +000007d3: call @call_weak_fn with return %000007d5 + +000007d5: +000007dd: R29 := mem[R31, el]:u64 +000007e1: R30 := mem[R31 + 8, el]:u64 +000007e4: R31 := R31 + 0x10 +000007e9: call R30 with noreturn + +0000089d: sub _start(_start_result) +000008e6: _start_result :: out u32 = low:32[R0] + +00000224: +0000022a: R29 := 0 +00000230: R30 := 0 +00000238: R5 := R0 +00000240: R1 := mem[R31, el]:u64 +00000247: R2 := R31 + 8 +0000024e: R6 := R31 +00000254: R0 := 0x1F000 +0000025c: R0 := mem[R0 + 0xFD8, el]:u64 +00000262: R3 := 0 +00000268: R4 := 0 +0000026d: R30 := 0x870 +00000270: call @__libc_start_main with return %00000272 + +00000272: +00000275: R30 := 0x874 +00000278: call @abort with return %000008d5 + +000008d5: +000008d6: call @call_weak_fn with noreturn + +000008a0: sub abort() + + +00000276: +0000074c: R16 := 0x20000 +00000754: R17 := mem[R16 + 0x38, el]:u64 +0000075b: R16 := R16 + 0x38 +00000760: call R17 with noreturn + +000008a1: sub call_weak_fn(call_weak_fn_result) +000008e7: call_weak_fn_result :: out u32 = low:32[R0] + +0000027a: +0000027e: R0 := 0x1F000 +00000286: R0 := mem[R0 + 0xFC0, el]:u64 +00000292: #12 := R0 = 0 +0000028c: when #12 goto %0000028a +000008d7: goto %00000596 + +0000028a: +00000297: call R30 with noreturn + +00000596: +00000599: goto @__gmon_start__ + +00000597: +00000733: R16 := 0x20000 +0000073b: R17 := mem[R16 + 0x30, el]:u64 +00000742: R16 := R16 + 0x30 +00000747: call R17 with noreturn + +000008a3: sub deregister_tm_clones(deregister_tm_clones_result) +000008e8: deregister_tm_clones_result :: out u32 = low:32[R0] + +0000029d: +000002a1: R0 := 0x20000 +000002a8: R0 := R0 + 0x70 +000002ae: R1 := 0x20000 +000002b5: R1 := R1 + 0x70 +000002bd: #16 := 1 + ~R0 + R1 +000002c1: NF := 63:63[#16] +000002c4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002c7: ZF := #16 = 0 +000002ca: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002d8: #21 := ZF +000002d2: when #21 goto %000002d0 +000008d8: goto %0000056f + +0000056f: +00000573: R1 := 0x1F000 +0000057b: R1 := mem[R1 + 0xFB0, el]:u64 +00000586: #78 := R1 = 0 +00000580: when #78 goto %000002d0 +000008d9: goto %00000589 + +000002d0: +000002dd: call R30 with noreturn + +00000589: +0000058f: R16 := R1 +00000594: call R16 with noreturn + +000008a6: sub frame_dummy(frame_dummy_result) +000008e9: frame_dummy_result :: out u32 = low:32[R0] + +0000038d: +0000038f: call @register_tm_clones with noreturn + +000008a7: sub free(free_ptr) +000008ea: free_ptr :: in out u64 = R0 + +000004dc: +0000077e: R16 := 0x20000 +00000786: R17 := mem[R16 + 0x48, el]:u64 +0000078d: R16 := R16 + 0x48 +00000792: call R17 with noreturn + +000008a8: sub main(main_argc, main_argv, main_result) +000008eb: main_argc :: in u32 = low:32[R0] +000008ec: main_argv :: in out u64 = R1 +000008ed: main_result :: out u32 = low:32[R0] + +00000391: +00000396: R31 := R31 - 0x40 +0000039e: #42 := R31 + 0x30 +000003a3: mem := mem with [#42, el]:u64 <- R29 +000003a8: mem := mem with [#42 + 8, el]:u64 <- R30 +000003af: R29 := R31 + 0x30 +000003b5: R8 := 0x1F000 +000003bd: R8 := mem[R8 + 0xFC8, el]:u64 +000003c5: mem := mem with [R31 + 0x18, el]:u64 <- R8 +000003cd: mem := mem with [R29 - 8, el]:u64 <- 0 +000003d5: mem := mem with [R29 - 0x10, el]:u64 <- 0 +000003db: R0 := 0xB +000003e0: R30 := 0x97C +000003e3: call @malloc with return %000003e5 + +000003e5: +000003eb: R8 := mem[R31 + 0x18, el]:u64 +000003f3: mem := mem with [R8, el]:u64 <- R0 +000003fb: R8 := mem[R8, el]:u64 +00000403: mem := mem with [R31 + 8, el]:u64 <- R8 +00000409: R0 := 0x1F000 +00000411: R0 := mem[R0 + 0xFD0, el]:u64 +00000419: mem := mem with [R31, el]:u64 <- R0 +0000041e: R30 := 0x99C +00000421: call @strlen with return %00000423 + +00000423: +00000429: R1 := mem[R31, el]:u64 +00000431: R2 := R0 +00000439: R0 := mem[R31 + 8, el]:u64 +0000043e: R30 := 0x9AC +00000441: call @memcpy with return %00000443 + +00000443: +00000449: R8 := mem[R31 + 0x18, el]:u64 +00000451: R0 := mem[R8, el]:u64 +00000456: R30 := 0x9B8 +00000459: call @puts with return %0000045b + +0000045b: +00000461: R8 := mem[R31 + 0x18, el]:u64 +00000469: R9 := mem[R8, el]:u64 +00000470: R9 := R9 + 4 +00000478: mem := mem with [R29 - 8, el]:u64 <- R9 +00000480: R9 := mem[R29 - 8, el]:u64 +00000488: mem := mem with [R9] <- 0 +00000490: R9 := mem[R8, el]:u64 +00000498: mem := mem with [R31 + 0x10, el]:u64 <- R9 +000004a0: R0 := mem[R8, el]:u64 +000004a5: R30 := 0x9E0 +000004a7: call @strlen with return %000004a9 + +000004a9: +000004af: R2 := R0 +000004b7: R0 := mem[R31 + 0x10, el]:u64 +000004be: R1 := 1 +000004c3: R30 := 0x9F0 +000004c6: call @memset with return %000004c8 + +000004c8: +000004ce: R8 := mem[R31 + 0x18, el]:u64 +000004d6: R0 := mem[R8, el]:u64 +000004db: R30 := 0x9FC +000004de: call @free with return %000004e0 + +000004e0: +000004e7: R0 := 0 +000004f0: R29 := mem[R31 + 0x30, el]:u64 +000004f4: R30 := mem[R31 + 0x38, el]:u64 +000004fb: R31 := R31 + 0x40 +00000500: call R30 with noreturn + +000008a9: sub malloc(malloc_size, malloc_result) +000008ee: malloc_size :: in u64 = R0 +000008ef: malloc_result :: out u64 = R0 + +000003e1: +00000701: R16 := 0x20000 +00000709: R17 := mem[R16 + 0x20, el]:u64 +00000710: R16 := R16 + 0x20 +00000715: call R17 with noreturn + +000008aa: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008f0: memcpy_dst :: in out u64 = R0 +000008f1: memcpy_src :: in out u64 = R1 +000008f2: memcpy_n :: in u64 = R2 +000008f3: memcpy_result :: out u64 = R0 + +0000043f: +0000069d: R16 := 0x20000 +000006a5: R17 := mem[R16, el]:u64 +000006ac: R16 := R16 +000006b1: call R17 with noreturn + +000008ab: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008f4: memset_buf :: in out u64 = R0 +000008f5: memset_c :: in u32 = low:32[R1] +000008f6: memset_n :: in u64 = R2 +000008f7: memset_result :: out u64 = R0 + +000004c4: +0000071a: R16 := 0x20000 +00000722: R17 := mem[R16 + 0x28, el]:u64 +00000729: R16 := R16 + 0x28 +0000072e: call R17 with noreturn + +000008ac: sub puts(puts_s, puts_result) +000008f8: puts_s :: in u64 = R0 +000008f9: puts_result :: out u32 = low:32[R0] + +00000457: +00000765: R16 := 0x20000 +0000076d: R17 := mem[R16 + 0x40, el]:u64 +00000774: R16 := R16 + 0x40 +00000779: call R17 with noreturn + +000008ad: sub register_tm_clones(register_tm_clones_result) +000008fa: register_tm_clones_result :: out u32 = low:32[R0] + +000002df: +000002e3: R0 := 0x20000 +000002ea: R0 := R0 + 0x70 +000002f0: R1 := 0x20000 +000002f7: R1 := R1 + 0x70 +000002ff: R1 := R1 - R0 +00000306: R2 := R1 >> 0x3F +0000030e: R1 := R2 + (R1 ~>> 3) +00000315: R1 := R1 >> 1 +00000321: #30 := R1 = 0 +0000031b: when #30 goto %00000319 +000008da: goto %00000548 + +00000548: +0000054c: R2 := 0x1F000 +00000554: R2 := mem[R2 + 0xFE0, el]:u64 +0000055f: #73 := R2 = 0 +00000559: when #73 goto %00000319 +000008db: goto %00000562 + +00000319: +00000326: call R30 with noreturn + +00000562: +00000568: R16 := R2 +0000056d: call R16 with noreturn + +000008b0: sub strlen(strlen_s, strlen_result) +000008fb: strlen_s :: in u64 = R0 +000008fc: strlen_result :: out u64 = R0 + +0000041f: +000006b6: R16 := 0x20000 +000006be: R17 := mem[R16 + 8, el]:u64 +000006c5: R16 := R16 + 8 +000006ca: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.expected new file mode 100644 index 000000000..8931fd7be --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,1068 @@ +var {:extern} Gamma_R0: bool; +var {:extern} Gamma_R1: bool; +var {:extern} Gamma_R16: bool; +var {:extern} Gamma_R17: bool; +var {:extern} Gamma_R2: bool; +var {:extern} Gamma_R29: bool; +var {:extern} Gamma_R30: bool; +var {:extern} Gamma_R31: bool; +var {:extern} Gamma_R8: bool; +var {:extern} Gamma_R9: 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} R2: bv64; +var {:extern} R29: bv64; +var {:extern} R30: bv64; +var {:extern} R31: bv64; +var {:extern} R8: bv64; +var {:extern} R9: 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_be(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, 2592bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free requires (memory_load8_le(mem, 2593bv64) == 0bv8); + free requires (memory_load8_le(mem, 2594bv64) == 2bv8); + free requires (memory_load8_le(mem, 2595bv64) == 0bv8); + free requires (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 0bv8); + free requires (memory_load8_le(mem, 131024bv64) == 97bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free requires (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, 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, 2592bv64) == 1bv8); + free requires (memory_load8_le(mem, 2593bv64) == 0bv8); + free requires (memory_load8_le(mem, 2594bv64) == 2bv8); + free requires (memory_load8_le(mem, 2595bv64) == 0bv8); + free requires (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 0bv8); + free requires (memory_load8_le(mem, 131024bv64) == 97bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free requires (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2592bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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 #42: bv64; + var Gamma_#42: bool; + lmain: + assume {:captureState "lmain"} true; + R31, Gamma_R31 := bvsub64(R31, 64bv64), Gamma_R31; + #42, Gamma_#42 := bvadd64(R31, 48bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); + assume {:captureState "%000003a3"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); + assume {:captureState "%000003a8"} true; + R29, Gamma_R29 := bvadd64(R31, 48bv64), Gamma_R31; + R8, Gamma_R8 := 126976bv64, true; + call rely(); + R8, Gamma_R8 := memory_load64_le(mem, bvadd64(R8, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 4040bv64)) || L(mem, bvadd64(R8, 4040bv64))); + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R8); + assume {:captureState "%000003c5"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), true); + assume {:captureState "%000003cd"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551600bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551600bv64), true); + assume {:captureState "%000003d5"} true; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2428bv64, true; + call malloc(); + goto l000003e5; + l000003e5: + assume {:captureState "l000003e5"} true; + R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + assert (L(mem, R8) ==> Gamma_R0); + mem, Gamma_mem := memory_store64_le(mem, R8, R0), gamma_store64(Gamma_mem, R8, Gamma_R0); + assume {:captureState "%000003f3"} true; + call rely(); + R8, Gamma_R8 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 8bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 8bv64), Gamma_R8); + assume {:captureState "%00000403"} true; + R0, Gamma_R0 := 126976bv64, true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4048bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4048bv64)) || L(mem, bvadd64(R0, 4048bv64))); + stack, Gamma_stack := memory_store64_le(stack, R31, R0), gamma_store64(Gamma_stack, R31, Gamma_R0); + assume {:captureState "%00000419"} true; + R30, Gamma_R30 := 2460bv64, true; + call strlen(); + goto l00000423; + l00000423: + assume {:captureState "l00000423"} true; + R1, Gamma_R1 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); + R30, Gamma_R30 := 2476bv64, true; + call memcpy(); + goto l00000443; + l00000443: + assume {:captureState "l00000443"} true; + R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); + R30, Gamma_R30 := 2488bv64, true; + call puts(); + goto l0000045b; + l0000045b: + assume {:captureState "l0000045b"} true; + R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + R9, Gamma_R9 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); + R9, Gamma_R9 := bvadd64(R9, 4bv64), Gamma_R9; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), R9), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), Gamma_R9); + assume {:captureState "%00000478"} true; + R9, Gamma_R9 := memory_load64_le(stack, bvadd64(R29, 18446744073709551608bv64)), gamma_load64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64)); + call rely(); + assert (L(mem, R9) ==> true); + mem, Gamma_mem := memory_store8_be(mem, R9, 0bv8), gamma_store8(Gamma_mem, R9, true); + assume {:captureState "%00000488"} true; + call rely(); + R9, Gamma_R9 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R9), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R9); + assume {:captureState "%00000498"} true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); + R30, Gamma_R30 := 2528bv64, true; + call strlen(); + goto l000004a9; + l000004a9: + assume {:captureState "l000004a9"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); + R1, Gamma_R1 := 1bv64, true; + R30, Gamma_R30 := 2544bv64, true; + call memset(); + goto l000004c8; + l000004c8: + assume {:captureState "l000004c8"} true; + R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); + R30, Gamma_R30 := 2556bv64, true; + call #free(); + goto l000004e0; + l000004e0: + assume {:captureState "l000004e0"} true; + R0, Gamma_R0 := 0bv32, true; + R29, Gamma_R29 := memory_load64_le(stack, bvadd64(R31, 48bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 48bv64)); + R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 56bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 56bv64)); + R31, Gamma_R31 := bvadd64(R31, 64bv64), 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, 2592bv64) == 1bv8); + free requires (memory_load8_le(mem, 2593bv64) == 0bv8); + free requires (memory_load8_le(mem, 2594bv64) == 2bv8); + free requires (memory_load8_le(mem, 2595bv64) == 0bv8); + free requires (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 0bv8); + free requires (memory_load8_le(mem, 131024bv64) == 97bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free requires (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free requires (memory_load8_le(mem, 2593bv64) == 0bv8); + free requires (memory_load8_le(mem, 2594bv64) == 2bv8); + free requires (memory_load8_le(mem, 2595bv64) == 0bv8); + free requires (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 0bv8); + free requires (memory_load8_le(mem, 131024bv64) == 97bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free requires (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free requires (memory_load8_le(mem, 2593bv64) == 0bv8); + free requires (memory_load8_le(mem, 2594bv64) == 2bv8); + free requires (memory_load8_le(mem, 2595bv64) == 0bv8); + free requires (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 0bv8); + free requires (memory_load8_le(mem, 131024bv64) == 97bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free requires (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free requires (memory_load8_le(mem, 2593bv64) == 0bv8); + free requires (memory_load8_le(mem, 2594bv64) == 2bv8); + free requires (memory_load8_le(mem, 2595bv64) == 0bv8); + free requires (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 0bv8); + free requires (memory_load8_le(mem, 131024bv64) == 97bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free requires (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free requires (memory_load8_le(mem, 2593bv64) == 0bv8); + free requires (memory_load8_le(mem, 2594bv64) == 2bv8); + free requires (memory_load8_le(mem, 2595bv64) == 0bv8); + free requires (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 0bv8); + free requires (memory_load8_le(mem, 131024bv64) == 97bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free requires (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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, 2592bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); + 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, 131016bv64) == 120bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); + 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, 130480bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); + 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, 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_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..27b0d451a --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,147 @@ + +Relocation section '.rela.dyn' at offset 0x578 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fda8 0000000000000403 R_AARCH64_RELATIVE 950 +000000000001fdb0 0000000000000403 R_AARCH64_RELATIVE 900 +000000000001ffc8 0000000000000403 R_AARCH64_RELATIVE 20078 +000000000001ffd0 0000000000000403 R_AARCH64_RELATIVE 20061 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 954 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffb0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffb8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffc0 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 0x668 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: 0000000000000758 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: 0000000000000668 0 SECTION LOCAL DEFAULT 11 .rela.plt + 12: 0000000000000758 0 SECTION LOCAL DEFAULT 12 .init + 13: 0000000000000770 0 SECTION LOCAL DEFAULT 13 .plt + 14: 0000000000000840 0 SECTION LOCAL DEFAULT 14 .text + 15: 0000000000000a0c 0 SECTION LOCAL DEFAULT 15 .fini + 16: 0000000000000a20 0 SECTION LOCAL DEFAULT 16 .rodata + 17: 0000000000000a24 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr + 18: 0000000000000a60 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: 000000000001ffa8 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: 0000000000000840 0 NOTYPE LOCAL DEFAULT 14 $x + 31: 0000000000000a74 0 NOTYPE LOCAL DEFAULT 18 $d + 32: 0000000000000a20 0 NOTYPE LOCAL DEFAULT 16 $d + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 34: 0000000000000874 0 NOTYPE LOCAL DEFAULT 14 $x + 35: 0000000000000874 20 FUNC LOCAL DEFAULT 14 call_weak_fn + 36: 0000000000000758 0 NOTYPE LOCAL DEFAULT 12 $x + 37: 0000000000000a0c 0 NOTYPE LOCAL DEFAULT 15 $x + 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 39: 0000000000000768 0 NOTYPE LOCAL DEFAULT 12 $x + 40: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 15 $x + 41: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 42: 0000000000000890 0 NOTYPE LOCAL DEFAULT 14 $x + 43: 0000000000000890 0 FUNC LOCAL DEFAULT 14 deregister_tm_clones + 44: 00000000000008c0 0 FUNC LOCAL DEFAULT 14 register_tm_clones + 45: 0000000000020058 0 NOTYPE LOCAL DEFAULT 24 $d + 46: 0000000000000900 0 FUNC LOCAL DEFAULT 14 __do_global_dtors_aux + 47: 0000000000020070 1 OBJECT LOCAL DEFAULT 25 completed.0 + 48: 000000000001fdb0 0 NOTYPE LOCAL DEFAULT 20 $d + 49: 000000000001fdb0 0 OBJECT LOCAL DEFAULT 20 __do_global_dtors_aux_fini_array_entry + 50: 0000000000000950 0 FUNC LOCAL DEFAULT 14 frame_dummy + 51: 000000000001fda8 0 NOTYPE LOCAL DEFAULT 19 $d + 52: 000000000001fda8 0 OBJECT LOCAL DEFAULT 19 __frame_dummy_init_array_entry + 53: 0000000000000a88 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: 0000000000000954 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: 0000000000000ae8 0 NOTYPE LOCAL DEFAULT 18 $d.4 + 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 62: 0000000000000b24 0 NOTYPE LOCAL DEFAULT 18 $d + 63: 0000000000000b24 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ + 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 65: 000000000001fdb8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 66: 0000000000000a24 0 NOTYPE LOCAL DEFAULT 17 __GNU_EH_FRAME_HDR + 67: 000000000001ffa8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 68: 0000000000000770 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: 0000000000000a0c 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: 0000000000000a20 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: 0000000000000840 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: 0000000000000954 184 FUNC GLOBAL DEFAULT 14 main + 97: 0000000000020070 0 OBJECT GLOBAL HIDDEN 24 __TMC_END__ + 98: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 99: 0000000000000758 0 FUNC GLOBAL HIDDEN 12 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt index ad96adf48..25875fa16 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt @@ -67,10 +67,10 @@ Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), Annotation(Region(0x7C0,0x9A3), Attr("section","\".text\"")), Annotation(Region(0x7C0,0x9A3), Attr("code-region","()")), Annotation(Region(0x9A4,0x9B7), Attr("code-region","()"))]), -Program(Tid(2_289, "%000008f1"), Attrs([]), +Program(Tid(2_332, "%0000091c"), Attrs([]), Subs([Sub(Tid(2_261, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_290, "%000008f2"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_333, "%0000091d"), 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_406, "@__cxa_finalize"), @@ -87,7 +87,7 @@ PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_846, "%00000736"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_262, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_291, "%000008f3"), + "__do_global_dtors_aux", Args([Arg(Tid(2_334, "%0000091e"), 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())]), @@ -120,7 +120,7 @@ Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), Jmps([Goto(Tid(891, "%0000037b"), Attrs([Attr("address","0x894"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(889, "%00000379"))), Goto(Tid(2_263, "%000008d7"), Attrs([]), +Direct(Tid(889, "%00000379"))), Goto(Tid(2_322, "%00000912"), Attrs([]), Int(1,1), Direct(Tid(1_340, "%0000053c")))])), Blk(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x898")]), Phis([]), Defs([Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x898"), @@ -133,7 +133,7 @@ Attr("insn","cbz x0, #0x10")]), Var("#69",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_358, "%0000054e"), Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), Var("#69",Imm(1)), Direct(Tid(1_356, "%0000054c"))), -Goto(Tid(2_264, "%000008d8"), Attrs([]), Int(1,1), +Goto(Tid(2_323, "%00000913"), Attrs([]), Int(1,1), Direct(Tid(1_388, "%0000056c")))])), Blk(Tid(1_388, "%0000056c"), Attrs([Attr("address","0x8A4")]), Phis([]), Defs([Def(Tid(1_392, "%00000570"), Attrs([Attr("address","0x8A4"), @@ -158,7 +158,7 @@ Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), Def(Tid(1_386, "%0000056a"), Attrs([Attr("address","0x8B8"), Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_265, "%000008d9"), Attrs([]), Int(1,1), +Jmps([Goto(Tid(2_324, "%00000914"), Attrs([]), Int(1,1), Direct(Tid(889, "%00000379")))])), Blk(Tid(889, "%00000379"), Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(905, "%00000389"), Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), @@ -177,21 +177,21 @@ PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(927, "%0000039f"), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_266, "@__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_292, "%000008f4"), + Args([Arg(Tid(2_335, "%0000091f"), 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_293, "%000008f5"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_336, "%00000920"), 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_294, "%000008f6"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_337, "%00000921"), 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_295, "%000008f7"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_338, "%00000922"), 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_296, "%000008f8"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_339, "%00000923"), 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(646, "@__libc_start_main"), @@ -207,7 +207,7 @@ PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_821, "%0000071d"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_267, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A4")]), - "_fini", Args([Arg(Tid(2_297, "%000008f9"), + "_fini", Args([Arg(Tid(2_340, "%00000924"), 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"), @@ -237,7 +237,7 @@ PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), Attrs([Attr("address","0x9B4"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_268, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_298, "%000008fa"), + "_init", Args([Arg(Tid(2_341, "%00000925"), 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(2_024, "@_init"), @@ -273,7 +273,7 @@ PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_083, "%00000823"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_269, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_299, "%000008fb"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_342, "%00000926"), 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(572, "@_start"), @@ -311,9 +311,9 @@ Defs([Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), Jmps([Call(Tid(656, "%00000290"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_272, "@abort")),Direct(Tid(2_270, "%000008de"))))])), -Blk(Tid(2_270, "%000008de"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_271, "%000008df"), Attrs([]), Int(1,1), +(Direct(Tid(2_272, "@abort")),Direct(Tid(2_325, "%00000915"))))])), +Blk(Tid(2_325, "%00000915"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_326, "%00000916"), Attrs([]), Int(1,1), (Direct(Tid(2_273, "@call_weak_fn")),))]))])), Sub(Tid(2_272, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), @@ -329,7 +329,7 @@ PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_946, "%0000079a"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_273, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_300, "%000008fc"), + "call_weak_fn", Args([Arg(Tid(2_343, "%00000927"), 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(658, "@call_weak_fn"), @@ -344,7 +344,7 @@ Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(676, "%000002a4"), Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), Direct(Tid(674, "%000002a2"))), -Goto(Tid(2_274, "%000008e2"), Attrs([]), Int(1,1), +Goto(Tid(2_327, "%00000917"), Attrs([]), Int(1,1), Direct(Tid(1_488, "%000005d0")))])), Blk(Tid(674, "%000002a2"), Attrs([Attr("address","0x804")]), Phis([]), Defs([]), Jmps([Call(Tid(687, "%000002af"), Attrs([Attr("address","0x804"), @@ -366,7 +366,7 @@ PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_921, "%00000781"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_275, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_301, "%000008fd"), + "deregister_tm_clones", Args([Arg(Tid(2_344, "%00000928"), 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())]), @@ -400,7 +400,7 @@ Def(Tid(752, "%000002f0"), Attrs([Attr("address","0x824"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), Jmps([Goto(Tid(746, "%000002ea"), Attrs([Attr("address","0x824"), Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(744, "%000002e8"))), Goto(Tid(2_276, "%000008e4"), Attrs([]), +Direct(Tid(744, "%000002e8"))), Goto(Tid(2_328, "%00000918"), Attrs([]), Int(1,1), Direct(Tid(1_449, "%000005a9")))])), Blk(Tid(1_449, "%000005a9"), Attrs([Attr("address","0x828")]), Phis([]), Defs([Def(Tid(1_453, "%000005ad"), Attrs([Attr("address","0x828"), @@ -413,7 +413,7 @@ Attr("insn","cbz x1, #0xc")]), Var("#77",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_466, "%000005ba"), Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), Var("#77",Imm(1)), Direct(Tid(744, "%000002e8"))), -Goto(Tid(2_277, "%000008e5"), Attrs([]), Int(1,1), +Goto(Tid(2_329, "%00000919"), Attrs([]), Int(1,1), Direct(Tid(1_475, "%000005c3")))])), Blk(Tid(744, "%000002e8"), Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), Jmps([Call(Tid(757, "%000002f5"), Attrs([Attr("address","0x83C"), @@ -424,7 +424,7 @@ Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), Jmps([Call(Tid(1_486, "%000005ce"), Attrs([Attr("address","0x838"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), Sub(Tid(2_278, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_302, "%000008fe"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_345, "%00000929"), 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(933, "@frame_dummy"), @@ -433,7 +433,7 @@ Jmps([Call(Tid(935, "%000003a7"), Attrs([Attr("address","0x8D0"), Attr("insn","b #-0x90")]), Int(1,1), (Direct(Tid(2_285, "@register_tm_clones")),))]))])), Sub(Tid(2_279, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_303, "%000008ff"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_346, "%0000092a"), 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_299, "@free"), Attrs([Attr("address","0x7A0")]), @@ -448,13 +448,13 @@ PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_996, "%000007cc"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_280, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_304, "%00000900"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_347, "%0000092b"), 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_305, "%00000901"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_348, "%0000092c"), 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_306, "%00000902"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_349, "%0000092d"), 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(937, "@main"), @@ -632,10 +632,10 @@ PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_338, "%0000053a"), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_281, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_307, "%00000903"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_350, "%0000092e"), 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_308, "%00000904"), +Var("R0",Imm(64)), In()), Arg(Tid(2_351, "%0000092f"), 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())]), @@ -652,17 +652,17 @@ PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_871, "%0000074f"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_282, "@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_309, "%00000905"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_352, "%00000930"), 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_310, "%00000906"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_353, "%00000931"), 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_311, "%00000907"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_354, "%00000932"), 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_312, "%00000908"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_355, "%00000933"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_109, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), @@ -678,16 +678,16 @@ Var("R16",Imm(64)))]), Jmps([Call(Tid(1_771, "%000006eb"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_283, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_313, "%00000909"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_356, "%00000934"), 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_314, "%0000090a"), +Both()), Arg(Tid(2_357, "%00000935"), 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_315, "%0000090b"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_358, "%00000936"), 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_316, "%0000090c"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_359, "%00000937"), 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_270, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), @@ -703,10 +703,10 @@ PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_896, "%00000768"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_284, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_317, "%0000090d"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_360, "%00000938"), 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_318, "%0000090e"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_361, "%00000939"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_138, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), @@ -722,7 +722,7 @@ PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_971, "%000007b3"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_285, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_319, "%0000090f"), + "register_tm_clones", Args([Arg(Tid(2_362, "%0000093a"), 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())]), @@ -751,7 +751,7 @@ RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(825, "%00000339"), Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(819, "%00000333"), Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(817, "%00000331"))), Goto(Tid(2_286, "%000008ee"), Attrs([]), +Direct(Tid(817, "%00000331"))), Goto(Tid(2_330, "%0000091a"), Attrs([]), Int(1,1), Direct(Tid(1_410, "%00000582")))])), Blk(Tid(1_410, "%00000582"), Attrs([Attr("address","0x864")]), Phis([]), Defs([Def(Tid(1_414, "%00000586"), Attrs([Attr("address","0x864"), @@ -764,7 +764,7 @@ Attr("insn","cbz x2, #0xc")]), Var("#72",Imm(1)), EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_427, "%00000593"), Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), Var("#72",Imm(1)), Direct(Tid(817, "%00000331"))), -Goto(Tid(2_287, "%000008ef"), Attrs([]), Int(1,1), +Goto(Tid(2_331, "%0000091b"), Attrs([]), Int(1,1), Direct(Tid(1_436, "%0000059c")))])), Blk(Tid(817, "%00000331"), Attrs([Attr("address","0x878")]), Phis([]), Defs([]), Jmps([Call(Tid(830, "%0000033e"), Attrs([Attr("address","0x878"), @@ -777,10 +777,10 @@ Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), Sub(Tid(2_288, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_320, "%00000910"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_363, "%0000093b"), 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_321, "%00000911"), +In()), Arg(Tid(2_364, "%0000093c"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_072, "@strlen"), diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir index 0b1a79af7..df98f3236 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir @@ -1,6 +1,6 @@ -000008f1: program +0000091c: program 000008d5: sub __cxa_finalize(__cxa_finalize_result) -000008f2: __cxa_finalize_result :: out u32 = low:32[R0] +0000091d: __cxa_finalize_result :: out u32 = low:32[R0] 0000057e: 00000722: R16 := 0x20000 @@ -9,7 +9,7 @@ 00000736: call R17 with noreturn 000008d6: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008f3: __do_global_dtors_aux_result :: out u32 = low:32[R0] +0000091e: __do_global_dtors_aux_result :: out u32 = low:32[R0] 00000342: 00000349: #34 := R31 - 0x20 @@ -22,14 +22,14 @@ 00000375: R0 := pad:32[mem[R19 + 0x78]] 00000381: #36 := ~~0:0[R0] 0000037b: when #36 goto %00000379 -000008d7: goto %0000053c +00000912: goto %0000053c 0000053c: 00000540: R0 := 0x1F000 00000548: R0 := mem[R0 + 0xFC8, el]:u64 00000554: #69 := R0 = 0 0000054e: when #69 goto %0000054c -000008d8: goto %0000056c +00000913: goto %0000056c 0000056c: 00000570: R0 := 0x20000 @@ -44,7 +44,7 @@ 0000055d: 00000562: R0 := 1 0000056a: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] -000008d9: goto %00000379 +00000914: goto %00000379 00000379: 00000389: R19 := mem[R31 + 0x10, el]:u64 @@ -54,11 +54,11 @@ 0000039f: call R30 with noreturn 000008da: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008f4: __libc_start_main_main :: in u64 = R0 -000008f5: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008f6: __libc_start_main_arg3 :: in out u64 = R2 -000008f7: __libc_start_main_auxv :: in out u64 = R3 -000008f8: __libc_start_main_result :: out u32 = low:32[R0] +0000091f: __libc_start_main_main :: in u64 = R0 +00000920: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000921: __libc_start_main_arg3 :: in out u64 = R2 +00000922: __libc_start_main_auxv :: in out u64 = R3 +00000923: __libc_start_main_result :: out u32 = low:32[R0] 00000286: 00000709: R16 := 0x20000 @@ -67,7 +67,7 @@ 0000071d: call R17 with noreturn 000008db: sub _fini(_fini_result) -000008f9: _fini_result :: out u32 = low:32[R0] +00000924: _fini_result :: out u32 = low:32[R0] 00000020: 00000029: #3 := R31 - 0x10 @@ -81,7 +81,7 @@ 00000054: call R30 with noreturn 000008dc: sub _init(_init_result) -000008fa: _init_result :: out u32 = low:32[R0] +00000925: _init_result :: out u32 = low:32[R0] 000007e8: 000007f1: #100 := R31 - 0x10 @@ -99,7 +99,7 @@ 00000823: call R30 with noreturn 000008dd: sub _start(_start_result) -000008fb: _start_result :: out u32 = low:32[R0] +00000926: _start_result :: out u32 = low:32[R0] 0000023c: 00000242: R29 := 0 @@ -117,10 +117,10 @@ 0000028a: 0000028d: R30 := 0x7F4 -00000290: call @abort with return %000008de +00000290: call @abort with return %00000915 -000008de: -000008df: call @call_weak_fn with noreturn +00000915: +00000916: call @call_weak_fn with noreturn 000008e0: sub abort() @@ -132,14 +132,14 @@ 0000079a: call R17 with noreturn 000008e1: sub call_weak_fn(call_weak_fn_result) -000008fc: call_weak_fn_result :: out u32 = low:32[R0] +00000927: call_weak_fn_result :: out u32 = low:32[R0] 00000292: 00000296: R0 := 0x1F000 0000029e: R0 := mem[R0 + 0xFD0, el]:u64 000002aa: #12 := R0 = 0 000002a4: when #12 goto %000002a2 -000008e2: goto %000005d0 +00000917: goto %000005d0 000002a2: 000002af: call R30 with noreturn @@ -154,7 +154,7 @@ 00000781: call R17 with noreturn 000008e3: sub deregister_tm_clones(deregister_tm_clones_result) -000008fd: deregister_tm_clones_result :: out u32 = low:32[R0] +00000928: deregister_tm_clones_result :: out u32 = low:32[R0] 000002b5: 000002b9: R0 := 0x20000 @@ -170,14 +170,14 @@ & ~63:63[#16] 000002f0: #21 := ZF 000002ea: when #21 goto %000002e8 -000008e4: goto %000005a9 +00000918: goto %000005a9 000005a9: 000005ad: R1 := 0x1F000 000005b5: R1 := mem[R1 + 0xFC0, el]:u64 000005c0: #77 := R1 = 0 000005ba: when #77 goto %000002e8 -000008e5: goto %000005c3 +00000919: goto %000005c3 000002e8: 000002f5: call R30 with noreturn @@ -187,13 +187,13 @@ 000005ce: call R16 with noreturn 000008e6: sub frame_dummy(frame_dummy_result) -000008fe: frame_dummy_result :: out u32 = low:32[R0] +00000929: frame_dummy_result :: out u32 = low:32[R0] 000003a5: 000003a7: call @register_tm_clones with noreturn 000008e7: sub free(free_ptr) -000008ff: free_ptr :: in out u64 = R0 +0000092a: free_ptr :: in out u64 = R0 00000513: 000007b8: R16 := 0x20000 @@ -202,9 +202,9 @@ 000007cc: call R17 with noreturn 000008e8: sub main(main_argc, main_argv, main_result) -00000900: main_argc :: in u32 = low:32[R0] -00000901: main_argv :: in out u64 = R1 -00000902: main_result :: out u32 = low:32[R0] +0000092b: main_argc :: in u32 = low:32[R0] +0000092c: main_argv :: in out u64 = R1 +0000092d: main_result :: out u32 = low:32[R0] 000003a9: 000003b0: #42 := R31 - 0x30 @@ -287,8 +287,8 @@ 0000053a: call R30 with noreturn 000008e9: sub malloc(malloc_size, malloc_result) -00000903: malloc_size :: in u64 = R0 -00000904: malloc_result :: out u64 = R0 +0000092e: malloc_size :: in u64 = R0 +0000092f: malloc_result :: out u64 = R0 000003e9: 0000073b: R16 := 0x20000 @@ -297,10 +297,10 @@ 0000074f: call R17 with noreturn 000008ea: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000905: memcpy_dst :: in out u64 = R0 -00000906: memcpy_src :: in out u64 = R1 -00000907: memcpy_n :: in u64 = R2 -00000908: memcpy_result :: out u64 = R0 +00000930: memcpy_dst :: in out u64 = R0 +00000931: memcpy_src :: in out u64 = R1 +00000932: memcpy_n :: in u64 = R2 +00000933: memcpy_result :: out u64 = R0 00000455: 000006d7: R16 := 0x20000 @@ -309,10 +309,10 @@ 000006eb: call R17 with noreturn 000008eb: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000909: memset_buf :: in out u64 = R0 -0000090a: memset_c :: in u32 = low:32[R1] -0000090b: memset_n :: in u64 = R2 -0000090c: memset_result :: out u64 = R0 +00000934: memset_buf :: in out u64 = R0 +00000935: memset_c :: in u32 = low:32[R1] +00000936: memset_n :: in u64 = R2 +00000937: memset_result :: out u64 = R0 000004f6: 00000754: R16 := 0x20000 @@ -321,8 +321,8 @@ 00000768: call R17 with noreturn 000008ec: sub puts(puts_s, puts_result) -0000090d: puts_s :: in u64 = R0 -0000090e: puts_result :: out u32 = low:32[R0] +00000938: puts_s :: in u64 = R0 +00000939: puts_result :: out u32 = low:32[R0] 00000472: 0000079f: R16 := 0x20000 @@ -331,7 +331,7 @@ 000007b3: call R17 with noreturn 000008ed: sub register_tm_clones(register_tm_clones_result) -0000090f: register_tm_clones_result :: out u32 = low:32[R0] +0000093a: register_tm_clones_result :: out u32 = low:32[R0] 000002f7: 000002fb: R0 := 0x20000 @@ -344,14 +344,14 @@ 0000032d: R1 := R1 >> 1 00000339: #30 := R1 = 0 00000333: when #30 goto %00000331 -000008ee: goto %00000582 +0000091a: goto %00000582 00000582: 00000586: R2 := 0x1F000 0000058e: R2 := mem[R2 + 0xFE0, el]:u64 00000599: #72 := R2 = 0 00000593: when #72 goto %00000331 -000008ef: goto %0000059c +0000091b: goto %0000059c 00000331: 0000033e: call R30 with noreturn @@ -361,8 +361,8 @@ 000005a7: call R16 with noreturn 000008f0: sub strlen(strlen_s, strlen_result) -00000910: strlen_s :: in u64 = R0 -00000911: strlen_result :: out u64 = R0 +0000093b: strlen_s :: in u64 = R0 +0000093c: strlen_result :: out u64 = R0 00000430: 000006f0: R16 := 0x20000 diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected new file mode 100644 index 000000000..e0dd7a116 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,838 @@ +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_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} 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 == 131200bv64); +const {:extern} $password_addr: bv64; +axiom ($password_addr == 131168bv64); +const {:extern} $stext_addr: bv64; +axiom ($stext_addr == 131176bv64); +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_be(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, 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, 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) == 0bv8); + free requires (memory_load8_le(mem, 131170bv64) == 0bv8); + free requires (memory_load8_le(mem, 131171bv64) == 0bv8); + 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) == 117bv8); + free requires (memory_load8_le(mem, 131177bv64) == 115bv8); + free requires (memory_load8_le(mem, 131178bv64) == 101bv8); + free requires (memory_load8_le(mem, 131179bv64) == 114bv8); + free requires (memory_load8_le(mem, 131180bv64) == 58bv8); + free requires (memory_load8_le(mem, 131181bv64) == 112bv8); + free requires (memory_load8_le(mem, 131182bv64) == 97bv8); + free requires (memory_load8_le(mem, 131183bv64) == 115bv8); + free requires (memory_load8_le(mem, 131184bv64) == 115bv8); + free requires (memory_load8_le(mem, 131185bv64) == 0bv8); + free requires (memory_load8_le(mem, 131186bv64) == 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R19 == old(R19)); + 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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 #42: bv64; + var Gamma_#42: bool; + lmain: + assume {:captureState "lmain"} true; + #42, Gamma_#42 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); + assume {:captureState "%000003b5"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); + assume {:captureState "%000003ba"} true; + R31, Gamma_R31 := #42, Gamma_#42; + R29, Gamma_R29 := R31, Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); + assume {:captureState "%000003cd"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); + assume {:captureState "%000003d5"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); + assume {:captureState "%000003dd"} true; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2288bv64, true; + call malloc(); + goto l000003ed; + l000003ed: + assume {:captureState "l000003ed"} true; + R1, Gamma_R1 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + assert (L(mem, R0) ==> Gamma_R1); + mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); + assume {:captureState "%00000408"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; + R30, Gamma_R30 := 2328bv64, true; + call strlen(); + goto l00000434; + l00000434: + assume {:captureState "l00000434"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2348bv64, true; + call memcpy(); + goto l00000459; + l00000459: + assume {:captureState "l00000459"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2364bv64, true; + call puts(); + goto l00000476; + l00000476: + assume {:captureState "l00000476"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := bvadd64(R0, 4bv64), Gamma_R0; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); + assume {:captureState "%00000498"} true; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); + call rely(); + assert (L(mem, R0) ==> true); + mem, Gamma_mem := memory_store8_be(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%000004a8"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2420bv64, true; + call strlen(); + goto l000004db; + l000004db: + assume {:captureState "l000004db"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R1, Gamma_R1 := 1bv64, true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2436bv64, true; + call memset(); + goto l000004fa; + l000004fa: + assume {:captureState "l000004fa"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2452bv64, true; + call #free(); + goto l00000517; + l00000517: + assume {:captureState "l00000517"} true; + R0, Gamma_R0 := 0bv64, true; + R19, Gamma_R19 := 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, 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.adt index 23c651808..b1f316af1 100644 --- 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 @@ -67,10 +67,10 @@ 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_197, "%00000895"), Attrs([]), +Program(Tid(2_240, "%000008c0"), Attrs([]), Subs([Sub(Tid(2_169, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_198, "%00000896"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_241, "%000008c1"), 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_318, "@__cxa_finalize"), @@ -87,7 +87,7 @@ PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_758, "%000006de"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_170, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x940")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_199, "%00000897"), + "__do_global_dtors_aux", Args([Arg(Tid(2_242, "%000008c2"), 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())]), @@ -120,7 +120,7 @@ Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#79",Imm(1)), EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), Jmps([Goto(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x954"), Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#79",Imm(1)), -Direct(Tid(1_204, "%000004b4"))), Goto(Tid(2_171, "%0000087b"), Attrs([]), +Direct(Tid(1_204, "%000004b4"))), Goto(Tid(2_230, "%000008b6"), Attrs([]), Int(1,1), Direct(Tid(1_252, "%000004e4")))])), Blk(Tid(1_252, "%000004e4"), Attrs([Attr("address","0x958")]), Phis([]), Defs([Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x958"), @@ -133,7 +133,7 @@ Attr("insn","cbz x0, #0x10")]), Var("#83",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x960"), Attr("insn","cbz x0, #0x10")]), Var("#83",Imm(1)), Direct(Tid(1_268, "%000004f4"))), -Goto(Tid(2_172, "%0000087c"), Attrs([]), Int(1,1), +Goto(Tid(2_231, "%000008b7"), Attrs([]), Int(1,1), Direct(Tid(1_300, "%00000514")))])), Blk(Tid(1_300, "%00000514"), Attrs([Attr("address","0x964")]), Phis([]), Defs([Def(Tid(1_304, "%00000518"), Attrs([Attr("address","0x964"), @@ -158,7 +158,7 @@ Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), Def(Tid(1_298, "%00000512"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_173, "%0000087d"), Attrs([]), Int(1,1), +Jmps([Goto(Tid(2_232, "%000008b8"), Attrs([]), Int(1,1), Direct(Tid(1_204, "%000004b4")))])), Blk(Tid(1_204, "%000004b4"), Attrs([Attr("address","0x97C")]), Phis([]), Defs([Def(Tid(1_220, "%000004c4"), Attrs([Attr("address","0x97C"), @@ -177,21 +177,21 @@ PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_242, "%000004da"), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_174, "@__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_200, "%00000898"), + Args([Arg(Tid(2_243, "%000008c3"), 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_201, "%00000899"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_244, "%000008c4"), 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_202, "%0000089a"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_245, "%000008c5"), 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_203, "%0000089b"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_246, "%000008c6"), 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_204, "%0000089c"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_247, "%000008c7"), 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(961, "@__libc_start_main"), @@ -207,7 +207,7 @@ PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_733, "%000006c5"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_175, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x994")]), - "_fini", Args([Arg(Tid(2_205, "%0000089d"), + "_fini", Args([Arg(Tid(2_248, "%000008c8"), 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"), @@ -237,7 +237,7 @@ PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), Attrs([Attr("address","0x9A4"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_176, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_206, "%0000089e"), + "_init", Args([Arg(Tid(2_249, "%000008c9"), 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_936, "@_init"), @@ -273,7 +273,7 @@ PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_995, "%000007cb"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_177, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_207, "%0000089f"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_250, "%000008ca"), 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(887, "@_start"), @@ -311,9 +311,9 @@ Defs([Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0x130")]), Var("R30",Imm(64)), Int(2228,64))]), Jmps([Call(Tid(971, "%000003cb"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0x130")]), Int(1,1), -(Direct(Tid(2_180, "@abort")),Direct(Tid(2_178, "%00000882"))))])), -Blk(Tid(2_178, "%00000882"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_179, "%00000883"), Attrs([]), Int(1,1), +(Direct(Tid(2_180, "@abort")),Direct(Tid(2_233, "%000008b9"))))])), +Blk(Tid(2_233, "%000008b9"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_234, "%000008ba"), Attrs([]), Int(1,1), (Direct(Tid(2_181, "@call_weak_fn")),))]))])), Sub(Tid(2_180, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), @@ -329,7 +329,7 @@ PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_858, "%00000742"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_181, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8B4")]), - "call_weak_fn", Args([Arg(Tid(2_208, "%000008a0"), + "call_weak_fn", Args([Arg(Tid(2_251, "%000008cb"), 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(973, "@call_weak_fn"), @@ -344,7 +344,7 @@ Attr("insn","cbz x0, #0x8")]), Var("#55",Imm(1)), EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(991, "%000003df"), Attrs([Attr("address","0x8BC"), Attr("insn","cbz x0, #0x8")]), Var("#55",Imm(1)), Direct(Tid(989, "%000003dd"))), -Goto(Tid(2_182, "%00000886"), Attrs([]), Int(1,1), +Goto(Tid(2_235, "%000008bb"), Attrs([]), Int(1,1), Direct(Tid(1_400, "%00000578")))])), Blk(Tid(989, "%000003dd"), Attrs([Attr("address","0x8C4")]), Phis([]), Defs([]), Jmps([Call(Tid(1_002, "%000003ea"), Attrs([Attr("address","0x8C4"), @@ -366,7 +366,7 @@ PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_833, "%00000729"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_183, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8D0")]), - "deregister_tm_clones", Args([Arg(Tid(2_209, "%000008a1"), + "deregister_tm_clones", Args([Arg(Tid(2_252, "%000008cc"), 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())]), @@ -400,7 +400,7 @@ Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x8E4"), Attr("insn","b.eq #0x18")]), Var("#64",Imm(1)), Var("ZF",Imm(1)))]), Jmps([Goto(Tid(1_061, "%00000425"), Attrs([Attr("address","0x8E4"), Attr("insn","b.eq #0x18")]), Var("#64",Imm(1)), -Direct(Tid(1_059, "%00000423"))), Goto(Tid(2_184, "%00000888"), Attrs([]), +Direct(Tid(1_059, "%00000423"))), Goto(Tid(2_236, "%000008bc"), Attrs([]), Int(1,1), Direct(Tid(1_361, "%00000551")))])), Blk(Tid(1_361, "%00000551"), Attrs([Attr("address","0x8E8")]), Phis([]), Defs([Def(Tid(1_365, "%00000555"), Attrs([Attr("address","0x8E8"), @@ -413,7 +413,7 @@ Attr("insn","cbz x1, #0xc")]), Var("#91",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_378, "%00000562"), Attrs([Attr("address","0x8F0"), Attr("insn","cbz x1, #0xc")]), Var("#91",Imm(1)), Direct(Tid(1_059, "%00000423"))), -Goto(Tid(2_185, "%00000889"), Attrs([]), Int(1,1), +Goto(Tid(2_237, "%000008bd"), Attrs([]), Int(1,1), Direct(Tid(1_387, "%0000056b")))])), Blk(Tid(1_059, "%00000423"), Attrs([Attr("address","0x8FC")]), Phis([]), Defs([]), Jmps([Call(Tid(1_072, "%00000430"), Attrs([Attr("address","0x8FC"), @@ -424,7 +424,7 @@ Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), Jmps([Call(Tid(1_398, "%00000576"), Attrs([Attr("address","0x8F8"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), Sub(Tid(2_186, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x990")]), "frame_dummy", Args([Arg(Tid(2_210, "%000008a2"), +Attr("address","0x990")]), "frame_dummy", Args([Arg(Tid(2_253, "%000008cd"), 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_248, "@frame_dummy"), @@ -433,7 +433,7 @@ Jmps([Call(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x990"), Attr("insn","b #-0x90")]), Int(1,1), (Direct(Tid(2_193, "@register_tm_clones")),))]))])), Sub(Tid(2_187, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_211, "%000008a3"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_254, "%000008ce"), 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(807, "@free"), Attrs([Attr("address","0x7A0")]), @@ -448,13 +448,13 @@ PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_908, "%00000774"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_188, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x7C0")]), "main", Args([Arg(Tid(2_212, "%000008a4"), +Attr("address","0x7C0")]), "main", Args([Arg(Tid(2_255, "%000008cf"), 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_213, "%000008a5"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_256, "%000008d0"), 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_214, "%000008a6"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_257, "%000008d1"), 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(556, "@main"), @@ -594,10 +594,10 @@ PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(859, "%0000035b"), (Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_189, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_215, "%000008a7"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_258, "%000008d2"), 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_216, "%000008a8"), +Var("R0",Imm(64)), In()), Arg(Tid(2_259, "%000008d3"), 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())]), @@ -614,17 +614,17 @@ PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_783, "%000006f7"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_190, "@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_217, "%000008a9"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_260, "%000008d4"), 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_218, "%000008aa"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_261, "%000008d5"), 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_219, "%000008ab"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_262, "%000008d6"), 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_220, "%000008ac"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_263, "%000008d7"), 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(705, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), @@ -640,16 +640,16 @@ Var("R16",Imm(64)))]), Jmps([Call(Tid(1_683, "%00000693"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_191, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_221, "%000008ad"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_264, "%000008d8"), 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_222, "%000008ae"), +Both()), Arg(Tid(2_265, "%000008d9"), 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_223, "%000008af"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_266, "%000008da"), 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_224, "%000008b0"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_267, "%000008db"), 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(791, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), @@ -665,10 +665,10 @@ PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_808, "%00000710"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_192, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_225, "%000008b1"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_268, "%000008dc"), 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_226, "%000008b2"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_269, "%000008dd"), 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(721, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), @@ -684,7 +684,7 @@ PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_883, "%0000075b"), (Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_193, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), - "register_tm_clones", Args([Arg(Tid(2_227, "%000008b3"), + "register_tm_clones", Args([Arg(Tid(2_270, "%000008de"), 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())]), @@ -714,7 +714,7 @@ RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(1_140, "%00000474"), Var("#73",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x920"), Attr("insn","cbz x1, #0x18")]), Var("#73",Imm(1)), -Direct(Tid(1_132, "%0000046c"))), Goto(Tid(2_194, "%00000892"), Attrs([]), +Direct(Tid(1_132, "%0000046c"))), Goto(Tid(2_238, "%000008be"), Attrs([]), Int(1,1), Direct(Tid(1_322, "%0000052a")))])), Blk(Tid(1_322, "%0000052a"), Attrs([Attr("address","0x924")]), Phis([]), Defs([Def(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x924"), @@ -727,7 +727,7 @@ Attr("insn","cbz x2, #0xc")]), Var("#86",Imm(1)), EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_339, "%0000053b"), Attrs([Attr("address","0x92C"), Attr("insn","cbz x2, #0xc")]), Var("#86",Imm(1)), Direct(Tid(1_132, "%0000046c"))), -Goto(Tid(2_195, "%00000893"), Attrs([]), Int(1,1), +Goto(Tid(2_239, "%000008bf"), Attrs([]), Int(1,1), Direct(Tid(1_348, "%00000544")))])), Blk(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x938")]), Phis([]), Defs([]), Jmps([Call(Tid(1_145, "%00000479"), Attrs([Attr("address","0x938"), @@ -740,10 +740,10 @@ Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), Sub(Tid(2_196, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_228, "%000008b4"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_271, "%000008df"), 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_229, "%000008b5"), +In()), Arg(Tid(2_272, "%000008e0"), 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(673, "@strlen"), 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 index b0832a61f..638192f98 100644 --- 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 @@ -1,6 +1,6 @@ -00000895: program +000008c0: program 00000879: sub __cxa_finalize(__cxa_finalize_result) -00000896: __cxa_finalize_result :: out u32 = low:32[R0] +000008c1: __cxa_finalize_result :: out u32 = low:32[R0] 00000526: 000006ca: R16 := 0x20000 @@ -9,7 +9,7 @@ 000006de: call R17 with noreturn 0000087a: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000897: __do_global_dtors_aux_result :: out u32 = low:32[R0] +000008c2: __do_global_dtors_aux_result :: out u32 = low:32[R0] 0000047d: 00000484: #77 := R31 - 0x20 @@ -22,14 +22,14 @@ 000004b0: R0 := pad:32[mem[R19 + 0x70]] 000004bc: #79 := ~~0:0[R0] 000004b6: when #79 goto %000004b4 -0000087b: goto %000004e4 +000008b6: goto %000004e4 000004e4: 000004e8: R0 := 0x1F000 000004f0: R0 := mem[R0 + 0xFC8, el]:u64 000004fc: #83 := R0 = 0 000004f6: when #83 goto %000004f4 -0000087c: goto %00000514 +000008b7: goto %00000514 00000514: 00000518: R0 := 0x20000 @@ -44,7 +44,7 @@ 00000505: 0000050a: R0 := 1 00000512: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -0000087d: goto %000004b4 +000008b8: goto %000004b4 000004b4: 000004c4: R19 := mem[R31 + 0x10, el]:u64 @@ -54,11 +54,11 @@ 000004da: call R30 with noreturn 0000087e: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000898: __libc_start_main_main :: in u64 = R0 -00000899: __libc_start_main_arg2 :: in u32 = low:32[R1] -0000089a: __libc_start_main_arg3 :: in out u64 = R2 -0000089b: __libc_start_main_auxv :: in out u64 = R3 -0000089c: __libc_start_main_result :: out u32 = low:32[R0] +000008c3: __libc_start_main_main :: in u64 = R0 +000008c4: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008c5: __libc_start_main_arg3 :: in out u64 = R2 +000008c6: __libc_start_main_auxv :: in out u64 = R3 +000008c7: __libc_start_main_result :: out u32 = low:32[R0] 000003c1: 000006b1: R16 := 0x20000 @@ -67,7 +67,7 @@ 000006c5: call R17 with noreturn 0000087f: sub _fini(_fini_result) -0000089d: _fini_result :: out u32 = low:32[R0] +000008c8: _fini_result :: out u32 = low:32[R0] 00000020: 00000029: #3 := R31 - 0x10 @@ -81,7 +81,7 @@ 00000054: call R30 with noreturn 00000880: sub _init(_init_result) -0000089e: _init_result :: out u32 = low:32[R0] +000008c9: _init_result :: out u32 = low:32[R0] 00000790: 00000799: #114 := R31 - 0x10 @@ -99,7 +99,7 @@ 000007cb: call R30 with noreturn 00000881: sub _start(_start_result) -0000089f: _start_result :: out u32 = low:32[R0] +000008ca: _start_result :: out u32 = low:32[R0] 00000377: 0000037d: R29 := 0 @@ -117,10 +117,10 @@ 000003c5: 000003c8: R30 := 0x8B4 -000003cb: call @abort with return %00000882 +000003cb: call @abort with return %000008b9 -00000882: -00000883: call @call_weak_fn with noreturn +000008b9: +000008ba: call @call_weak_fn with noreturn 00000884: sub abort() @@ -132,14 +132,14 @@ 00000742: call R17 with noreturn 00000885: sub call_weak_fn(call_weak_fn_result) -000008a0: call_weak_fn_result :: out u32 = low:32[R0] +000008cb: call_weak_fn_result :: out u32 = low:32[R0] 000003cd: 000003d1: R0 := 0x1F000 000003d9: R0 := mem[R0 + 0xFD0, el]:u64 000003e5: #55 := R0 = 0 000003df: when #55 goto %000003dd -00000886: goto %00000578 +000008bb: goto %00000578 000003dd: 000003ea: call R30 with noreturn @@ -154,7 +154,7 @@ 00000729: call R17 with noreturn 00000887: sub deregister_tm_clones(deregister_tm_clones_result) -000008a1: deregister_tm_clones_result :: out u32 = low:32[R0] +000008cc: deregister_tm_clones_result :: out u32 = low:32[R0] 000003f0: 000003f4: R0 := 0x20000 @@ -170,14 +170,14 @@ & ~63:63[#59] 0000042b: #64 := ZF 00000425: when #64 goto %00000423 -00000888: goto %00000551 +000008bc: goto %00000551 00000551: 00000555: R1 := 0x1F000 0000055d: R1 := mem[R1 + 0xFC0, el]:u64 00000568: #91 := R1 = 0 00000562: when #91 goto %00000423 -00000889: goto %0000056b +000008bd: goto %0000056b 00000423: 00000430: call R30 with noreturn @@ -187,13 +187,13 @@ 00000576: call R16 with noreturn 0000088a: sub frame_dummy(frame_dummy_result) -000008a2: frame_dummy_result :: out u32 = low:32[R0] +000008cd: frame_dummy_result :: out u32 = low:32[R0] 000004e0: 000004e2: call @register_tm_clones with noreturn 0000088b: sub free(free_ptr) -000008a3: free_ptr :: in out u64 = R0 +000008ce: free_ptr :: in out u64 = R0 00000327: 00000760: R16 := 0x20000 @@ -202,9 +202,9 @@ 00000774: call R17 with noreturn 0000088c: sub main(main_argc, main_argv, main_result) -000008a4: main_argc :: in u32 = low:32[R0] -000008a5: main_argv :: in out u64 = R1 -000008a6: main_result :: out u32 = low:32[R0] +000008cf: main_argc :: in u32 = low:32[R0] +000008d0: main_argv :: in out u64 = R1 +000008d1: main_result :: out u32 = low:32[R0] 0000022c: 00000233: #9 := R31 - 0x30 @@ -273,8 +273,8 @@ 0000035b: call R30 with noreturn 0000088d: sub malloc(malloc_size, malloc_result) -000008a7: malloc_size :: in u64 = R0 -000008a8: malloc_result :: out u64 = R0 +000008d2: malloc_size :: in u64 = R0 +000008d3: malloc_result :: out u64 = R0 00000274: 000006e3: R16 := 0x20000 @@ -283,10 +283,10 @@ 000006f7: call R17 with noreturn 0000088e: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008a9: memcpy_dst :: in out u64 = R0 -000008aa: memcpy_src :: in out u64 = R1 -000008ab: memcpy_n :: in u64 = R2 -000008ac: memcpy_result :: out u64 = R0 +000008d4: memcpy_dst :: in out u64 = R0 +000008d5: memcpy_src :: in out u64 = R1 +000008d6: memcpy_n :: in u64 = R2 +000008d7: memcpy_result :: out u64 = R0 000002c1: 0000067f: R16 := 0x20000 @@ -295,10 +295,10 @@ 00000693: call R17 with noreturn 0000088f: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008ad: memset_buf :: in out u64 = R0 -000008ae: memset_c :: in u32 = low:32[R1] -000008af: memset_n :: in u64 = R2 -000008b0: memset_result :: out u64 = R0 +000008d8: memset_buf :: in out u64 = R0 +000008d9: memset_c :: in u32 = low:32[R1] +000008da: memset_n :: in u64 = R2 +000008db: memset_result :: out u64 = R0 00000317: 000006fc: R16 := 0x20000 @@ -307,8 +307,8 @@ 00000710: call R17 with noreturn 00000890: sub puts(puts_s, puts_result) -000008b1: puts_s :: in u64 = R0 -000008b2: puts_result :: out u32 = low:32[R0] +000008dc: puts_s :: in u64 = R0 +000008dd: puts_result :: out u32 = low:32[R0] 000002d1: 00000747: R16 := 0x20000 @@ -317,7 +317,7 @@ 0000075b: call R17 with noreturn 00000891: sub register_tm_clones(register_tm_clones_result) -000008b3: register_tm_clones_result :: out u32 = low:32[R0] +000008de: register_tm_clones_result :: out u32 = low:32[R0] 00000432: 00000436: R0 := 0x20000 @@ -330,14 +330,14 @@ 00000468: R1 := R1 >> 1 00000474: #73 := R1 = 0 0000046e: when #73 goto %0000046c -00000892: goto %0000052a +000008be: goto %0000052a 0000052a: 0000052e: R2 := 0x1F000 00000536: R2 := mem[R2 + 0xFE0, el]:u64 00000541: #86 := R2 = 0 0000053b: when #86 goto %0000046c -00000893: goto %00000544 +000008bf: goto %00000544 0000046c: 00000479: call R30 with noreturn @@ -347,8 +347,8 @@ 0000054f: call R16 with noreturn 00000894: sub strlen(strlen_s, strlen_result) -000008b4: strlen_s :: in u64 = R0 -000008b5: strlen_result :: out u64 = R0 +000008df: strlen_s :: in u64 = R0 +000008e0: strlen_result :: out u64 = R0 000002a1: 00000698: R16 := 0x20000 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..455a7193f --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,823 @@ +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_be(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 #14: bv64; + var #9: bv64; + var Gamma_#14: bool; + var Gamma_#9: bool; + lmain: + assume {:captureState "lmain"} true; + #9, Gamma_#9 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #9, R29), gamma_store64(Gamma_stack, #9, Gamma_R29); + assume {:captureState "%00000238"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#9, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#9, 8bv64), Gamma_R30); + assume {:captureState "%0000023d"} true; + R31, Gamma_R31 := #9, Gamma_#9; + R0, Gamma_R0 := 11bv64, true; + R29, Gamma_R29 := R31, Gamma_R31; + #14, Gamma_#14 := bvadd64(R31, 16bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #14, R19), gamma_store64(Gamma_stack, #14, Gamma_R19); + assume {:captureState "%0000025b"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#14, 8bv64), R20), gamma_store64(Gamma_stack, bvadd64(#14, 8bv64), Gamma_R20); + assume {:captureState "%00000260"} 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 "%0000026e"} true; + R30, Gamma_R30 := 2012bv64, true; + call malloc(); + goto l00000278; + l00000278: + assume {:captureState "l00000278"} 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 "%0000029b"} true; + R30, Gamma_R30 := 2036bv64, true; + call strlen(); + goto l000002a5; + l000002a5: + assume {:captureState "l000002a5"} 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 l000002c5; + l000002c5: + assume {:captureState "l000002c5"} true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2060bv64, true; + call puts(); + goto l000002d5; + l000002d5: + assume {:captureState "l000002d5"} 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_be(mem, bvadd64(R0, 4bv64), 0bv8), gamma_store8(Gamma_mem, bvadd64(R0, 4bv64), true); + assume {:captureState "%000002e3"} 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 l000002fc; + l000002fc: + assume {:captureState "l000002fc"} 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 l0000031b; + l0000031b: + assume {:captureState "l0000031b"} 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 l0000032b; + l0000032b: + assume {:captureState "l0000032b"} true; + R19, Gamma_R19 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); + R20, Gamma_R20 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..25875fa16 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,797 @@ +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 2468 20 2468)\n(code-region 1984 484 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 208)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 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 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2468 20)\n(llvm:code-entry .text 1984 484)\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 2492 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2728)\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 2492 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2728)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2552 176 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 1984 484 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 208 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 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 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2728 0)\n(mapped 130504 683 64968)\n(named-region 0 2728 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 484 .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 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 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 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 484)\n(section 2468 20)\n(section 2488 4)\n(section 2492 60)\n(section 2552 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2728 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 208 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2468 2468)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), +Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 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\x04\xfe\xff\xff\x50\x00\x00\x00\x54\xfe\xff\xff\x64\x00\x00\x00\x84\xfe\xff\xff\x78\x00\x00\x00\xc4\xfe\xff\xff\x8c\x00\x00\x00\x14\xff\xff\xff\xb0\x00\x00\x00\x18\xff\xff\xff\xc4\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\xac\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xe8\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x04\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x30\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\x5c\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x4c\xfe\xff\xff\xd0\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x70\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xa4\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\xe0\x17\x40\xf9\x1f\x00\x00\x39\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6c\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x78\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x84\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xAA7), Attr("segment","02 0 2728")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +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,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x9A3), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x9A3), Attr("symbol-info","main 0x8D4 208")), +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,0xAA7), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x9A3), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x9A3), Attr("code-region","()")), +Annotation(Region(0x9A4,0x9B7), Attr("code-region","()"))]), +Program(Tid(2_332, "%0000091c"), Attrs([]), + Subs([Sub(Tid(2_261, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_333, "%0000091d"), + 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_406, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_834, "%0000072a"), 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_841, "%00000731"), 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_846, "%00000736"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_262, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_334, "%0000091e"), + 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(834, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(841, "%00000349"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(846, "%0000034e"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(851, "%00000353"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(855, "%00000357"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#34",Imm(64))), Def(Tid(862, "%0000035e"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(870, "%00000366"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(885, "%00000375"), Attrs([Attr("address","0x890"), +Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), +Def(Tid(897, "%00000381"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(891, "%0000037b"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(889, "%00000379"))), Goto(Tid(2_322, "%00000912"), Attrs([]), + Int(1,1), Direct(Tid(1_340, "%0000053c")))])), Blk(Tid(1_340, "%0000053c"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_352, "%00000548"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), +Def(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), Var("#69",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_358, "%0000054e"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), + Var("#69",Imm(1)), Direct(Tid(1_356, "%0000054c"))), +Goto(Tid(2_323, "%00000913"), Attrs([]), Int(1,1), +Direct(Tid(1_388, "%0000056c")))])), Blk(Tid(1_388, "%0000056c"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_392, "%00000570"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_400, "%00000578"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_405, "%0000057d"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_408, "%00000580"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_261, "@__cxa_finalize")),Direct(Tid(1_356, "%0000054c"))))])), +Blk(Tid(1_356, "%0000054c"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_369, "%00000559"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_275, "@deregister_tm_clones")),Direct(Tid(1_373, "%0000055d"))))])), +Blk(Tid(1_373, "%0000055d"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_378, "%00000562"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_386, "%0000056a"), Attrs([Attr("address","0x8B8"), +Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_324, "%00000914"), Attrs([]), Int(1,1), +Direct(Tid(889, "%00000379")))])), Blk(Tid(889, "%00000379"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(905, "%00000389"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(915, "%00000393"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(919, "%00000397"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(922, "%0000039a"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(927, "%0000039f"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_266, "@__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_335, "%0000091f"), + 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_336, "%00000920"), 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_337, "%00000921"), 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_338, "%00000922"), 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_339, "%00000923"), 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(646, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_809, "%00000711"), 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_816, "%00000718"), 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_821, "%0000071d"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_267, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A4")]), + "_fini", Args([Arg(Tid(2_340, "%00000924"), + 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","0x9A4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9A8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9A8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9A8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9A8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9AC"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(72, "%00000048"), 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(76, "%0000004c"), 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(79, "%0000004f"), 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(84, "%00000054"), + Attrs([Attr("address","0x9B4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_268, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_341, "%00000925"), + 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(2_024, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(2_033, "%000007f1"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#100",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(2_038, "%000007f6"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#100",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(2_043, "%000007fb"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#100",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#100",Imm(64))), Def(Tid(2_054, "%00000806"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_059, "%0000080b"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(2_061, "%0000080d"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_273, "@call_weak_fn")),Direct(Tid(2_063, "%0000080f"))))])), +Blk(Tid(2_063, "%0000080f"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(2_071, "%00000817"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(2_075, "%0000081b"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(2_078, "%0000081e"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_083, "%00000823"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_269, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_342, "%00000926"), + 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(572, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(578, "%00000242"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(592, "%00000250"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(600, "%00000258"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x7D4"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(614, "%00000266"), + Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(620, "%0000026c"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(628, "%00000274"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(640, "%00000280"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(645, "%00000285"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_266, "@__libc_start_main")),Direct(Tid(650, "%0000028a"))))])), +Blk(Tid(650, "%0000028a"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(656, "%00000290"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_272, "@abort")),Direct(Tid(2_325, "%00000915"))))])), +Blk(Tid(2_325, "%00000915"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_326, "%00000916"), Attrs([]), Int(1,1), +(Direct(Tid(2_273, "@call_weak_fn")),))]))])), Sub(Tid(2_272, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(654, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_934, "%0000078e"), 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_941, "%00000795"), 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_946, "%0000079a"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_273, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(2_343, "%00000927"), + 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(658, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(662, "%00000296"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(670, "%0000029e"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(682, "%000002aa"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(676, "%000002a4"), + Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(674, "%000002a2"))), +Goto(Tid(2_327, "%00000917"), Attrs([]), Int(1,1), +Direct(Tid(1_488, "%000005d0")))])), Blk(Tid(674, "%000002a2"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(687, "%000002af"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_488, "%000005d0"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_491, "%000005d3"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_489, "@__gmon_start__")))])), Blk(Tid(1_489, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_909, "%00000775"), 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_916, "%0000077c"), 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_921, "%00000781"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_275, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(2_344, "%00000928"), + 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(693, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(697, "%000002b9"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(704, "%000002c0"), + Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), +Def(Tid(710, "%000002c6"), Attrs([Attr("address","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(717, "%000002cd"), Attrs([Attr("address","0x81C"), +Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(725, "%000002d5"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(729, "%000002d9"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(732, "%000002dc"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(735, "%000002df"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(738, "%000002e2"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(752, "%000002f0"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(746, "%000002ea"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(744, "%000002e8"))), Goto(Tid(2_328, "%00000918"), Attrs([]), + Int(1,1), Direct(Tid(1_449, "%000005a9")))])), Blk(Tid(1_449, "%000005a9"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_453, "%000005ad"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_461, "%000005b5"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(1_472, "%000005c0"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), Var("#77",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_466, "%000005ba"), + Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), + Var("#77",Imm(1)), Direct(Tid(744, "%000002e8"))), +Goto(Tid(2_329, "%00000919"), Attrs([]), Int(1,1), +Direct(Tid(1_475, "%000005c3")))])), Blk(Tid(744, "%000002e8"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(757, "%000002f5"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_475, "%000005c3"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_481, "%000005c9"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_486, "%000005ce"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_278, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_345, "%00000929"), + 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(933, "@frame_dummy"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(935, "%000003a7"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_285, "@register_tm_clones")),))]))])), Sub(Tid(2_279, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_346, "%0000092a"), + 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_299, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_976, "%000007b8"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_984, "%000007c0"), 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_991, "%000007c7"), 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_996, "%000007cc"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_280, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_347, "%0000092b"), + 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_348, "%0000092c"), + 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_349, "%0000092d"), + 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(937, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(944, "%000003b0"), + Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(958, "%000003be"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#42",Imm(64))), Def(Tid(965, "%000003c5"), + Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(973, "%000003cd"), + Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x8E0"), +Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x8E4"), +Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x8E8"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x19c")]), Int(1,1), +(Direct(Tid(2_281, "@malloc")),Direct(Tid(1_005, "%000003ed"))))])), +Blk(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x8F0"), +Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x8F4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x8F8"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_032, "%00000408"), + Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), +Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x900"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x904"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_053, "%0000041d"), + Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x90C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x910"), +Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_071, "%0000042f"), + Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), + Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_074, "%00000432"), + Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_288, "@strlen")),Direct(Tid(1_076, "%00000434"))))])), +Blk(Tid(1_076, "%00000434"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_082, "%0000043a"), Attrs([Attr("address","0x918"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x91C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_095, "%00000447"), Attrs([Attr("address","0x920"), +Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_103, "%0000044f"), + Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_108, "%00000454"), + Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), + Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_111, "%00000457"), + Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_282, "@memcpy")),Direct(Tid(1_113, "%00000459"))))])), +Blk(Tid(1_113, "%00000459"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x92C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_124, "%00000464"), Attrs([Attr("address","0x930"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_132, "%0000046c"), + Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_137, "%00000471"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), +Jmps([Call(Tid(1_140, "%00000474"), Attrs([Attr("address","0x938"), +Attr("insn","bl #-0x1a8")]), Int(1,1), +(Direct(Tid(2_284, "@puts")),Direct(Tid(1_142, "%00000476"))))])), +Blk(Tid(1_142, "%00000476"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_146, "%0000047a"), Attrs([Attr("address","0x93C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x940"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_161, "%00000489"), + Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_168, "%00000490"), Attrs([Attr("address","0x948"), +Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_176, "%00000498"), + Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x950"), +Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), +Def(Tid(1_192, "%000004a8"), Attrs([Attr("address","0x954"), +Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),BigEndian(),8)), +Def(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x958"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x95C"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_213, "%000004bd"), + Attrs([Attr("address","0x960"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x964"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x968"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_234, "%000004d2"), + Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x250")]), Var("R30",Imm(64)), Int(2420,64))]), +Jmps([Call(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x250")]), Int(1,1), +(Direct(Tid(2_288, "@strlen")),Direct(Tid(1_243, "%000004db"))))])), +Blk(Tid(1_243, "%000004db"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x974"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x978"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x97C"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x220")]), Var("R30",Imm(64)), Int(2436,64))]), +Jmps([Call(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x220")]), Int(1,1), +(Direct(Tid(2_283, "@memset")),Direct(Tid(1_274, "%000004fa"))))])), +Blk(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x984")]), Phis([]), +Defs([Def(Tid(1_278, "%000004fe"), Attrs([Attr("address","0x984"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x988"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_293, "%0000050d"), + Attrs([Attr("address","0x98C"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_298, "%00000512"), Attrs([Attr("address","0x990"), +Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2452,64))]), +Jmps([Call(Tid(1_301, "%00000515"), Attrs([Attr("address","0x990"), +Attr("insn","bl #-0x1f0")]), Int(1,1), +(Direct(Tid(2_279, "@free")),Direct(Tid(1_303, "%00000517"))))])), +Blk(Tid(1_303, "%00000517"), Attrs([Attr("address","0x994")]), Phis([]), +Defs([Def(Tid(1_308, "%0000051c"), Attrs([Attr("address","0x994"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_316, "%00000524"), Attrs([Attr("address","0x998"), +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_326, "%0000052e"), 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_330, "%00000532"), 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_333, "%00000535"), 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_338, "%0000053a"), + Attrs([Attr("address","0x9A0"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_281, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_350, "%0000092e"), 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_351, "%0000092f"), + Attrs([Attr("warn-unused","()"), Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_001, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_859, "%00000743"), 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_866, "%0000074a"), 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_871, "%0000074f"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_282, "@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_352, "%00000930"), 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_353, "%00000931"), + 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_354, "%00000932"), 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_355, "%00000933"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_109, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_759, "%000006df"), 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_766, "%000006e6"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_771, "%000006eb"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_283, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_356, "%00000934"), 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_357, "%00000935"), + 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_358, "%00000936"), + 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_359, "%00000937"), 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_270, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_884, "%0000075c"), 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_891, "%00000763"), 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_896, "%00000768"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_284, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_360, "%00000938"), 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_361, "%00000939"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_138, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_951, "%0000079f"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_959, "%000007a7"), 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_966, "%000007ae"), 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_971, "%000007b3"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_285, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(2_362, "%0000093a"), + 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(759, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(763, "%000002fb"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(770, "%00000302"), Attrs([Attr("address","0x844"), +Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(776, "%00000308"), + Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(783, "%0000030f"), + Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), +Def(Tid(791, "%00000317"), Attrs([Attr("address","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(798, "%0000031e"), + Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(806, "%00000326"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), +Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(825, "%00000339"), + Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(819, "%00000333"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(817, "%00000331"))), Goto(Tid(2_330, "%0000091a"), Attrs([]), + Int(1,1), Direct(Tid(1_410, "%00000582")))])), Blk(Tid(1_410, "%00000582"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_414, "%00000586"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_422, "%0000058e"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), +Def(Tid(1_433, "%00000599"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), Var("#72",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_427, "%00000593"), + Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), + Var("#72",Imm(1)), Direct(Tid(817, "%00000331"))), +Goto(Tid(2_331, "%0000091b"), Attrs([]), Int(1,1), +Direct(Tid(1_436, "%0000059c")))])), Blk(Tid(817, "%00000331"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(830, "%0000033e"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_436, "%0000059c"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_442, "%000005a2"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_447, "%000005a7"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_288, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_363, "%0000093b"), 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_364, "%0000093c"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_072, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_784, "%000006f8"), 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_791, "%000006ff"), 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_796, "%00000704"), + 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..df98f3236 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,371 @@ +0000091c: program +000008d5: sub __cxa_finalize(__cxa_finalize_result) +0000091d: __cxa_finalize_result :: out u32 = low:32[R0] + +0000057e: +00000722: R16 := 0x20000 +0000072a: R17 := mem[R16 + 0x18, el]:u64 +00000731: R16 := R16 + 0x18 +00000736: call R17 with noreturn + +000008d6: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000091e: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000342: +00000349: #34 := R31 - 0x20 +0000034e: mem := mem with [#34, el]:u64 <- R29 +00000353: mem := mem with [#34 + 8, el]:u64 <- R30 +00000357: R31 := #34 +0000035e: R29 := R31 +00000366: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000036c: R19 := 0x20000 +00000375: R0 := pad:32[mem[R19 + 0x78]] +00000381: #36 := ~~0:0[R0] +0000037b: when #36 goto %00000379 +00000912: goto %0000053c + +0000053c: +00000540: R0 := 0x1F000 +00000548: R0 := mem[R0 + 0xFC8, el]:u64 +00000554: #69 := R0 = 0 +0000054e: when #69 goto %0000054c +00000913: goto %0000056c + +0000056c: +00000570: R0 := 0x20000 +00000578: R0 := mem[R0 + 0x58, el]:u64 +0000057d: R30 := 0x8B0 +00000580: call @__cxa_finalize with return %0000054c + +0000054c: +00000559: R30 := 0x8B4 +0000055b: call @deregister_tm_clones with return %0000055d + +0000055d: +00000562: R0 := 1 +0000056a: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] +00000914: goto %00000379 + +00000379: +00000389: R19 := mem[R31 + 0x10, el]:u64 +00000393: R29 := mem[R31, el]:u64 +00000397: R30 := mem[R31 + 8, el]:u64 +0000039a: R31 := R31 + 0x20 +0000039f: call R30 with noreturn + +000008da: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +0000091f: __libc_start_main_main :: in u64 = R0 +00000920: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000921: __libc_start_main_arg3 :: in out u64 = R2 +00000922: __libc_start_main_auxv :: in out u64 = R3 +00000923: __libc_start_main_result :: out u32 = low:32[R0] + +00000286: +00000709: R16 := 0x20000 +00000711: R17 := mem[R16 + 0x10, el]:u64 +00000718: R16 := R16 + 0x10 +0000071d: call R17 with noreturn + +000008db: sub _fini(_fini_result) +00000924: _fini_result :: out u32 = low:32[R0] + +00000020: +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +000008dc: sub _init(_init_result) +00000925: _init_result :: out u32 = low:32[R0] + +000007e8: +000007f1: #100 := R31 - 0x10 +000007f6: mem := mem with [#100, el]:u64 <- R29 +000007fb: mem := mem with [#100 + 8, el]:u64 <- R30 +000007ff: R31 := #100 +00000806: R29 := R31 +0000080b: R30 := 0x6E8 +0000080d: call @call_weak_fn with return %0000080f + +0000080f: +00000817: R29 := mem[R31, el]:u64 +0000081b: R30 := mem[R31 + 8, el]:u64 +0000081e: R31 := R31 + 0x10 +00000823: call R30 with noreturn + +000008dd: sub _start(_start_result) +00000926: _start_result :: out u32 = low:32[R0] + +0000023c: +00000242: R29 := 0 +00000248: R30 := 0 +00000250: R5 := R0 +00000258: R1 := mem[R31, el]:u64 +0000025f: R2 := R31 + 8 +00000266: R6 := R31 +0000026c: R0 := 0x1F000 +00000274: R0 := mem[R0 + 0xFD8, el]:u64 +0000027a: R3 := 0 +00000280: R4 := 0 +00000285: R30 := 0x7F0 +00000288: call @__libc_start_main with return %0000028a + +0000028a: +0000028d: R30 := 0x7F4 +00000290: call @abort with return %00000915 + +00000915: +00000916: call @call_weak_fn with noreturn + +000008e0: sub abort() + + +0000028e: +00000786: R16 := 0x20000 +0000078e: R17 := mem[R16 + 0x38, el]:u64 +00000795: R16 := R16 + 0x38 +0000079a: call R17 with noreturn + +000008e1: sub call_weak_fn(call_weak_fn_result) +00000927: call_weak_fn_result :: out u32 = low:32[R0] + +00000292: +00000296: R0 := 0x1F000 +0000029e: R0 := mem[R0 + 0xFD0, el]:u64 +000002aa: #12 := R0 = 0 +000002a4: when #12 goto %000002a2 +00000917: goto %000005d0 + +000002a2: +000002af: call R30 with noreturn + +000005d0: +000005d3: goto @__gmon_start__ + +000005d1: +0000076d: R16 := 0x20000 +00000775: R17 := mem[R16 + 0x30, el]:u64 +0000077c: R16 := R16 + 0x30 +00000781: call R17 with noreturn + +000008e3: sub deregister_tm_clones(deregister_tm_clones_result) +00000928: deregister_tm_clones_result :: out u32 = low:32[R0] + +000002b5: +000002b9: R0 := 0x20000 +000002c0: R0 := R0 + 0x78 +000002c6: R1 := 0x20000 +000002cd: R1 := R1 + 0x78 +000002d5: #16 := 1 + ~R0 + R1 +000002d9: NF := 63:63[#16] +000002dc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002df: ZF := #16 = 0 +000002e2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002f0: #21 := ZF +000002ea: when #21 goto %000002e8 +00000918: goto %000005a9 + +000005a9: +000005ad: R1 := 0x1F000 +000005b5: R1 := mem[R1 + 0xFC0, el]:u64 +000005c0: #77 := R1 = 0 +000005ba: when #77 goto %000002e8 +00000919: goto %000005c3 + +000002e8: +000002f5: call R30 with noreturn + +000005c3: +000005c9: R16 := R1 +000005ce: call R16 with noreturn + +000008e6: sub frame_dummy(frame_dummy_result) +00000929: frame_dummy_result :: out u32 = low:32[R0] + +000003a5: +000003a7: call @register_tm_clones with noreturn + +000008e7: sub free(free_ptr) +0000092a: free_ptr :: in out u64 = R0 + +00000513: +000007b8: R16 := 0x20000 +000007c0: R17 := mem[R16 + 0x48, el]:u64 +000007c7: R16 := R16 + 0x48 +000007cc: call R17 with noreturn + +000008e8: sub main(main_argc, main_argv, main_result) +0000092b: main_argc :: in u32 = low:32[R0] +0000092c: main_argv :: in out u64 = R1 +0000092d: main_result :: out u32 = low:32[R0] + +000003a9: +000003b0: #42 := R31 - 0x30 +000003b5: mem := mem with [#42, el]:u64 <- R29 +000003ba: mem := mem with [#42 + 8, el]:u64 <- R30 +000003be: R31 := #42 +000003c5: R29 := R31 +000003cd: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003d5: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003dd: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003e3: R0 := 0xB +000003e8: R30 := 0x8F0 +000003eb: call @malloc with return %000003ed + +000003ed: +000003f3: R1 := R0 +000003f9: R0 := 0x20000 +00000400: R0 := R0 + 0x80 +00000408: mem := mem with [R0, el]:u64 <- R1 +0000040e: R0 := 0x20000 +00000415: R0 := R0 + 0x80 +0000041d: R19 := mem[R0, el]:u64 +00000423: R0 := 0x20000 +0000042a: R0 := R0 + 0x68 +0000042f: R30 := 0x918 +00000432: call @strlen with return %00000434 + +00000434: +0000043a: R2 := R0 +00000440: R0 := 0x20000 +00000447: R1 := R0 + 0x68 +0000044f: R0 := R19 +00000454: R30 := 0x92C +00000457: call @memcpy with return %00000459 + +00000459: +0000045d: R0 := 0x20000 +00000464: R0 := R0 + 0x80 +0000046c: R0 := mem[R0, el]:u64 +00000471: R30 := 0x93C +00000474: call @puts with return %00000476 + +00000476: +0000047a: R0 := 0x20000 +00000481: R0 := R0 + 0x80 +00000489: R0 := mem[R0, el]:u64 +00000490: R0 := R0 + 4 +00000498: mem := mem with [R31 + 0x28, el]:u64 <- R0 +000004a0: R0 := mem[R31 + 0x28, el]:u64 +000004a8: mem := mem with [R0] <- 0 +000004ae: R0 := 0x20000 +000004b5: R0 := R0 + 0x80 +000004bd: R19 := mem[R0, el]:u64 +000004c3: R0 := 0x20000 +000004ca: R0 := R0 + 0x80 +000004d2: R0 := mem[R0, el]:u64 +000004d7: R30 := 0x974 +000004d9: call @strlen with return %000004db + +000004db: +000004e1: R2 := R0 +000004e8: R1 := 1 +000004f0: R0 := R19 +000004f5: R30 := 0x984 +000004f8: call @memset with return %000004fa + +000004fa: +000004fe: R0 := 0x20000 +00000505: R0 := R0 + 0x80 +0000050d: R0 := mem[R0, el]:u64 +00000512: R30 := 0x994 +00000515: call @free with return %00000517 + +00000517: +0000051c: R0 := 0 +00000524: R19 := mem[R31 + 0x10, el]:u64 +0000052e: R29 := mem[R31, el]:u64 +00000532: R30 := mem[R31 + 8, el]:u64 +00000535: R31 := R31 + 0x30 +0000053a: call R30 with noreturn + +000008e9: sub malloc(malloc_size, malloc_result) +0000092e: malloc_size :: in u64 = R0 +0000092f: malloc_result :: out u64 = R0 + +000003e9: +0000073b: R16 := 0x20000 +00000743: R17 := mem[R16 + 0x20, el]:u64 +0000074a: R16 := R16 + 0x20 +0000074f: call R17 with noreturn + +000008ea: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000930: memcpy_dst :: in out u64 = R0 +00000931: memcpy_src :: in out u64 = R1 +00000932: memcpy_n :: in u64 = R2 +00000933: memcpy_result :: out u64 = R0 + +00000455: +000006d7: R16 := 0x20000 +000006df: R17 := mem[R16, el]:u64 +000006e6: R16 := R16 +000006eb: call R17 with noreturn + +000008eb: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000934: memset_buf :: in out u64 = R0 +00000935: memset_c :: in u32 = low:32[R1] +00000936: memset_n :: in u64 = R2 +00000937: memset_result :: out u64 = R0 + +000004f6: +00000754: R16 := 0x20000 +0000075c: R17 := mem[R16 + 0x28, el]:u64 +00000763: R16 := R16 + 0x28 +00000768: call R17 with noreturn + +000008ec: sub puts(puts_s, puts_result) +00000938: puts_s :: in u64 = R0 +00000939: puts_result :: out u32 = low:32[R0] + +00000472: +0000079f: R16 := 0x20000 +000007a7: R17 := mem[R16 + 0x40, el]:u64 +000007ae: R16 := R16 + 0x40 +000007b3: call R17 with noreturn + +000008ed: sub register_tm_clones(register_tm_clones_result) +0000093a: register_tm_clones_result :: out u32 = low:32[R0] + +000002f7: +000002fb: R0 := 0x20000 +00000302: R0 := R0 + 0x78 +00000308: R1 := 0x20000 +0000030f: R1 := R1 + 0x78 +00000317: R1 := R1 - R0 +0000031e: R2 := R1 >> 0x3F +00000326: R1 := R2 + (R1 ~>> 3) +0000032d: R1 := R1 >> 1 +00000339: #30 := R1 = 0 +00000333: when #30 goto %00000331 +0000091a: goto %00000582 + +00000582: +00000586: R2 := 0x1F000 +0000058e: R2 := mem[R2 + 0xFE0, el]:u64 +00000599: #72 := R2 = 0 +00000593: when #72 goto %00000331 +0000091b: goto %0000059c + +00000331: +0000033e: call R30 with noreturn + +0000059c: +000005a2: R16 := R2 +000005a7: call R16 with noreturn + +000008f0: sub strlen(strlen_s, strlen_result) +0000093b: strlen_s :: in u64 = R0 +0000093c: strlen_result :: out u64 = R0 + +00000430: +000006f0: R16 := 0x20000 +000006f8: R17 := mem[R16 + 8, el]:u64 +000006ff: R16 := R16 + 8 +00000704: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected new file mode 100644 index 000000000..e0dd7a116 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,838 @@ +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_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} 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 == 131200bv64); +const {:extern} $password_addr: bv64; +axiom ($password_addr == 131168bv64); +const {:extern} $stext_addr: bv64; +axiom ($stext_addr == 131176bv64); +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_be(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, 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, 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) == 0bv8); + free requires (memory_load8_le(mem, 131170bv64) == 0bv8); + free requires (memory_load8_le(mem, 131171bv64) == 0bv8); + 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) == 117bv8); + free requires (memory_load8_le(mem, 131177bv64) == 115bv8); + free requires (memory_load8_le(mem, 131178bv64) == 101bv8); + free requires (memory_load8_le(mem, 131179bv64) == 114bv8); + free requires (memory_load8_le(mem, 131180bv64) == 58bv8); + free requires (memory_load8_le(mem, 131181bv64) == 112bv8); + free requires (memory_load8_le(mem, 131182bv64) == 97bv8); + free requires (memory_load8_le(mem, 131183bv64) == 115bv8); + free requires (memory_load8_le(mem, 131184bv64) == 115bv8); + free requires (memory_load8_le(mem, 131185bv64) == 0bv8); + free requires (memory_load8_le(mem, 131186bv64) == 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R19 == old(R19)); + 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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 #42: bv64; + var Gamma_#42: bool; + lmain: + assume {:captureState "lmain"} true; + #42, Gamma_#42 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); + assume {:captureState "%000003b5"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); + assume {:captureState "%000003ba"} true; + R31, Gamma_R31 := #42, Gamma_#42; + R29, Gamma_R29 := R31, Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); + assume {:captureState "%000003cd"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); + assume {:captureState "%000003d5"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); + assume {:captureState "%000003dd"} true; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2288bv64, true; + call malloc(); + goto l000003ed; + l000003ed: + assume {:captureState "l000003ed"} true; + R1, Gamma_R1 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + assert (L(mem, R0) ==> Gamma_R1); + mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); + assume {:captureState "%00000408"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; + R30, Gamma_R30 := 2328bv64, true; + call strlen(); + goto l00000434; + l00000434: + assume {:captureState "l00000434"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := 131072bv64, true; + R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2348bv64, true; + call memcpy(); + goto l00000459; + l00000459: + assume {:captureState "l00000459"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2364bv64, true; + call puts(); + goto l00000476; + l00000476: + assume {:captureState "l00000476"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := bvadd64(R0, 4bv64), Gamma_R0; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); + assume {:captureState "%00000498"} true; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); + call rely(); + assert (L(mem, R0) ==> true); + mem, Gamma_mem := memory_store8_be(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%000004a8"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2420bv64, true; + call strlen(); + goto l000004db; + l000004db: + assume {:captureState "l000004db"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R1, Gamma_R1 := 1bv64, true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2436bv64, true; + call memset(); + goto l000004fa; + l000004fa: + assume {:captureState "l000004fa"} true; + R0, Gamma_R0 := 131072bv64, true; + R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2452bv64, true; + call #free(); + goto l00000517; + l00000517: + assume {:captureState "l00000517"} true; + R0, Gamma_R0 := 0bv64, true; + R19, Gamma_R19 := 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, 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free requires (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free requires (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free requires (memory_load8_le(mem, 131033bv64) == 8bv8); + 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, 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, 130504bv64) == 208bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); + 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) == 128bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); + 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) == 212bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); + 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..ceafc2ab2 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/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 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 98 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp + 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id + 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag + 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash + 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym + 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr + 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version + 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r + 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn + 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt + 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt + 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text + 14: 00000000000009a4 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009b8 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009bc 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009f8 0 SECTION LOCAL DEFAULT 17 .eh_frame + 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array + 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array + 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic + 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got + 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt + 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss + 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d + 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag + 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 0000000000000a0c 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009b8 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 00000000000009a4 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 0000000000000a20 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d + 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d + 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x + 58: 0000000000000a80 0 NOTYPE LOCAL DEFAULT 17 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000aa4 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000aa4 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 00000000000009bc 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 00000000000009a4 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 85: 00000000000009b8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf + 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext + 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 94: 00000000000008d4 208 FUNC GLOBAL DEFAULT 13 main + 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..46fa898b3 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,799 @@ +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 2532 20 2532)\n(code-region 2048 484 2048)\n(code-region 1824 192 1824)\n(code-region 1800 24 1800)\n(code-start 2100)\n(code-start 2048)\n(code-start 2324)\n(entry-point 2048)\n(external-reference 130992 _ITM_deregisterTMCloneTable)\n(external-reference 131000 __cxa_finalize)\n(external-reference 131008 __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 1800 0)\n(llvm:code-entry main 2324 208)\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 2532 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 2532 20)\n(llvm:code-entry .text 2048 484)\n(llvm:code-entry .plt 1824 192)\n(llvm:code-entry .init 1800 24)\n(llvm:elf-program-header 08 64952 584)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2556 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64968 480)\n(llvm:elf-program-header 03 64952 699)\n(llvm:elf-program-header 02 0 2792)\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 2556 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130504 480)\n(llvm:elf-virtual-program-header 03 130488 720)\n(llvm:elf-virtual-program-header 02 0 2792)\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 131008 __gmon_start__)\n(llvm:name-reference 131000 __cxa_finalize)\n(llvm:name-reference 130992 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 130984 64 65448)\n(llvm:section-entry .dynamic 130504 480 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 2616 176 2616)\n(llvm:section-entry .eh_frame_hdr 2556 60 2556)\n(llvm:section-entry .rodata 2552 4 2552)\n(llvm:section-entry .fini 2532 20 2532)\n(llvm:section-entry .text 2048 484 2048)\n(llvm:section-entry .plt 1824 192 1824)\n(llvm:section-entry .init 1800 24 1800)\n(llvm:section-entry .rela.plt 1560 240 1560)\n(llvm:section-entry .rela.dyn 1320 240 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 1800 0 1800 1800)\n(llvm:symbol-entry main 2324 208 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 2532 0 2532 2532)\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 2792 0)\n(mapped 130488 699 64952)\n(named-region 0 2792 02)\n(named-region 130488 720 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 240 .rela.dyn)\n(named-region 1560 240 .rela.plt)\n(named-region 1800 24 .init)\n(named-region 1824 192 .plt)\n(named-region 2048 484 .text)\n(named-region 2532 20 .fini)\n(named-region 2552 4 .rodata)\n(named-region 2556 60 .eh_frame_hdr)\n(named-region 2616 176 .eh_frame)\n(named-region 130488 8 .init_array)\n(named-region 130496 8 .fini_array)\n(named-region 130504 480 .dynamic)\n(named-region 130984 64 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .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 2532 _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 1800 _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 240)\n(section 1560 240)\n(section 1800 24)\n(section 1824 192)\n(section 2048 484)\n(section 2532 20)\n(section 2552 4)\n(section 2556 60)\n(section 2616 176)\n(section 130488 8)\n(section 130496 8)\n(section 130504 480)\n(section 130984 64)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2792 true false true)\n(segment 130488 720 true true false)\n(subarch v8)\n(symbol-chunk 2100 20 2100)\n(symbol-chunk 2048 52 2048)\n(symbol-chunk 2324 208 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 2532 2532)\n(symbol-value 2048 2048)\n(symbol-value 2324 2324)\n(symbol-value 1800 1800)\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\x80\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\xe8\x0a\x00\x00\x00\x00\x00\x00\xe8\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\x80\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\xe8\x0a\x00\x00\x00\x00\x00\x00\xe8\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\xbb\x02\x00\x00\x00\x00\x00\x00\xd0\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\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\xfc\x09\x00\x00\x00\x00\x00\x00\xfc\x09\x00\x00\x00\x00\x00\x00\xfc\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\xa8\x0f\x4d\x6a\xc2\x15\x06\x60\x14\x02\xc2\x60\xa5\x03\xbd\x39\x88\x55\x1c\x12\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xe8\x0a\x00\x00\x00\x00\x00\x00\xe8\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\xbb\x02\x00\x00\x00\x00\x00\x00\xd0\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\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\xfc\x09\x00\x00\x00\x00\x00\x00\xfc\x09\x00\x00\x00\x00\x00\x00\xfc\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\xa8\x0f\x4d\x6a\xc2\x15\x06\x60\x14\x02\xc2\x60\xa5\x03\xbd\x39\x88\x55\x1c\x12\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\x08\x07\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\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x68\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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\x48\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x95\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"), +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\xa8\x0f\x4d\x6a\xc2\x15\x06\x60\x14\x02\xc2\x60\xa5\x03\xbd\x39\x88\x55\x1c\x12"), +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\x08\x07\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, "\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x68\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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", 0x618, "\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", 0x708, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x48\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x720, "\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", 0x9E4, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9F8, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9FC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x04\xfe\xff\xff\x50\x00\x00\x00\x54\xfe\xff\xff\x64\x00\x00\x00\x84\xfe\xff\xff\x78\x00\x00\x00\xc4\xfe\xff\xff\x8c\x00\x00\x00\x14\xff\xff\xff\xb0\x00\x00\x00\x18\xff\xff\xff\xc4\x00\x00\x00"), +Section(".eh_frame", 0xA38, "\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\xac\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xe8\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x04\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x30\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\x5c\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x4c\xfe\xff\xff\xd0\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x70\xde\xdd\xd3\x0e\x00\x00\x00\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\x08\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xe4\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\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\x18\x06\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\xf0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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", 0x1FFA8, "\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\x80\x00\x02\x00\x00\x00\x00\x00\x68\x00\x02\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\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\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\x00\x00\x00\x00\x00\x00\x00\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\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x95\xff\xff\x97\xe1\x03\x00\xaa\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x01\x00\x00\xf9\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x13\x00\x40\xf9\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x7f\xff\xff\x97\xe2\x03\x00\xaa\xe0\x00\x00\xf0\x01\xe8\x47\xf9\xe0\x03\x13\xaa\x76\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x92\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\xe0\x17\x40\xf9\x1f\x00\x00\x39\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x13\x00\x40\xf9\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x68\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x74\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x80\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xAE7), Attr("segment","02 0 2792")), +Annotation(Region(0x800,0x833), Attr("symbol","\"_start\"")), +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,0x617), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x618,0x707), Attr("section","\".rela.plt\"")), +Annotation(Region(0x708,0x71F), Attr("section","\".init\"")), +Annotation(Region(0x720,0x7DF), Attr("section","\".plt\"")), +Annotation(Region(0x708,0x71F), Attr("code-region","()")), +Annotation(Region(0x720,0x7DF), 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,0x9E3), Attr("symbol","\"main\"")), +Annotation(Region(0x914,0x9E3), Attr("symbol-info","main 0x914 208")), +Annotation(Region(0x9E4,0x9F7), Attr("section","\".fini\"")), +Annotation(Region(0x9F8,0x9FB), Attr("section","\".rodata\"")), +Annotation(Region(0x9FC,0xA37), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA38,0xAE7), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDB8,0x20072), Attr("segment","03 0x1FDB8 720")), +Annotation(Region(0x1FDC0,0x1FDC7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDC8,0x1FFA7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDB8,0x1FDBF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFA8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), +Annotation(Region(0x800,0x9E3), Attr("section","\".text\"")), +Annotation(Region(0x800,0x9E3), Attr("code-region","()")), +Annotation(Region(0x9E4,0x9F7), Attr("code-region","()"))]), +Program(Tid(2_341, "%00000925"), Attrs([]), + Subs([Sub(Tid(2_270, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x770"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_342, "%00000926"), + 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_415, "@__cxa_finalize"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_835, "%0000072b"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x774"), +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_850, "%0000073a"), Attrs([Attr("address","0x778"), +Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_855, "%0000073f"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_271, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_343, "%00000927"), + 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(834, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(841, "%00000349"), + Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(846, "%0000034e"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(851, "%00000353"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(855, "%00000357"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#34",Imm(64))), Def(Tid(862, "%0000035e"), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(870, "%00000366"), + 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(876, "%0000036c"), Attrs([Attr("address","0x8CC"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(885, "%00000375"), Attrs([Attr("address","0x8D0"), +Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), +UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), +Def(Tid(897, "%00000381"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), +Jmps([Goto(Tid(891, "%0000037b"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), +Direct(Tid(889, "%00000379"))), Goto(Tid(2_331, "%0000091b"), Attrs([]), + Int(1,1), Direct(Tid(1_349, "%00000545")))])), Blk(Tid(1_349, "%00000545"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_353, "%00000549"), Attrs([Attr("address","0x8D8"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_361, "%00000551"), Attrs([Attr("address","0x8DC"), +Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64)), +Def(Tid(1_373, "%0000055d"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), Var("#78",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_367, "%00000557"), + Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), + Var("#78",Imm(1)), Direct(Tid(1_365, "%00000555"))), +Goto(Tid(2_332, "%0000091c"), Attrs([]), Int(1,1), +Direct(Tid(1_397, "%00000575")))])), Blk(Tid(1_397, "%00000575"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_401, "%00000579"), Attrs([Attr("address","0x8E4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_409, "%00000581"), 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_414, "%00000586"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_417, "%00000589"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x17c")]), Int(1,1), +(Direct(Tid(2_270, "@__cxa_finalize")),Direct(Tid(1_365, "%00000555"))))])), +Blk(Tid(1_365, "%00000555"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_378, "%00000562"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_380, "%00000564"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_284, "@deregister_tm_clones")),Direct(Tid(1_382, "%00000566"))))])), +Blk(Tid(1_382, "%00000566"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_387, "%0000056b"), Attrs([Attr("address","0x8F4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_395, "%00000573"), Attrs([Attr("address","0x8F8"), +Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), +Jmps([Goto(Tid(2_333, "%0000091d"), Attrs([]), Int(1,1), +Direct(Tid(889, "%00000379")))])), Blk(Tid(889, "%00000379"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(905, "%00000389"), + 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(915, "%00000393"), 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(919, "%00000397"), 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(922, "%0000039a"), 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(927, "%0000039f"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_275, "@__libc_start_main"), + Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), +Attr("address","0x760"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_344, "%00000928"), + 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_345, "%00000929"), 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_346, "%0000092a"), 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_347, "%0000092b"), 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_348, "%0000092c"), 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(646, "@__libc_start_main"), + Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_810, "%00000712"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_818, "%0000071a"), Attrs([Attr("address","0x764"), +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_825, "%00000721"), Attrs([Attr("address","0x768"), +Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_830, "%00000726"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_276, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9E4")]), + "_fini", Args([Arg(Tid(2_349, "%0000092d"), + 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","0x9E4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9E8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9E8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9E8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9E8"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9EC"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9F0"), +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(76, "%0000004c"), Attrs([Attr("address","0x9F0"), +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(79, "%0000004f"), Attrs([Attr("address","0x9F0"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), + Attrs([Attr("address","0x9F4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_277, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x708")]), + "_init", Args([Arg(Tid(2_350, "%0000092e"), + 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(2_033, "@_init"), + Attrs([Attr("address","0x708")]), Phis([]), +Defs([Def(Tid(2_042, "%000007fa"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#109",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#109",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(2_052, "%00000804"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#109",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(2_056, "%00000808"), Attrs([Attr("address","0x70C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#109",Imm(64))), Def(Tid(2_063, "%0000080f"), + Attrs([Attr("address","0x710"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_068, "%00000814"), + Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), + Var("R30",Imm(64)), Int(1816,64))]), Jmps([Call(Tid(2_070, "%00000816"), + Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), Int(1,1), +(Direct(Tid(2_282, "@call_weak_fn")),Direct(Tid(2_072, "%00000818"))))])), +Blk(Tid(2_072, "%00000818"), Attrs([Attr("address","0x718")]), Phis([]), +Defs([Def(Tid(2_080, "%00000820"), Attrs([Attr("address","0x718"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(2_084, "%00000824"), Attrs([Attr("address","0x718"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(2_087, "%00000827"), Attrs([Attr("address","0x718"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_092, "%0000082c"), + Attrs([Attr("address","0x71C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_278, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_351, "%0000092f"), + 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(572, "@_start"), + Attrs([Attr("address","0x800")]), Phis([]), Defs([Def(Tid(578, "%00000242"), + Attrs([Attr("address","0x804"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), + Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(592, "%00000250"), + Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(600, "%00000258"), + 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(607, "%0000025f"), Attrs([Attr("address","0x814"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(614, "%00000266"), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(620, "%0000026c"), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(628, "%00000274"), + 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(634, "%0000027a"), Attrs([Attr("address","0x824"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(640, "%00000280"), Attrs([Attr("address","0x828"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(645, "%00000285"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xcc")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xcc")]), Int(1,1), +(Direct(Tid(2_275, "@__libc_start_main")),Direct(Tid(650, "%0000028a"))))])), +Blk(Tid(650, "%0000028a"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x80")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(656, "%00000290"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x80")]), Int(1,1), +(Direct(Tid(2_281, "@abort")),Direct(Tid(2_334, "%0000091e"))))])), +Blk(Tid(2_334, "%0000091e"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_335, "%0000091f"), Attrs([]), Int(1,1), +(Direct(Tid(2_282, "@call_weak_fn")),))]))])), Sub(Tid(2_281, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x7B0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(654, "@abort"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_935, "%0000078f"), Attrs([Attr("address","0x7B0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_943, "%00000797"), Attrs([Attr("address","0x7B4"), +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_950, "%0000079e"), Attrs([Attr("address","0x7B8"), +Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_955, "%000007a3"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_282, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_352, "%00000930"), + 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(658, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(662, "%00000296"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(670, "%0000029e"), + Attrs([Attr("address","0x838"), Attr("insn","ldr x0, [x0, #0xfc0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64)), +Def(Tid(682, "%000002aa"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), +EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(676, "%000002a4"), + Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), + Var("#12",Imm(1)), Direct(Tid(674, "%000002a2"))), +Goto(Tid(2_336, "%00000920"), Attrs([]), Int(1,1), +Direct(Tid(1_497, "%000005d9")))])), Blk(Tid(674, "%000002a2"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(687, "%000002af"), Attrs([Attr("address","0x844"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_497, "%000005d9"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_500, "%000005dc"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0xa0")]), Int(1,1), +Direct(Tid(1_498, "@__gmon_start__")))])), Blk(Tid(1_498, "@__gmon_start__"), + Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_910, "%00000776"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_918, "%0000077e"), Attrs([Attr("address","0x7A4"), +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_925, "%00000785"), Attrs([Attr("address","0x7A8"), +Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_930, "%0000078a"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_284, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_353, "%00000931"), + 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(693, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(697, "%000002b9"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(704, "%000002c0"), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x78")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), +Def(Tid(710, "%000002c6"), Attrs([Attr("address","0x858"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(717, "%000002cd"), Attrs([Attr("address","0x85C"), +Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(725, "%000002d5"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("#16",Imm(64)), +PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), +Def(Tid(729, "%000002d9"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,Var("#16",Imm(64)))), Def(Tid(732, "%000002dc"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("VF",Imm(1)), +OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), +Def(Tid(735, "%000002df"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(738, "%000002e2"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("CF",Imm(1)), +OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), +Def(Tid(752, "%000002f0"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), +Jmps([Goto(Tid(746, "%000002ea"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), +Direct(Tid(744, "%000002e8"))), Goto(Tid(2_337, "%00000921"), Attrs([]), + Int(1,1), Direct(Tid(1_458, "%000005b2")))])), Blk(Tid(1_458, "%000005b2"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_462, "%000005b6"), Attrs([Attr("address","0x868"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_470, "%000005be"), Attrs([Attr("address","0x86C"), +Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64)), +Def(Tid(1_481, "%000005c9"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), Var("#86",Imm(1)), +EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_475, "%000005c3"), + Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), + Var("#86",Imm(1)), Direct(Tid(744, "%000002e8"))), +Goto(Tid(2_338, "%00000922"), Attrs([]), Int(1,1), +Direct(Tid(1_484, "%000005cc")))])), Blk(Tid(744, "%000002e8"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(757, "%000002f5"), Attrs([Attr("address","0x87C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_484, "%000005cc"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_490, "%000005d2"), Attrs([Attr("address","0x874"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_495, "%000005d7"), Attrs([Attr("address","0x878"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_287, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_354, "%00000932"), + 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(933, "@frame_dummy"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(935, "%000003a7"), Attrs([Attr("address","0x910"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_294, "@register_tm_clones")),))]))])), Sub(Tid(2_288, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7D0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_355, "%00000933"), + 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_308, "@free"), Attrs([Attr("address","0x7D0")]), + Phis([]), Defs([Def(Tid(1_985, "%000007c1"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_993, "%000007c9"), Attrs([Attr("address","0x7D4"), +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(2_000, "%000007d0"), Attrs([Attr("address","0x7D8"), +Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(2_005, "%000007d5"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_289, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_356, "%00000934"), + 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_357, "%00000935"), + 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_358, "%00000936"), + 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(937, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(944, "%000003b0"), + Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(958, "%000003be"), Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#42",Imm(64))), Def(Tid(965, "%000003c5"), + Attrs([Attr("address","0x918"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(973, "%000003cd"), + Attrs([Attr("address","0x91C"), 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(981, "%000003d5"), Attrs([Attr("address","0x920"), +Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x924"), +Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x928"), +Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x1ac")]), Var("R30",Imm(64)), Int(2352,64))]), +Jmps([Call(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x92C"), +Attr("insn","bl #-0x1ac")]), Int(1,1), +(Direct(Tid(2_290, "@malloc")),Direct(Tid(1_005, "%000003ed"))))])), +Blk(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x930"), +Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x934"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x938"), +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)), +Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x93C"), +Attr("insn","str x1, [x0]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), +Def(Tid(1_039, "%0000040f"), Attrs([Attr("address","0x940"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x944"), +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)), +Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x948"), +Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x94C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x950"), +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)), +Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2392,64))]), +Jmps([Call(Tid(1_077, "%00000435"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x204")]), Int(1,1), +(Direct(Tid(2_297, "@strlen")),Direct(Tid(1_079, "%00000437"))))])), +Blk(Tid(1_079, "%00000437"), Attrs([Attr("address","0x958")]), Phis([]), +Defs([Def(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x958"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x95C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x960"), +Attr("insn","ldr x1, [x0, #0xfd0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), +Def(Tid(1_107, "%00000453"), Attrs([Attr("address","0x964"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_112, "%00000458"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x228")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x228")]), Int(1,1), +(Direct(Tid(2_291, "@memcpy")),Direct(Tid(1_117, "%0000045d"))))])), +Blk(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x96C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x970"), +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)), +Def(Tid(1_137, "%00000471"), Attrs([Attr("address","0x974"), +Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_142, "%00000476"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2428,64))]), +Jmps([Call(Tid(1_145, "%00000479"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1b8")]), Int(1,1), +(Direct(Tid(2_293, "@puts")),Direct(Tid(1_147, "%0000047b"))))])), +Blk(Tid(1_147, "%0000047b"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x97C"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x980"), +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)), +Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x984"), +Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x988"), +Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_182, "%0000049e"), + Attrs([Attr("address","0x98C"), Attr("insn","str x0, [sp, #0x28]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x990"), +Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), +Def(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x994"), +Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),BigEndian(),8)), +Def(Tid(1_204, "%000004b4"), Attrs([Attr("address","0x998"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x99C"), +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)), +Def(Tid(1_220, "%000004c4"), Attrs([Attr("address","0x9A0"), +Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x9A4"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_234, "%000004d2"), Attrs([Attr("address","0x9A8"), +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)), +Def(Tid(1_242, "%000004da"), Attrs([Attr("address","0x9AC"), +Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_247, "%000004df"), Attrs([Attr("address","0x9B0"), +Attr("insn","bl #-0x260")]), Var("R30",Imm(64)), Int(2484,64))]), +Jmps([Call(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x9B0"), +Attr("insn","bl #-0x260")]), Int(1,1), +(Direct(Tid(2_297, "@strlen")),Direct(Tid(1_251, "%000004e3"))))])), +Blk(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x9B4")]), Phis([]), +Defs([Def(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x9B4"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x9B8"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x9BC"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x9C0"), +Attr("insn","bl #-0x230")]), Var("R30",Imm(64)), Int(2500,64))]), +Jmps([Call(Tid(1_280, "%00000500"), Attrs([Attr("address","0x9C0"), +Attr("insn","bl #-0x230")]), Int(1,1), +(Direct(Tid(2_292, "@memset")),Direct(Tid(1_282, "%00000502"))))])), +Blk(Tid(1_282, "%00000502"), Attrs([Attr("address","0x9C4")]), Phis([]), +Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x9C4"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x9C8"), +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)), +Def(Tid(1_302, "%00000516"), Attrs([Attr("address","0x9CC"), +Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x9D0"), +Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2516,64))]), +Jmps([Call(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x9D0"), +Attr("insn","bl #-0x200")]), Int(1,1), +(Direct(Tid(2_288, "@free")),Direct(Tid(1_312, "%00000520"))))])), +Blk(Tid(1_312, "%00000520"), Attrs([Attr("address","0x9D4")]), Phis([]), +Defs([Def(Tid(1_317, "%00000525"), Attrs([Attr("address","0x9D4"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x9D8"), +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_335, "%00000537"), Attrs([Attr("address","0x9DC"), +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_339, "%0000053b"), Attrs([Attr("address","0x9DC"), +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_342, "%0000053e"), Attrs([Attr("address","0x9DC"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_347, "%00000543"), + Attrs([Attr("address","0x9E0"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_290, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x780"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_359, "%00000937"), 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_360, "%00000938"), + Attrs([Attr("warn-unused","()"), Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_001, "@malloc"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_860, "%00000744"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_868, "%0000074c"), Attrs([Attr("address","0x784"), +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_875, "%00000753"), Attrs([Attr("address","0x788"), +Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_880, "%00000758"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_291, "@memcpy"), + Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), +Attr("address","0x740"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_361, "%00000939"), 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_362, "%0000093a"), + 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_363, "%0000093b"), 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_364, "%0000093c"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_113, "@memcpy"), Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_760, "%000006e0"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x744"), +Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), +Def(Tid(1_775, "%000006ef"), Attrs([Attr("address","0x748"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_780, "%000006f4"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_292, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x790"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_365, "%0000093d"), 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_366, "%0000093e"), + 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_367, "%0000093f"), + 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_368, "%00000940"), 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_278, "@memset"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_885, "%0000075d"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_893, "%00000765"), Attrs([Attr("address","0x794"), +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_900, "%0000076c"), Attrs([Attr("address","0x798"), +Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_905, "%00000771"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_293, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x7C0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_369, "%00000941"), 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_370, "%00000942"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_143, "@puts"), Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_960, "%000007a8"), Attrs([Attr("address","0x7C0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_968, "%000007b0"), Attrs([Attr("address","0x7C4"), +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_975, "%000007b7"), Attrs([Attr("address","0x7C8"), +Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_980, "%000007bc"), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_294, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_371, "%00000943"), + 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(759, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(763, "%000002fb"), Attrs([Attr("address","0x880"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(770, "%00000302"), Attrs([Attr("address","0x884"), +Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(776, "%00000308"), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(783, "%0000030f"), + Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x78")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), +Def(Tid(791, "%00000317"), Attrs([Attr("address","0x890"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(798, "%0000031e"), + Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), + Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), +Def(Tid(806, "%00000326"), 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,64)))), +Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x89C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(825, "%00000339"), + Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), + Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), +Jmps([Goto(Tid(819, "%00000333"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), +Direct(Tid(817, "%00000331"))), Goto(Tid(2_339, "%00000923"), Attrs([]), + Int(1,1), Direct(Tid(1_419, "%0000058b")))])), Blk(Tid(1_419, "%0000058b"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_423, "%0000058f"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_431, "%00000597"), 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)), +Def(Tid(1_442, "%000005a2"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), Var("#81",Imm(1)), +EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_436, "%0000059c"), + Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), + Var("#81",Imm(1)), Direct(Tid(817, "%00000331"))), +Goto(Tid(2_340, "%00000924"), Attrs([]), Int(1,1), +Direct(Tid(1_445, "%000005a5")))])), Blk(Tid(817, "%00000331"), + Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), +Jmps([Call(Tid(830, "%0000033e"), Attrs([Attr("address","0x8B8"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_445, "%000005a5"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x8B0"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_456, "%000005b0"), Attrs([Attr("address","0x8B4"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_297, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x750"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_372, "%00000944"), 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_373, "%00000945"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_075, "@strlen"), + Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_785, "%000006f9"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_793, "%00000701"), Attrs([Attr("address","0x754"), +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_800, "%00000708"), Attrs([Attr("address","0x758"), +Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_805, "%0000070d"), + Attrs([Attr("address","0x75C"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..5686fd428 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,371 @@ +00000925: program +000008de: sub __cxa_finalize(__cxa_finalize_result) +00000926: __cxa_finalize_result :: out u32 = low:32[R0] + +00000587: +0000072b: R16 := 0x20000 +00000733: R17 := mem[R16 + 0x18, el]:u64 +0000073a: R16 := R16 + 0x18 +0000073f: call R17 with noreturn + +000008df: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000927: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000342: +00000349: #34 := R31 - 0x20 +0000034e: mem := mem with [#34, el]:u64 <- R29 +00000353: mem := mem with [#34 + 8, el]:u64 <- R30 +00000357: R31 := #34 +0000035e: R29 := R31 +00000366: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000036c: R19 := 0x20000 +00000375: R0 := pad:32[mem[R19 + 0x78]] +00000381: #36 := ~~0:0[R0] +0000037b: when #36 goto %00000379 +0000091b: goto %00000545 + +00000545: +00000549: R0 := 0x1F000 +00000551: R0 := mem[R0 + 0xFB8, el]:u64 +0000055d: #78 := R0 = 0 +00000557: when #78 goto %00000555 +0000091c: goto %00000575 + +00000575: +00000579: R0 := 0x20000 +00000581: R0 := mem[R0 + 0x58, el]:u64 +00000586: R30 := 0x8F0 +00000589: call @__cxa_finalize with return %00000555 + +00000555: +00000562: R30 := 0x8F4 +00000564: call @deregister_tm_clones with return %00000566 + +00000566: +0000056b: R0 := 1 +00000573: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] +0000091d: goto %00000379 + +00000379: +00000389: R19 := mem[R31 + 0x10, el]:u64 +00000393: R29 := mem[R31, el]:u64 +00000397: R30 := mem[R31 + 8, el]:u64 +0000039a: R31 := R31 + 0x20 +0000039f: call R30 with noreturn + +000008e3: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000928: __libc_start_main_main :: in u64 = R0 +00000929: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000092a: __libc_start_main_arg3 :: in out u64 = R2 +0000092b: __libc_start_main_auxv :: in out u64 = R3 +0000092c: __libc_start_main_result :: out u32 = low:32[R0] + +00000286: +00000712: R16 := 0x20000 +0000071a: R17 := mem[R16 + 0x10, el]:u64 +00000721: R16 := R16 + 0x10 +00000726: call R17 with noreturn + +000008e4: sub _fini(_fini_result) +0000092d: _fini_result :: out u32 = low:32[R0] + +00000020: +00000029: #3 := R31 - 0x10 +0000002e: mem := mem with [#3, el]:u64 <- R29 +00000033: mem := mem with [#3 + 8, el]:u64 <- R30 +00000037: R31 := #3 +0000003e: R29 := R31 +00000048: R29 := mem[R31, el]:u64 +0000004c: R30 := mem[R31 + 8, el]:u64 +0000004f: R31 := R31 + 0x10 +00000054: call R30 with noreturn + +000008e5: sub _init(_init_result) +0000092e: _init_result :: out u32 = low:32[R0] + +000007f1: +000007fa: #109 := R31 - 0x10 +000007ff: mem := mem with [#109, el]:u64 <- R29 +00000804: mem := mem with [#109 + 8, el]:u64 <- R30 +00000808: R31 := #109 +0000080f: R29 := R31 +00000814: R30 := 0x718 +00000816: call @call_weak_fn with return %00000818 + +00000818: +00000820: R29 := mem[R31, el]:u64 +00000824: R30 := mem[R31 + 8, el]:u64 +00000827: R31 := R31 + 0x10 +0000082c: call R30 with noreturn + +000008e6: sub _start(_start_result) +0000092f: _start_result :: out u32 = low:32[R0] + +0000023c: +00000242: R29 := 0 +00000248: R30 := 0 +00000250: R5 := R0 +00000258: R1 := mem[R31, el]:u64 +0000025f: R2 := R31 + 8 +00000266: R6 := R31 +0000026c: R0 := 0x1F000 +00000274: R0 := mem[R0 + 0xFD8, el]:u64 +0000027a: R3 := 0 +00000280: R4 := 0 +00000285: R30 := 0x830 +00000288: call @__libc_start_main with return %0000028a + +0000028a: +0000028d: R30 := 0x834 +00000290: call @abort with return %0000091e + +0000091e: +0000091f: call @call_weak_fn with noreturn + +000008e9: sub abort() + + +0000028e: +0000078f: R16 := 0x20000 +00000797: R17 := mem[R16 + 0x38, el]:u64 +0000079e: R16 := R16 + 0x38 +000007a3: call R17 with noreturn + +000008ea: sub call_weak_fn(call_weak_fn_result) +00000930: call_weak_fn_result :: out u32 = low:32[R0] + +00000292: +00000296: R0 := 0x1F000 +0000029e: R0 := mem[R0 + 0xFC0, el]:u64 +000002aa: #12 := R0 = 0 +000002a4: when #12 goto %000002a2 +00000920: goto %000005d9 + +000002a2: +000002af: call R30 with noreturn + +000005d9: +000005dc: goto @__gmon_start__ + +000005da: +00000776: R16 := 0x20000 +0000077e: R17 := mem[R16 + 0x30, el]:u64 +00000785: R16 := R16 + 0x30 +0000078a: call R17 with noreturn + +000008ec: sub deregister_tm_clones(deregister_tm_clones_result) +00000931: deregister_tm_clones_result :: out u32 = low:32[R0] + +000002b5: +000002b9: R0 := 0x20000 +000002c0: R0 := R0 + 0x78 +000002c6: R1 := 0x20000 +000002cd: R1 := R1 + 0x78 +000002d5: #16 := 1 + ~R0 + R1 +000002d9: NF := 63:63[#16] +000002dc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & + ~63:63[~R0] & 63:63[#16] +000002df: ZF := #16 = 0 +000002e2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] + & ~63:63[#16] +000002f0: #21 := ZF +000002ea: when #21 goto %000002e8 +00000921: goto %000005b2 + +000005b2: +000005b6: R1 := 0x1F000 +000005be: R1 := mem[R1 + 0xFB0, el]:u64 +000005c9: #86 := R1 = 0 +000005c3: when #86 goto %000002e8 +00000922: goto %000005cc + +000002e8: +000002f5: call R30 with noreturn + +000005cc: +000005d2: R16 := R1 +000005d7: call R16 with noreturn + +000008ef: sub frame_dummy(frame_dummy_result) +00000932: frame_dummy_result :: out u32 = low:32[R0] + +000003a5: +000003a7: call @register_tm_clones with noreturn + +000008f0: sub free(free_ptr) +00000933: free_ptr :: in out u64 = R0 + +0000051c: +000007c1: R16 := 0x20000 +000007c9: R17 := mem[R16 + 0x48, el]:u64 +000007d0: R16 := R16 + 0x48 +000007d5: call R17 with noreturn + +000008f1: sub main(main_argc, main_argv, main_result) +00000934: main_argc :: in u32 = low:32[R0] +00000935: main_argv :: in out u64 = R1 +00000936: main_result :: out u32 = low:32[R0] + +000003a9: +000003b0: #42 := R31 - 0x30 +000003b5: mem := mem with [#42, el]:u64 <- R29 +000003ba: mem := mem with [#42 + 8, el]:u64 <- R30 +000003be: R31 := #42 +000003c5: R29 := R31 +000003cd: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003d5: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003dd: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003e3: R0 := 0xB +000003e8: R30 := 0x930 +000003eb: call @malloc with return %000003ed + +000003ed: +000003f3: R1 := R0 +000003f9: R0 := 0x1F000 +00000401: R0 := mem[R0 + 0xFC8, el]:u64 +00000409: mem := mem with [R0, el]:u64 <- R1 +0000040f: R0 := 0x1F000 +00000417: R0 := mem[R0 + 0xFC8, el]:u64 +0000041f: R19 := mem[R0, el]:u64 +00000425: R0 := 0x1F000 +0000042d: R0 := mem[R0 + 0xFD0, el]:u64 +00000432: R30 := 0x958 +00000435: call @strlen with return %00000437 + +00000437: +0000043d: R2 := R0 +00000443: R0 := 0x1F000 +0000044b: R1 := mem[R0 + 0xFD0, el]:u64 +00000453: R0 := R19 +00000458: R30 := 0x96C +0000045b: call @memcpy with return %0000045d + +0000045d: +00000461: R0 := 0x1F000 +00000469: R0 := mem[R0 + 0xFC8, el]:u64 +00000471: R0 := mem[R0, el]:u64 +00000476: R30 := 0x97C +00000479: call @puts with return %0000047b + +0000047b: +0000047f: R0 := 0x1F000 +00000487: R0 := mem[R0 + 0xFC8, el]:u64 +0000048f: R0 := mem[R0, el]:u64 +00000496: R0 := R0 + 4 +0000049e: mem := mem with [R31 + 0x28, el]:u64 <- R0 +000004a6: R0 := mem[R31 + 0x28, el]:u64 +000004ae: mem := mem with [R0] <- 0 +000004b4: R0 := 0x1F000 +000004bc: R0 := mem[R0 + 0xFC8, el]:u64 +000004c4: R19 := mem[R0, el]:u64 +000004ca: R0 := 0x1F000 +000004d2: R0 := mem[R0 + 0xFC8, el]:u64 +000004da: R0 := mem[R0, el]:u64 +000004df: R30 := 0x9B4 +000004e1: call @strlen with return %000004e3 + +000004e3: +000004e9: R2 := R0 +000004f0: R1 := 1 +000004f8: R0 := R19 +000004fd: R30 := 0x9C4 +00000500: call @memset with return %00000502 + +00000502: +00000506: R0 := 0x1F000 +0000050e: R0 := mem[R0 + 0xFC8, el]:u64 +00000516: R0 := mem[R0, el]:u64 +0000051b: R30 := 0x9D4 +0000051e: call @free with return %00000520 + +00000520: +00000525: R0 := 0 +0000052d: R19 := mem[R31 + 0x10, el]:u64 +00000537: R29 := mem[R31, el]:u64 +0000053b: R30 := mem[R31 + 8, el]:u64 +0000053e: R31 := R31 + 0x30 +00000543: call R30 with noreturn + +000008f2: sub malloc(malloc_size, malloc_result) +00000937: malloc_size :: in u64 = R0 +00000938: malloc_result :: out u64 = R0 + +000003e9: +00000744: R16 := 0x20000 +0000074c: R17 := mem[R16 + 0x20, el]:u64 +00000753: R16 := R16 + 0x20 +00000758: call R17 with noreturn + +000008f3: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000939: memcpy_dst :: in out u64 = R0 +0000093a: memcpy_src :: in out u64 = R1 +0000093b: memcpy_n :: in u64 = R2 +0000093c: memcpy_result :: out u64 = R0 + +00000459: +000006e0: R16 := 0x20000 +000006e8: R17 := mem[R16, el]:u64 +000006ef: R16 := R16 +000006f4: call R17 with noreturn + +000008f4: sub memset(memset_buf, memset_c, memset_n, memset_result) +0000093d: memset_buf :: in out u64 = R0 +0000093e: memset_c :: in u32 = low:32[R1] +0000093f: memset_n :: in u64 = R2 +00000940: memset_result :: out u64 = R0 + +000004fe: +0000075d: R16 := 0x20000 +00000765: R17 := mem[R16 + 0x28, el]:u64 +0000076c: R16 := R16 + 0x28 +00000771: call R17 with noreturn + +000008f5: sub puts(puts_s, puts_result) +00000941: puts_s :: in u64 = R0 +00000942: puts_result :: out u32 = low:32[R0] + +00000477: +000007a8: R16 := 0x20000 +000007b0: R17 := mem[R16 + 0x40, el]:u64 +000007b7: R16 := R16 + 0x40 +000007bc: call R17 with noreturn + +000008f6: sub register_tm_clones(register_tm_clones_result) +00000943: register_tm_clones_result :: out u32 = low:32[R0] + +000002f7: +000002fb: R0 := 0x20000 +00000302: R0 := R0 + 0x78 +00000308: R1 := 0x20000 +0000030f: R1 := R1 + 0x78 +00000317: R1 := R1 - R0 +0000031e: R2 := R1 >> 0x3F +00000326: R1 := R2 + (R1 ~>> 3) +0000032d: R1 := R1 >> 1 +00000339: #30 := R1 = 0 +00000333: when #30 goto %00000331 +00000923: goto %0000058b + +0000058b: +0000058f: R2 := 0x1F000 +00000597: R2 := mem[R2 + 0xFE0, el]:u64 +000005a2: #81 := R2 = 0 +0000059c: when #81 goto %00000331 +00000924: goto %000005a5 + +00000331: +0000033e: call R30 with noreturn + +000005a5: +000005ab: R16 := R2 +000005b0: call R16 with noreturn + +000008f9: sub strlen(strlen_s, strlen_result) +00000944: strlen_s :: in u64 = R0 +00000945: strlen_result :: out u64 = R0 + +00000433: +000006f9: R16 := 0x20000 +00000701: R17 := mem[R16 + 8, el]:u64 +00000708: R16 := R16 + 8 +0000070d: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.expected new file mode 100644 index 000000000..8c9210cc7 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,1087 @@ +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_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} 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 == 131200bv64); +const {:extern} $password_addr: bv64; +axiom ($password_addr == 131168bv64); +const {:extern} $stext_addr: bv64; +axiom ($stext_addr == 131176bv64); +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_be(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, 2552bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 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); + 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); + +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, 2552bv64) == 1bv8); + free requires (memory_load8_le(mem, 2553bv64) == 0bv8); + free requires (memory_load8_le(mem, 2554bv64) == 2bv8); + free requires (memory_load8_le(mem, 2555bv64) == 0bv8); + free requires (memory_load8_le(mem, 131016bv64) == 128bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 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 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 ensures (memory_load8_le(mem, 2552bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 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); + 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); + +procedure main() + modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, 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, 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) == 0bv8); + free requires (memory_load8_le(mem, 131170bv64) == 0bv8); + free requires (memory_load8_le(mem, 131171bv64) == 0bv8); + 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) == 117bv8); + free requires (memory_load8_le(mem, 131177bv64) == 115bv8); + free requires (memory_load8_le(mem, 131178bv64) == 101bv8); + free requires (memory_load8_le(mem, 131179bv64) == 114bv8); + free requires (memory_load8_le(mem, 131180bv64) == 58bv8); + free requires (memory_load8_le(mem, 131181bv64) == 112bv8); + free requires (memory_load8_le(mem, 131182bv64) == 97bv8); + free requires (memory_load8_le(mem, 131183bv64) == 115bv8); + free requires (memory_load8_le(mem, 131184bv64) == 115bv8); + free requires (memory_load8_le(mem, 131185bv64) == 0bv8); + free requires (memory_load8_le(mem, 131186bv64) == 0bv8); + free requires (memory_load8_le(mem, 2552bv64) == 1bv8); + free requires (memory_load8_le(mem, 2553bv64) == 0bv8); + free requires (memory_load8_le(mem, 2554bv64) == 2bv8); + free requires (memory_load8_le(mem, 2555bv64) == 0bv8); + free requires (memory_load8_le(mem, 131016bv64) == 128bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 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 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 ensures (Gamma_R19 == old(Gamma_R19)); + free ensures (Gamma_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R19 == old(R19)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2552bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 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); + 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); +{ + var #42: bv64; + var Gamma_#42: bool; + lmain: + assume {:captureState "lmain"} true; + #42, Gamma_#42 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); + assume {:captureState "%000003b5"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); + assume {:captureState "%000003ba"} true; + R31, Gamma_R31 := #42, Gamma_#42; + R29, Gamma_R29 := R31, Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); + assume {:captureState "%000003cd"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); + assume {:captureState "%000003d5"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); + assume {:captureState "%000003dd"} true; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2352bv64, true; + call malloc(); + goto l000003ed; + l000003ed: + assume {:captureState "l000003ed"} true; + R1, Gamma_R1 := R0, Gamma_R0; + R0, Gamma_R0 := 126976bv64, true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); + call rely(); + assert (L(mem, R0) ==> Gamma_R1); + mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); + assume {:captureState "%00000409"} true; + R0, Gamma_R0 := 126976bv64, true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 126976bv64, true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4048bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4048bv64)) || L(mem, bvadd64(R0, 4048bv64))); + R30, Gamma_R30 := 2392bv64, true; + call strlen(); + goto l00000437; + l00000437: + assume {:captureState "l00000437"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := 126976bv64, true; + call rely(); + R1, Gamma_R1 := memory_load64_le(mem, bvadd64(R0, 4048bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4048bv64)) || L(mem, bvadd64(R0, 4048bv64))); + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2412bv64, true; + call memcpy(); + goto l0000045d; + l0000045d: + assume {:captureState "l0000045d"} true; + R0, Gamma_R0 := 126976bv64, true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2428bv64, true; + call puts(); + goto l0000047b; + l0000047b: + assume {:captureState "l0000047b"} true; + R0, Gamma_R0 := 126976bv64, true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := bvadd64(R0, 4bv64), Gamma_R0; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); + assume {:captureState "%0000049e"} true; + R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); + call rely(); + assert (L(mem, R0) ==> true); + mem, Gamma_mem := memory_store8_be(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); + assume {:captureState "%000004ae"} true; + R0, Gamma_R0 := 126976bv64, true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R0, Gamma_R0 := 126976bv64, true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2484bv64, true; + call strlen(); + goto l000004e3; + l000004e3: + assume {:captureState "l000004e3"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R1, Gamma_R1 := 1bv64, true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2500bv64, true; + call memset(); + goto l00000502; + l00000502: + assume {:captureState "l00000502"} true; + R0, Gamma_R0 := 126976bv64, true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); + R30, Gamma_R30 := 2516bv64, true; + call #free(); + goto l00000520; + l00000520: + assume {:captureState "l00000520"} true; + R0, Gamma_R0 := 0bv64, true; + R19, Gamma_R19 := 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, 2552bv64) == 1bv8); + free requires (memory_load8_le(mem, 2553bv64) == 0bv8); + free requires (memory_load8_le(mem, 2554bv64) == 2bv8); + free requires (memory_load8_le(mem, 2555bv64) == 0bv8); + free requires (memory_load8_le(mem, 131016bv64) == 128bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 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 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); + 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, 2552bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 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); + 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); + +procedure memcpy(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + free requires (memory_load8_le(mem, 2552bv64) == 1bv8); + free requires (memory_load8_le(mem, 2553bv64) == 0bv8); + free requires (memory_load8_le(mem, 2554bv64) == 2bv8); + free requires (memory_load8_le(mem, 2555bv64) == 0bv8); + free requires (memory_load8_le(mem, 131016bv64) == 128bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 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 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); + 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, 2552bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 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); + 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); + +procedure memset(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + requires Gamma_R1; + free requires (memory_load8_le(mem, 2552bv64) == 1bv8); + free requires (memory_load8_le(mem, 2553bv64) == 0bv8); + free requires (memory_load8_le(mem, 2554bv64) == 2bv8); + free requires (memory_load8_le(mem, 2555bv64) == 0bv8); + free requires (memory_load8_le(mem, 131016bv64) == 128bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 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 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); + 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, 2552bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 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); + 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); + +procedure puts(); + modifies Gamma_R16, Gamma_R17, R16, R17; + free requires (memory_load8_le(mem, 2552bv64) == 1bv8); + free requires (memory_load8_le(mem, 2553bv64) == 0bv8); + free requires (memory_load8_le(mem, 2554bv64) == 2bv8); + free requires (memory_load8_le(mem, 2555bv64) == 0bv8); + free requires (memory_load8_le(mem, 131016bv64) == 128bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 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 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 ensures (memory_load8_le(mem, 2552bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 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); + 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); + +procedure strlen(); + modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; + free requires (memory_load8_le(mem, 2552bv64) == 1bv8); + free requires (memory_load8_le(mem, 2553bv64) == 0bv8); + free requires (memory_load8_le(mem, 2554bv64) == 2bv8); + free requires (memory_load8_le(mem, 2555bv64) == 0bv8); + free requires (memory_load8_le(mem, 131016bv64) == 128bv8); + free requires (memory_load8_le(mem, 131017bv64) == 0bv8); + free requires (memory_load8_le(mem, 131018bv64) == 2bv8); + free requires (memory_load8_le(mem, 131019bv64) == 0bv8); + free requires (memory_load8_le(mem, 131020bv64) == 0bv8); + free requires (memory_load8_le(mem, 131021bv64) == 0bv8); + free requires (memory_load8_le(mem, 131022bv64) == 0bv8); + free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free requires (memory_load8_le(mem, 131025bv64) == 0bv8); + free requires (memory_load8_le(mem, 131026bv64) == 2bv8); + free requires (memory_load8_le(mem, 131027bv64) == 0bv8); + free requires (memory_load8_le(mem, 131028bv64) == 0bv8); + free requires (memory_load8_le(mem, 131029bv64) == 0bv8); + free requires (memory_load8_le(mem, 131030bv64) == 0bv8); + free requires (memory_load8_le(mem, 131031bv64) == 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 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); + 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, 2552bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); + free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); + free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131031bv64) == 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); + 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); diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..e075e265b --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,145 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdb8 0000000000000403 R_AARCH64_RELATIVE 910 +000000000001fdc0 0000000000000403 R_AARCH64_RELATIVE 8c0 +000000000001ffc8 0000000000000403 R_AARCH64_RELATIVE 20080 +000000000001ffd0 0000000000000403 R_AARCH64_RELATIVE 20068 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 914 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffb0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffb8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffc0 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 0x618 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: 0000000000000708 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: 0000000000000618 0 SECTION LOCAL DEFAULT 10 .rela.plt + 11: 0000000000000708 0 SECTION LOCAL DEFAULT 11 .init + 12: 0000000000000720 0 SECTION LOCAL DEFAULT 12 .plt + 13: 0000000000000800 0 SECTION LOCAL DEFAULT 13 .text + 14: 00000000000009e4 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009f8 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009fc 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 0000000000000a38 0 SECTION LOCAL DEFAULT 17 .eh_frame + 18: 000000000001fdb8 0 SECTION LOCAL DEFAULT 18 .init_array + 19: 000000000001fdc0 0 SECTION LOCAL DEFAULT 19 .fini_array + 20: 000000000001fdc8 0 SECTION LOCAL DEFAULT 20 .dynamic + 21: 000000000001ffa8 0 SECTION LOCAL DEFAULT 21 .got + 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt + 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss + 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d + 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag + 29: 0000000000000800 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 0000000000000a4c 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009f8 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 0000000000000834 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 0000000000000834 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 0000000000000708 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 00000000000009e4 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 0000000000000718 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009f0 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000850 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000850 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000880 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 00000000000008c0 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdc0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdc0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 0000000000000910 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdb8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdb8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 0000000000000a60 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d + 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d + 57: 0000000000000914 0 NOTYPE LOCAL DEFAULT 13 $x + 58: 0000000000000ac0 0 NOTYPE LOCAL DEFAULT 17 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000ae4 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000ae4 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 00000000000009fc 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 65: 000000000001ffa8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 66: 0000000000000720 0 NOTYPE LOCAL DEFAULT 12 $x + 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 00000000000009e4 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 85: 00000000000009f8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 89: 0000000000000800 52 FUNC GLOBAL DEFAULT 13 _start + 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf + 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext + 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 94: 0000000000000914 208 FUNC GLOBAL DEFAULT 13 main + 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 97: 0000000000000708 0 FUNC GLOBAL HIDDEN 11 _init From dae7c3a68593563ff2c1edb3345edf6393a283dd Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Tue, 16 Jan 2024 12:30:49 +1000 Subject: [PATCH 33/36] update lifted --- .../malloc_memcpy_strlen_memset_free.adt | 708 +++++++++-------- .../malloc_memcpy_strlen_memset_free.bir | 701 +++++++++-------- .../malloc_memcpy_strlen_memset_free.adt | 704 +++++++++-------- .../malloc_memcpy_strlen_memset_free.bir | 693 +++++++++-------- .../malloc_memcpy_strlen_memset_free.adt | 708 +++++++++-------- .../malloc_memcpy_strlen_memset_free.bir | 701 +++++++++-------- .../malloc_memcpy_strlen_memset_free.adt | 712 +++++++++-------- .../malloc_memcpy_strlen_memset_free.bir | 703 +++++++++-------- .../gcc/malloc_memcpy_strlen_memset_free.adt | 715 +++++++++-------- .../gcc/malloc_memcpy_strlen_memset_free.bir | 718 +++++++++-------- .../malloc_memcpy_strlen_memset_free.adt | 714 +++++++++-------- .../malloc_memcpy_strlen_memset_free.bir | 691 +++++++++-------- .../malloc_memcpy_strlen_memset_free.adt | 714 +++++++++-------- .../malloc_memcpy_strlen_memset_free.bir | 707 +++++++++-------- .../malloc_memcpy_strlen_memset_free.adt | 710 +++++++++-------- .../malloc_memcpy_strlen_memset_free.bir | 699 +++++++++-------- .../malloc_memcpy_strlen_memset_free.adt | 714 +++++++++-------- .../malloc_memcpy_strlen_memset_free.bir | 707 +++++++++-------- .../malloc_memcpy_strlen_memset_free.adt | 718 +++++++++-------- .../malloc_memcpy_strlen_memset_free.bir | 707 +++++++++-------- .../gcc/malloc_memcpy_strlen_memset_free.adt | 721 +++++++++-------- .../gcc/malloc_memcpy_strlen_memset_free.bir | 722 +++++++++-------- .../malloc_memcpy_strlen_memset_free.adt | 723 +++++++++--------- .../malloc_memcpy_strlen_memset_free.bir | 703 +++++++++-------- .../malloc_memcpy_strlen_memset_free.adt | 721 +++++++++-------- .../malloc_memcpy_strlen_memset_free.bir | 722 +++++++++-------- 26 files changed, 9086 insertions(+), 9370 deletions(-) diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt index 6be3f033b..80e54b967 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt @@ -69,707 +69,693 @@ Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), Annotation(Region(0x800,0x9BB), Attr("section","\".text\"")), Annotation(Region(0x800,0x9BB), Attr("code-region","()")), Annotation(Region(0x9BC,0x9CF), Attr("code-region","()"))]), -Program(Tid(2_333, "%0000091d"), Attrs([]), - Subs([Sub(Tid(2_262, "@__cxa_finalize"), +Program(Tid(2_191, "%0000088f"), Attrs([]), + Subs([Sub(Tid(2_120, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_334, "%0000091e"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_192, "%00000890"), 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_299, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_212, "@__cxa_finalize"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x790"), +Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x794"), +Def(Tid(1_607, "%00000647"), 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_734, "%000006c6"), Attrs([Attr("address","0x798"), +Def(Tid(1_613, "%0000064d"), 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_739, "%000006cb"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_618, "%00000652"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_263, "@__do_global_dtors_aux"), +Sub(Tid(2_121, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_335, "%0000091f"), + "__do_global_dtors_aux", Args([Arg(Tid(2_193, "%00000891"), 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(794, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(801, "%00000321"), +Blks([Blk(Tid(759, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(763, "%000002fb"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(806, "%00000326"), Attrs([Attr("address","0x8C0"), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x8C0"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(775, "%00000307"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x8C0"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(822, "%00000336"), +Var("#3",Imm(64))), Def(Tid(785, "%00000311"), Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(830, "%0000033e"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(793, "%00000319"), 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(836, "%00000344"), Attrs([Attr("address","0x8CC"), +Def(Tid(798, "%0000031e"), Attrs([Attr("address","0x8CC"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x8D0"), +Def(Tid(805, "%00000325"), Attrs([Attr("address","0x8D0"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(857, "%00000359"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(849, "%00000351"))), Goto(Tid(2_323, "%00000913"), Attrs([]), - Int(1,1), Direct(Tid(1_233, "%000004d1")))])), Blk(Tid(1_233, "%000004d1"), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(811, "%0000032b"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(809, "%00000329"))), +Goto(Tid(2_181, "%00000885"), Attrs([]), Int(1,1), +Direct(Tid(1_157, "%00000485")))])), Blk(Tid(1_157, "%00000485"), Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8D8"), +Defs([Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x8D8"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8DC"), +Def(Tid(1_167, "%0000048f"), 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)), -Def(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_251, "%000004e3"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), - Var("#67",Imm(1)), Direct(Tid(1_249, "%000004e1"))), -Goto(Tid(2_324, "%00000914"), Attrs([]), Int(1,1), -Direct(Tid(1_281, "%00000501")))])), Blk(Tid(1_281, "%00000501"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_173, "%00000495"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_171, "%00000493"))), Goto(Tid(2_182, "%00000886"), Attrs([]), + Int(1,1), Direct(Tid(1_196, "%000004ac")))])), Blk(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x8E4"), +Defs([Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_293, "%0000050d"), Attrs([Attr("address","0x8E8"), +Def(Tid(1_206, "%000004b6"), 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_298, "%00000512"), Attrs([Attr("address","0x8EC"), +Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_301, "%00000515"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(1_214, "%000004be"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_262, "@__cxa_finalize")),Direct(Tid(1_249, "%000004e1"))))])), -Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8F0"), +(Direct(Tid(2_120, "@__cxa_finalize")),Direct(Tid(1_171, "%00000493"))))])), +Blk(Tid(1_171, "%00000493"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x8F0"), +Jmps([Call(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_276, "@deregister_tm_clones")),Direct(Tid(1_266, "%000004f2"))))])), -Blk(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8F4"), +(Direct(Tid(2_134, "@deregister_tm_clones")),Direct(Tid(1_183, "%0000049f"))))])), +Blk(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8F4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x8F8"), +Def(Tid(1_194, "%000004aa"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_325, "%00000915"), Attrs([]), Int(1,1), -Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(865, "%00000361"), +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_183, "%00000887"), Attrs([]), Int(1,1), +Direct(Tid(809, "%00000329")))])), Blk(Tid(809, "%00000329"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(819, "%00000333"), 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(875, "%0000036b"), Attrs([Attr("address","0x900"), +Def(Tid(826, "%0000033a"), 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(879, "%0000036f"), Attrs([Attr("address","0x900"), +Def(Tid(831, "%0000033f"), 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(882, "%00000372"), Attrs([Attr("address","0x900"), +Def(Tid(835, "%00000343"), 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(887, "%00000377"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(840, "%00000348"), Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_267, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_125, "@__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_336, "%00000920"), + Args([Arg(Tid(2_194, "%00000892"), 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_337, "%00000921"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_195, "%00000893"), 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_338, "%00000922"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_196, "%00000894"), 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_339, "%00000923"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_197, "%00000895"), 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_340, "%00000924"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_198, "%00000896"), 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(606, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(592, "@__libc_start_main"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_694, "%0000069e"), Attrs([Attr("address","0x780"), +Defs([Def(Tid(1_578, "%0000062a"), 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"), +Def(Tid(1_585, "%00000631"), 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_709, "%000006ad"), Attrs([Attr("address","0x788"), +Def(Tid(1_591, "%00000637"), 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_714, "%000006b2"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_596, "%0000063c"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_268, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_126, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9BC")]), - "_fini", Args([Arg(Tid(2_341, "%00000925"), + "_fini", Args([Arg(Tid(2_199, "%00000897"), 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","0x9BC")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9BC")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x9C0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9C0"), +Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x9C0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9C0"), +Store(Var("mem",Mem(64,8)),Var("#0",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(50, "%00000032"), Attrs([Attr("address","0x9C0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9C0"), +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","0x9C0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9C4"), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9C4"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9C8"), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9C8"), 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(76, "%0000004c"), Attrs([Attr("address","0x9C8"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9C8"), 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(79, "%0000004f"), Attrs([Attr("address","0x9C8"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x9C8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), Attrs([Attr("address","0x9CC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_269, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_127, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), - "_init", Args([Arg(Tid(2_342, "%00000926"), + "_init", Args([Arg(Tid(2_200, "%00000898"), 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(2_035, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_896, "@_init"), Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(2_044, "%000007fc"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#98",Imm(64)), +Defs([Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(2_049, "%00000801"), Attrs([Attr("address","0x72C"), +Def(Tid(1_908, "%00000774"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#98",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(2_054, "%00000806"), Attrs([Attr("address","0x72C"), +Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_914, "%0000077a"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#98",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(2_058, "%0000080a"), Attrs([Attr("address","0x72C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_918, "%0000077e"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#98",Imm(64))), Def(Tid(2_065, "%00000811"), +Var("#7",Imm(64))), Def(Tid(1_924, "%00000784"), Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_070, "%00000816"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_929, "%00000789"), Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), - Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(2_072, "%00000818"), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_931, "%0000078b"), Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), -(Direct(Tid(2_274, "@call_weak_fn")),Direct(Tid(2_074, "%0000081a"))))])), -Blk(Tid(2_074, "%0000081a"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(2_082, "%00000822"), Attrs([Attr("address","0x738"), +(Direct(Tid(2_132, "@call_weak_fn")),Direct(Tid(1_933, "%0000078d"))))])), +Blk(Tid(1_933, "%0000078d"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(1_938, "%00000792"), 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(2_086, "%00000826"), Attrs([Attr("address","0x738"), +Def(Tid(1_943, "%00000797"), 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(2_089, "%00000829"), Attrs([Attr("address","0x738"), +Def(Tid(1_947, "%0000079b"), 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(2_094, "%0000082e"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_952, "%000007a0"), Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_270, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_128, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), Attr("stub","()"), Attr("entry-point","()")]), "_start", - Args([Arg(Tid(2_343, "%00000927"), Attrs([Attr("c.layout","[signed : 32]"), + Args([Arg(Tid(2_201, "%00000899"), 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(532, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(538, "%0000021a"), Attrs([Attr("address","0x804"), +Blks([Blk(Tid(529, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(534, "%00000216"), Attrs([Attr("address","0x804"), Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), -Def(Tid(544, "%00000220"), Attrs([Attr("address","0x808"), +Def(Tid(539, "%0000021b"), Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(552, "%00000228"), Attrs([Attr("address","0x80C"), +Def(Tid(545, "%00000221"), Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), -Def(Tid(560, "%00000230"), Attrs([Attr("address","0x810"), +Def(Tid(552, "%00000228"), 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(567, "%00000237"), Attrs([Attr("address","0x814"), +Def(Tid(558, "%0000022e"), Attrs([Attr("address","0x814"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(574, "%0000023e"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(564, "%00000234"), Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(580, "%00000244"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(569, "%00000239"), Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(588, "%0000024c"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(576, "%00000240"), 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(594, "%00000252"), Attrs([Attr("address","0x824"), +Def(Tid(581, "%00000245"), Attrs([Attr("address","0x824"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(600, "%00000258"), Attrs([Attr("address","0x828"), +Def(Tid(586, "%0000024a"), Attrs([Attr("address","0x828"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(605, "%0000025d"), Attrs([Attr("address","0x82C"), +Def(Tid(591, "%0000024f"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(608, "%00000260"), Attrs([Attr("address","0x82C"), +Jmps([Call(Tid(594, "%00000252"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_267, "@__libc_start_main")),Direct(Tid(610, "%00000262"))))])), -Blk(Tid(610, "%00000262"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(613, "%00000265"), Attrs([Attr("address","0x830"), +(Direct(Tid(2_125, "@__libc_start_main")),Direct(Tid(596, "%00000254"))))])), +Blk(Tid(596, "%00000254"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(599, "%00000257"), Attrs([Attr("address","0x830"), Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x830"), +Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x830"), Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_273, "@abort")),Direct(Tid(2_326, "%00000916"))))])), -Blk(Tid(2_326, "%00000916"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_327, "%00000917"), Attrs([]), Int(1,1), -(Direct(Tid(2_274, "@call_weak_fn")),))]))])), Sub(Tid(2_273, "@abort"), +(Direct(Tid(2_131, "@abort")),Direct(Tid(2_184, "%00000888"))))])), +Blk(Tid(2_184, "%00000888"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_185, "%00000889"), Attrs([]), Int(1,1), +(Direct(Tid(2_132, "@call_weak_fn")),))]))])), Sub(Tid(2_131, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(614, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x7D0"), +Blks([Blk(Tid(600, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x7D4"), +Def(Tid(1_695, "%0000069f"), 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_834, "%0000072a"), Attrs([Attr("address","0x7D8"), +Def(Tid(1_701, "%000006a5"), 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_839, "%0000072f"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_706, "%000006aa"), Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_274, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_132, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), - "call_weak_fn", Args([Arg(Tid(2_344, "%00000928"), + "call_weak_fn", Args([Arg(Tid(2_202, "%0000089a"), 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(618, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(622, "%0000026e"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(604, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(630, "%00000276"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(614, "%00000266"), 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)), -Def(Tid(642, "%00000282"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(636, "%0000027c"), - Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(634, "%0000027a"))), -Goto(Tid(2_328, "%00000918"), Attrs([]), Int(1,1), -Direct(Tid(1_381, "%00000565")))])), Blk(Tid(634, "%0000027a"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(620, "%0000026c"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(618, "%0000026a"))), Goto(Tid(2_186, "%0000088a"), Attrs([]), + Int(1,1), Direct(Tid(1_276, "%000004fc")))])), Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(647, "%00000287"), Attrs([Attr("address","0x844"), +Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x844"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_381, "%00000565"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_384, "%00000568"), Attrs([Attr("address","0x840"), +Blk(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x840"), Attr("insn","b #-0x80")]), Int(1,1), -Direct(Tid(1_382, "@__gmon_start__")))])), Blk(Tid(1_382, "@__gmon_start__"), +Direct(Tid(1_277, "@__gmon_start__")))])), Blk(Tid(1_277, "@__gmon_start__"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x7C0"), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x7C4"), +Def(Tid(1_673, "%00000689"), 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_809, "%00000711"), Attrs([Attr("address","0x7C8"), +Def(Tid(1_679, "%0000068f"), 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_814, "%00000716"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_684, "%00000694"), Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_276, "@deregister_tm_clones"), +Sub(Tid(2_134, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_345, "%00000929"), + "deregister_tm_clones", Args([Arg(Tid(2_203, "%0000089b"), 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(653, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(657, "%00000291"), +Blks([Blk(Tid(632, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(635, "%0000027b"), Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(664, "%00000298"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(641, "%00000281"), Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x858"), +Def(Tid(646, "%00000286"), Attrs([Attr("address","0x858"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(677, "%000002a5"), Attrs([Attr("address","0x85C"), +Def(Tid(652, "%0000028c"), Attrs([Attr("address","0x85C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(685, "%000002ad"), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(658, "%00000292"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(689, "%000002b1"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(692, "%000002b4"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(663, "%00000297"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x860"), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(669, "%0000029d"), 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(675, "%000002a3"), 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(679, "%000002a7"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(698, "%000002ba"), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(683, "%000002ab"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(712, "%000002c8"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(706, "%000002c2"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(704, "%000002c0"))), Goto(Tid(2_329, "%00000919"), Attrs([]), - Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(1_342, "%0000053e"), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(689, "%000002b1"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(687, "%000002af"))), Goto(Tid(2_187, "%0000088b"), Attrs([]), + Int(1,1), Direct(Tid(1_246, "%000004de")))])), Blk(Tid(1_246, "%000004de"), Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_346, "%00000542"), Attrs([Attr("address","0x868"), +Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x868"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x86C"), +Def(Tid(1_256, "%000004e8"), 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)), -Def(Tid(1_365, "%00000555"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_359, "%0000054f"), - Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), - Var("#75",Imm(1)), Direct(Tid(704, "%000002c0"))), -Goto(Tid(2_330, "%0000091a"), Attrs([]), Int(1,1), -Direct(Tid(1_368, "%00000558")))])), Blk(Tid(704, "%000002c0"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(687, "%000002af"))), Goto(Tid(2_188, "%0000088c"), Attrs([]), + Int(1,1), Direct(Tid(1_265, "%000004f1")))])), Blk(Tid(687, "%000002af"), Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(717, "%000002cd"), Attrs([Attr("address","0x87C"), +Jmps([Call(Tid(695, "%000002b7"), Attrs([Attr("address","0x87C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_368, "%00000558"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_374, "%0000055e"), Attrs([Attr("address","0x874"), +Blk(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x874"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_379, "%00000563"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x878"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_279, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_346, "%0000092a"), +Sub(Tid(2_137, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_204, "%0000089c"), 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(893, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(846, "@frame_dummy"), Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(895, "%0000037f"), Attrs([Attr("address","0x910"), +Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_286, "@register_tm_clones")),))]))])), Sub(Tid(2_280, "@free"), +(Direct(Tid(2_144, "@register_tm_clones")),))]))])), Sub(Tid(2_138, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_347, "%0000092b"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_205, "%0000089d"), 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_195, "@free"), Attrs([Attr("address","0x7F0")]), - Phis([]), Defs([Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x7F0"), +Both())]), Blks([Blk(Tid(1_121, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x7F4"), +Def(Tid(1_739, "%000006cb"), 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_884, "%0000075c"), Attrs([Attr("address","0x7F8"), +Def(Tid(1_745, "%000006d1"), 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_889, "%00000761"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_750, "%000006d6"), Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_281, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_139, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_348, "%0000092c"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_206, "%0000089e"), 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_349, "%0000092d"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_207, "%0000089f"), 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_350, "%0000092e"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_208, "%000008a0"), 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(897, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(902, "%00000386"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(850, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(854, "%00000356"), Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), -Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x918"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(915, "%00000393"), + Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), +Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x918"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(866, "%00000362"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(920, "%00000398"), Attrs([Attr("address","0x918"), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(872, "%00000368"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x91C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(878, "%0000036e"), Attrs([Attr("address","0x91C"), Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(935, "%000003a7"), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(885, "%00000375"), Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(943, "%000003af"), Attrs([Attr("address","0x924"), +Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x924"), Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x928"), +Def(Tid(897, "%00000381"), Attrs([Attr("address","0x928"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x92C"), +Def(Tid(902, "%00000386"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(957, "%000003bd"), Attrs([Attr("address","0x92C"), +Jmps([Call(Tid(905, "%00000389"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_282, "@malloc")),Direct(Tid(959, "%000003bf"))))])), -Blk(Tid(959, "%000003bf"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x930"), +(Direct(Tid(2_140, "@malloc")),Direct(Tid(907, "%0000038b"))))])), +Blk(Tid(907, "%0000038b"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x930"), Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x934"), +Def(Tid(918, "%00000396"), Attrs([Attr("address","0x934"), Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x938"), +Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x938"), Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x93C"), +Def(Tid(933, "%000003a5"), Attrs([Attr("address","0x93C"), Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x940"), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x940"), Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x944"), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x944"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x948"), +Def(Tid(952, "%000003b8"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(1_016, "%000003f8"), +PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x950"), +Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x950"), Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), -Jmps([Call(Tid(1_024, "%00000400"), Attrs([Attr("address","0x950"), +Jmps([Call(Tid(968, "%000003c8"), Attrs([Attr("address","0x950"), Attr("insn","bl #-0x1e0")]), Int(1,1), -(Direct(Tid(2_289, "@strlen")),Direct(Tid(1_026, "%00000402"))))])), -Blk(Tid(1_026, "%00000402"), Attrs([Attr("address","0x954")]), Phis([]), -Defs([Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x954"), +(Direct(Tid(2_147, "@strlen")),Direct(Tid(970, "%000003ca"))))])), +Blk(Tid(970, "%000003ca"), Attrs([Attr("address","0x954")]), Phis([]), +Defs([Def(Tid(975, "%000003cf"), Attrs([Attr("address","0x954"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x958"), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x958"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x95C"), +Def(Tid(988, "%000003dc"), Attrs([Attr("address","0x95C"), Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x960"), +Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x960"), Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), -Jmps([Call(Tid(1_056, "%00000420"), Attrs([Attr("address","0x960"), +Jmps([Call(Tid(996, "%000003e4"), Attrs([Attr("address","0x960"), Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_283, "@memcpy")),Direct(Tid(1_058, "%00000422"))))])), -Blk(Tid(1_058, "%00000422"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_064, "%00000428"), Attrs([Attr("address","0x964"), +(Direct(Tid(2_141, "@memcpy")),Direct(Tid(998, "%000003e6"))))])), +Blk(Tid(998, "%000003e6"), Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x968"), +Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x968"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x96C"), +Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), -Jmps([Call(Tid(1_080, "%00000438"), Attrs([Attr("address","0x96C"), +Jmps([Call(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_285, "@puts")),Direct(Tid(1_082, "%0000043a"))))])), -Blk(Tid(1_082, "%0000043a"), Attrs([Attr("address","0x970")]), Phis([]), -Defs([Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x970"), +(Direct(Tid(2_143, "@puts")),Direct(Tid(1_020, "%000003fc"))))])), +Blk(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x970"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x974"), +Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x974"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x978"), +Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x978"), Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_111, "%00000457"), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x980"), +Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x980"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x984"), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x984"), Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x988"), +Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x988"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_140, "%00000474"), Attrs([Attr("address","0x98C"), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x98C"), Attr("insn","bl #-0x21c")]), Var("R30",Imm(64)), Int(2448,64))]), -Jmps([Call(Tid(1_142, "%00000476"), Attrs([Attr("address","0x98C"), +Jmps([Call(Tid(1_075, "%00000433"), Attrs([Attr("address","0x98C"), Attr("insn","bl #-0x21c")]), Int(1,1), -(Direct(Tid(2_289, "@strlen")),Direct(Tid(1_144, "%00000478"))))])), -Blk(Tid(1_144, "%00000478"), Attrs([Attr("address","0x990")]), Phis([]), -Defs([Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x990"), +(Direct(Tid(2_147, "@strlen")),Direct(Tid(1_077, "%00000435"))))])), +Blk(Tid(1_077, "%00000435"), Attrs([Attr("address","0x990")]), Phis([]), +Defs([Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x990"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_158, "%00000486"), Attrs([Attr("address","0x994"), +Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x994"), Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x998"), +Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x998"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x99C"), +Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x99C"), Attr("insn","bl #-0x1ec")]), Var("R30",Imm(64)), Int(2464,64))]), -Jmps([Call(Tid(1_173, "%00000495"), Attrs([Attr("address","0x99C"), +Jmps([Call(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x99C"), Attr("insn","bl #-0x1ec")]), Int(1,1), -(Direct(Tid(2_284, "@memset")),Direct(Tid(1_175, "%00000497"))))])), -Blk(Tid(1_175, "%00000497"), Attrs([Attr("address","0x9A0")]), Phis([]), -Defs([Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x9A0"), +(Direct(Tid(2_142, "@memset")),Direct(Tid(1_103, "%0000044f"))))])), +Blk(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x9A0")]), Phis([]), +Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x9A0"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x9A4"), +Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x9A4"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x9A8"), +Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x9A8"), Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2476,64))]), -Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x9A8"), +Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x9A8"), Attr("insn","bl #-0x1b8")]), Int(1,1), -(Direct(Tid(2_280, "@free")),Direct(Tid(1_199, "%000004af"))))])), -Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x9AC")]), Phis([]), -Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x9AC"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x9B0"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), -Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x9B0"), +(Direct(Tid(2_138, "@free")),Direct(Tid(1_125, "%00000465"))))])), +Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x9AC")]), Phis([]), +Defs([Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x9AC"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x9B0"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_139, "%00000473"), + Attrs([Attr("address","0x9B0"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), + Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), +Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x9B0"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), -Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x9B4"), +Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x9B4"), Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_231, "%000004cf"), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_155, "%00000483"), Attrs([Attr("address","0x9B8"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_282, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_140, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_351, "%0000092f"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_209, "%000008a1"), 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_352, "%00000930"), +Var("R0",Imm(64)), In()), Arg(Tid(2_210, "%000008a2"), 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(955, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x7A0"), +Blks([Blk(Tid(903, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_629, "%0000065d"), 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_759, "%000006df"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_635, "%00000663"), 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_764, "%000006e4"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_640, "%00000668"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_283, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_141, "@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_353, "%00000931"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_211, "%000008a3"), 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_354, "%00000932"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_212, "%000008a4"), 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_355, "%00000933"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_213, "%000008a5"), 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_356, "%00000934"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_214, "%000008a6"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_054, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(994, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_534, "%000005fe"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_652, "%00000674"), Attrs([Attr("address","0x764"), +Def(Tid(1_541, "%00000605"), 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_659, "%0000067b"), Attrs([Attr("address","0x768"), +Def(Tid(1_547, "%0000060b"), Attrs([Attr("address","0x768"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_664, "%00000680"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_552, "%00000610"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_284, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_142, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x7B0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_357, "%00000935"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_215, "%000008a7"), 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_358, "%00000936"), +Both()), Arg(Tid(2_216, "%000008a8"), 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_359, "%00000937"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_217, "%000008a9"), 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_360, "%00000938"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_218, "%000008aa"), 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_171, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x7B0"), +Blks([Blk(Tid(1_099, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x7B4"), +Def(Tid(1_651, "%00000673"), 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_784, "%000006f8"), Attrs([Attr("address","0x7B8"), +Def(Tid(1_657, "%00000679"), 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_789, "%000006fd"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_662, "%0000067e"), Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_285, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_143, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x7E0"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_361, "%00000939"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_219, "%000008ab"), 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_362, "%0000093a"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_220, "%000008ac"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_078, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x7E0"), +Blks([Blk(Tid(1_016, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x7E4"), +Def(Tid(1_717, "%000006b5"), 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_859, "%00000743"), Attrs([Attr("address","0x7E8"), +Def(Tid(1_723, "%000006bb"), 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_864, "%00000748"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_728, "%000006c0"), Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_286, "@register_tm_clones"), +Sub(Tid(2_144, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_363, "%0000093b"), + "register_tm_clones", Args([Arg(Tid(2_221, "%000008ad"), 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(719, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x880"), +Blks([Blk(Tid(697, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x880"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(730, "%000002da"), Attrs([Attr("address","0x884"), +Def(Tid(706, "%000002c2"), Attrs([Attr("address","0x884"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(736, "%000002e0"), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(743, "%000002e7"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(717, "%000002cd"), Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x890"), +Def(Tid(724, "%000002d4"), Attrs([Attr("address","0x890"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(758, "%000002f6"), - Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(766, "%000002fe"), Attrs([Attr("address","0x898"), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(730, "%000002da"), 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(737, "%000002e1"), 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,64)))), -Def(Tid(773, "%00000305"), Attrs([Attr("address","0x89C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x89C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(785, "%00000311"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(779, "%0000030b"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(777, "%00000309"))), Goto(Tid(2_331, "%0000091b"), Attrs([]), - Int(1,1), Direct(Tid(1_303, "%00000517")))])), Blk(Tid(1_303, "%00000517"), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(749, "%000002ed"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(747, "%000002eb"))), Goto(Tid(2_189, "%0000088d"), Attrs([]), + Int(1,1), Direct(Tid(1_216, "%000004c0")))])), Blk(Tid(1_216, "%000004c0"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_315, "%00000523"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_226, "%000004ca"), 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)), -Def(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_320, "%00000528"), - Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), - Var("#70",Imm(1)), Direct(Tid(777, "%00000309"))), -Goto(Tid(2_332, "%0000091c"), Attrs([]), Int(1,1), -Direct(Tid(1_329, "%00000531")))])), Blk(Tid(777, "%00000309"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(747, "%000002eb"))), Goto(Tid(2_190, "%0000088e"), Attrs([]), + Int(1,1), Direct(Tid(1_235, "%000004d3")))])), Blk(Tid(747, "%000002eb"), Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(790, "%00000316"), Attrs([Attr("address","0x8B8"), +Jmps([Call(Tid(755, "%000002f3"), Attrs([Attr("address","0x8B8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_329, "%00000531"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x8B0"), +Blk(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8B0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8B4"), +Jmps([Call(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x8B4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_289, "@strlen"), +Sub(Tid(2_147, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_364, "%0000093c"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_222, "%000008ae"), 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_365, "%0000093d"), +In()), Arg(Tid(2_223, "%000008af"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_022, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(966, "@strlen"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_669, "%00000685"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_677, "%0000068d"), Attrs([Attr("address","0x774"), +Def(Tid(1_563, "%0000061b"), 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_684, "%00000694"), Attrs([Attr("address","0x778"), +Def(Tid(1_569, "%00000621"), 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_689, "%00000699"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_574, "%00000626"), 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/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir index e1fe07e4d..546f63944 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir @@ -1,359 +1,352 @@ -0000091d: program -000008d6: sub __cxa_finalize(__cxa_finalize_result) -0000091e: __cxa_finalize_result :: out u32 = low:32[R0] - -00000513: -000006b7: R16 := 0x20000 -000006bf: R17 := mem[R16 + 0x18, el]:u64 -000006c6: R16 := R16 + 0x18 -000006cb: call R17 with noreturn - -000008d7: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000091f: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -0000031a: -00000321: #34 := R31 - 0x20 -00000326: mem := mem with [#34, el]:u64 <- R29 -0000032b: mem := mem with [#34 + 8, el]:u64 <- R30 -0000032f: R31 := #34 -00000336: R29 := R31 -0000033e: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000344: R19 := 0x20000 -0000034d: R0 := pad:32[mem[R19 + 0x70]] -00000359: #36 := ~~0:0[R0] -00000353: when #36 goto %00000351 -00000913: goto %000004d1 - -000004d1: -000004d5: R0 := 0x1F000 -000004dd: R0 := mem[R0 + 0xFC8, el]:u64 -000004e9: #67 := R0 = 0 -000004e3: when #67 goto %000004e1 -00000914: goto %00000501 - -00000501: -00000505: R0 := 0x20000 -0000050d: R0 := mem[R0 + 0x58, el]:u64 -00000512: R30 := 0x8F0 -00000515: call @__cxa_finalize with return %000004e1 - -000004e1: -000004ee: R30 := 0x8F4 -000004f0: call @deregister_tm_clones with return %000004f2 - -000004f2: -000004f7: R0 := 1 -000004ff: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -00000915: goto %00000351 - -00000351: -00000361: R19 := mem[R31 + 0x10, el]:u64 -0000036b: R29 := mem[R31, el]:u64 -0000036f: R30 := mem[R31 + 8, el]:u64 -00000372: R31 := R31 + 0x20 -00000377: call R30 with noreturn - -000008db: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000920: __libc_start_main_main :: in u64 = R0 -00000921: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000922: __libc_start_main_arg3 :: in out u64 = R2 -00000923: __libc_start_main_auxv :: in out u64 = R3 -00000924: __libc_start_main_result :: out u32 = low:32[R0] - -0000025e: -0000069e: R16 := 0x20000 -000006a6: R17 := mem[R16 + 0x10, el]:u64 -000006ad: R16 := R16 + 0x10 -000006b2: call R17 with noreturn - -000008dc: sub _fini(_fini_result) -00000925: _fini_result :: out u32 = low:32[R0] +0000088f: program +00000848: sub __cxa_finalize(__cxa_finalize_result) +00000890: __cxa_finalize_result :: out u32 = low:32[R0] + +000004bc: +00000640: R16 := 0x20000 +00000647: R17 := mem[R16 + 0x18, el]:u64 +0000064d: R16 := R16 + 0x18 +00000652: call R17 with noreturn + +00000849: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000891: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002f7: +000002fb: #3 := R31 - 0x20 +00000301: mem := mem with [#3, el]:u64 <- R29 +00000307: mem := mem with [#3 + 8, el]:u64 <- R30 +0000030b: R31 := #3 +00000311: R29 := R31 +00000319: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000031e: R19 := 0x20000 +00000325: R0 := pad:64[mem[R19 + 0x70]] +0000032b: when 0:0[R0] goto %00000329 +00000885: goto %00000485 + +00000485: +00000488: R0 := 0x1F000 +0000048f: R0 := mem[R0 + 0xFC8, el]:u64 +00000495: when R0 = 0 goto %00000493 +00000886: goto %000004ac + +000004ac: +000004af: R0 := 0x20000 +000004b6: R0 := mem[R0 + 0x58, el]:u64 +000004bb: R30 := 0x8F0 +000004be: call @__cxa_finalize with return %00000493 + +00000493: +0000049b: R30 := 0x8F4 +0000049d: call @deregister_tm_clones with return %0000049f + +0000049f: +000004a2: R0 := 1 +000004aa: mem := mem with [R19 + 0x70] <- 7:0[R0] +00000887: goto %00000329 + +00000329: +00000333: R19 := mem[R31 + 0x10, el]:u64 +0000033a: R29 := mem[R31, el]:u64 +0000033f: R30 := mem[R31 + 8, el]:u64 +00000343: R31 := R31 + 0x20 +00000348: call R30 with noreturn + +0000084d: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000892: __libc_start_main_main :: in u64 = R0 +00000893: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000894: __libc_start_main_arg3 :: in out u64 = R2 +00000895: __libc_start_main_auxv :: in out u64 = R3 +00000896: __libc_start_main_result :: out u32 = low:32[R0] + +00000250: +0000062a: R16 := 0x20000 +00000631: R17 := mem[R16 + 0x10, el]:u64 +00000637: R16 := R16 + 0x10 +0000063c: call R17 with noreturn + +0000084e: sub _fini(_fini_result) +00000897: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -000008dd: sub _init(_init_result) -00000926: _init_result :: out u32 = low:32[R0] - -000007f3: -000007fc: #98 := R31 - 0x10 -00000801: mem := mem with [#98, el]:u64 <- R29 -00000806: mem := mem with [#98 + 8, el]:u64 <- R30 -0000080a: R31 := #98 -00000811: R29 := R31 -00000816: R30 := 0x738 -00000818: call @call_weak_fn with return %0000081a - -0000081a: -00000822: R29 := mem[R31, el]:u64 -00000826: R30 := mem[R31 + 8, el]:u64 -00000829: R31 := R31 + 0x10 -0000082e: call R30 with noreturn - -000008de: sub _start(_start_result) -00000927: _start_result :: out u32 = low:32[R0] - -00000214: -0000021a: R29 := 0 -00000220: R30 := 0 -00000228: R5 := R0 -00000230: R1 := mem[R31, el]:u64 -00000237: R2 := R31 + 8 -0000023e: R6 := R31 -00000244: R0 := 0x1F000 -0000024c: R0 := mem[R0 + 0xFD8, el]:u64 -00000252: R3 := 0 -00000258: R4 := 0 -0000025d: R30 := 0x830 -00000260: call @__libc_start_main with return %00000262 - -00000262: -00000265: R30 := 0x834 -00000268: call @abort with return %00000916 - -00000916: -00000917: call @call_weak_fn with noreturn - -000008e1: sub abort() - - -00000266: -0000071b: R16 := 0x20000 -00000723: R17 := mem[R16 + 0x38, el]:u64 -0000072a: R16 := R16 + 0x38 -0000072f: call R17 with noreturn - -000008e2: sub call_weak_fn(call_weak_fn_result) -00000928: call_weak_fn_result :: out u32 = low:32[R0] +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 + +0000084f: sub _init(_init_result) +00000898: _init_result :: out u32 = low:32[R0] + +00000768: +0000076e: #7 := R31 - 0x10 +00000774: mem := mem with [#7, el]:u64 <- R29 +0000077a: mem := mem with [#7 + 8, el]:u64 <- R30 +0000077e: R31 := #7 +00000784: R29 := R31 +00000789: R30 := 0x738 +0000078b: call @call_weak_fn with return %0000078d + +0000078d: +00000792: R29 := mem[R31, el]:u64 +00000797: R30 := mem[R31 + 8, el]:u64 +0000079b: R31 := R31 + 0x10 +000007a0: call R30 with noreturn + +00000850: sub _start(_start_result) +00000899: _start_result :: out u32 = low:32[R0] + +00000211: +00000216: R29 := 0 +0000021b: R30 := 0 +00000221: R5 := R0 +00000228: R1 := mem[R31, el]:u64 +0000022e: R2 := R31 + 8 +00000234: R6 := R31 +00000239: R0 := 0x1F000 +00000240: R0 := mem[R0 + 0xFD8, el]:u64 +00000245: R3 := 0 +0000024a: R4 := 0 +0000024f: R30 := 0x830 +00000252: call @__libc_start_main with return %00000254 + +00000254: +00000257: R30 := 0x834 +0000025a: call @abort with return %00000888 + +00000888: +00000889: call @call_weak_fn with noreturn + +00000853: sub abort() + + +00000258: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x38, el]:u64 +000006a5: R16 := R16 + 0x38 +000006aa: call R17 with noreturn + +00000854: sub call_weak_fn(call_weak_fn_result) +0000089a: call_weak_fn_result :: out u32 = low:32[R0] + +0000025c: +0000025f: R0 := 0x1F000 +00000266: R0 := mem[R0 + 0xFD0, el]:u64 +0000026c: when R0 = 0 goto %0000026a +0000088a: goto %000004fc 0000026a: -0000026e: R0 := 0x1F000 -00000276: R0 := mem[R0 + 0xFD0, el]:u64 -00000282: #12 := R0 = 0 -0000027c: when #12 goto %0000027a -00000918: goto %00000565 - -0000027a: -00000287: call R30 with noreturn - -00000565: -00000568: goto @__gmon_start__ - -00000566: -00000702: R16 := 0x20000 -0000070a: R17 := mem[R16 + 0x30, el]:u64 -00000711: R16 := R16 + 0x30 -00000716: call R17 with noreturn - -000008e4: sub deregister_tm_clones(deregister_tm_clones_result) -00000929: deregister_tm_clones_result :: out u32 = low:32[R0] - -0000028d: -00000291: R0 := 0x20000 -00000298: R0 := R0 + 0x70 -0000029e: R1 := 0x20000 -000002a5: R1 := R1 + 0x70 -000002ad: #16 := 1 + ~R0 + R1 -000002b1: NF := 63:63[#16] -000002b4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002b7: ZF := #16 = 0 -000002ba: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002c8: #21 := ZF -000002c2: when #21 goto %000002c0 -00000919: goto %0000053e - -0000053e: -00000542: R1 := 0x1F000 -0000054a: R1 := mem[R1 + 0xFC0, el]:u64 -00000555: #75 := R1 = 0 -0000054f: when #75 goto %000002c0 -0000091a: goto %00000558 - -000002c0: -000002cd: call R30 with noreturn - -00000558: -0000055e: R16 := R1 -00000563: call R16 with noreturn - -000008e7: sub frame_dummy(frame_dummy_result) -0000092a: frame_dummy_result :: out u32 = low:32[R0] - -0000037d: -0000037f: call @register_tm_clones with noreturn - -000008e8: sub free(free_ptr) -0000092b: free_ptr :: in out u64 = R0 - -000004ab: -0000074d: R16 := 0x20000 -00000755: R17 := mem[R16 + 0x48, el]:u64 -0000075c: R16 := R16 + 0x48 -00000761: call R17 with noreturn - -000008e9: sub main(main_argc, main_argv, main_result) -0000092c: main_argc :: in u32 = low:32[R0] -0000092d: main_argv :: in out u64 = R1 -0000092e: main_result :: out u32 = low:32[R0] - -00000381: -00000386: R31 := R31 - 0x40 -0000038e: #42 := R31 + 0x30 -00000393: mem := mem with [#42, el]:u64 <- R29 -00000398: mem := mem with [#42 + 8, el]:u64 <- R30 -0000039f: R29 := R31 + 0x30 -000003a7: mem := mem with [R29 - 8, el]:u64 <- 0 -000003af: mem := mem with [R29 - 0x10, el]:u64 <- 0 -000003b5: R0 := 0xB -000003ba: R30 := 0x930 -000003bd: call @malloc with return %000003bf - -000003bf: -000003c3: R8 := 0x20000 -000003cb: mem := mem with [R31 + 0x18, el]:u64 <- R8 -000003d3: mem := mem with [R8 + 0x78, el]:u64 <- R0 -000003db: R8 := mem[R8 + 0x78, el]:u64 -000003e3: mem := mem with [R31 + 8, el]:u64 <- R8 -000003e9: R0 := 0x20000 -000003f0: R0 := R0 + 0x61 -000003f8: mem := mem with [R31, el]:u64 <- R0 -000003fd: R30 := 0x954 -00000400: call @strlen with return %00000402 - -00000402: -00000408: R1 := mem[R31, el]:u64 -00000410: R2 := R0 -00000418: R0 := mem[R31 + 8, el]:u64 -0000041d: R30 := 0x964 -00000420: call @memcpy with return %00000422 - -00000422: -00000428: R8 := mem[R31 + 0x18, el]:u64 -00000430: R0 := mem[R8 + 0x78, el]:u64 -00000435: R30 := 0x970 -00000438: call @puts with return %0000043a - -0000043a: -00000440: R8 := mem[R31 + 0x18, el]:u64 -00000448: R9 := mem[R8 + 0x78, el]:u64 -0000044f: R9 := R9 + 4 -00000457: mem := mem with [R29 - 8, el]:u64 <- R9 -0000045f: R9 := mem[R8 + 0x78, el]:u64 -00000467: mem := mem with [R31 + 0x10, el]:u64 <- R9 -0000046f: R0 := mem[R8 + 0x78, el]:u64 -00000474: R30 := 0x990 -00000476: call @strlen with return %00000478 - -00000478: -0000047e: R2 := R0 -00000486: R0 := mem[R31 + 0x10, el]:u64 -0000048d: R1 := 1 -00000492: R30 := 0x9A0 -00000495: call @memset with return %00000497 - -00000497: -0000049d: R8 := mem[R31 + 0x18, el]:u64 -000004a5: R0 := mem[R8 + 0x78, el]:u64 -000004aa: R30 := 0x9AC -000004ad: call @free with return %000004af - -000004af: -000004b6: R0 := 0 -000004bf: R29 := mem[R31 + 0x30, el]:u64 -000004c3: R30 := mem[R31 + 0x38, el]:u64 -000004ca: R31 := R31 + 0x40 -000004cf: call R30 with noreturn - -000008ea: sub malloc(malloc_size, malloc_result) -0000092f: malloc_size :: in u64 = R0 -00000930: malloc_result :: out u64 = R0 - -000003bb: -000006d0: R16 := 0x20000 -000006d8: R17 := mem[R16 + 0x20, el]:u64 -000006df: R16 := R16 + 0x20 -000006e4: call R17 with noreturn - -000008eb: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000931: memcpy_dst :: in out u64 = R0 -00000932: memcpy_src :: in out u64 = R1 -00000933: memcpy_n :: in u64 = R2 -00000934: memcpy_result :: out u64 = R0 - -0000041e: +00000272: call R30 with noreturn + +000004fc: +000004ff: goto @__gmon_start__ + +000004fd: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x30, el]:u64 +0000068f: R16 := R16 + 0x30 +00000694: call R17 with noreturn + +00000856: sub deregister_tm_clones(deregister_tm_clones_result) +0000089b: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000278: +0000027b: R0 := 0x20000 +00000281: R0 := R0 + 0x70 +00000286: R1 := 0x20000 +0000028c: R1 := R1 + 0x70 +00000292: #1 := ~R0 +00000297: #2 := R1 + ~R0 +0000029d: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002a3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002a7: ZF := #2 + 1 = 0 +000002ab: NF := 63:63[#2 + 1] +000002b1: when ZF goto %000002af +0000088b: goto %000004de + +000004de: +000004e1: R1 := 0x1F000 +000004e8: R1 := mem[R1 + 0xFC0, el]:u64 +000004ed: when R1 = 0 goto %000002af +0000088c: goto %000004f1 + +000002af: +000002b7: call R30 with noreturn + +000004f1: +000004f5: R16 := R1 +000004fa: call R16 with noreturn + +00000859: sub frame_dummy(frame_dummy_result) +0000089c: frame_dummy_result :: out u32 = low:32[R0] + +0000034e: +00000350: call @register_tm_clones with noreturn + +0000085a: sub free(free_ptr) +0000089d: free_ptr :: in out u64 = R0 + +00000461: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x48, el]:u64 +000006d1: R16 := R16 + 0x48 +000006d6: call R17 with noreturn + +0000085b: sub main(main_argc, main_argv, main_result) +0000089e: main_argc :: in u32 = low:32[R0] +0000089f: main_argv :: in out u64 = R1 +000008a0: main_result :: out u32 = low:32[R0] + +00000352: +00000356: R31 := R31 - 0x40 +0000035c: #4 := R31 + 0x30 +00000362: mem := mem with [#4, el]:u64 <- R29 +00000368: mem := mem with [#4 + 8, el]:u64 <- R30 +0000036e: R29 := R31 + 0x30 +00000375: mem := mem with [R29 - 8, el]:u64 <- 0 +0000037c: mem := mem with [R29 - 0x10, el]:u64 <- 0 +00000381: R0 := 0xB +00000386: R30 := 0x930 +00000389: call @malloc with return %0000038b + +0000038b: +0000038e: R8 := 0x20000 +00000396: mem := mem with [R31 + 0x18, el]:u64 <- R8 +0000039e: mem := mem with [R8 + 0x78, el]:u64 <- R0 +000003a5: R8 := mem[R8 + 0x78, el]:u64 +000003ad: mem := mem with [R31 + 8, el]:u64 <- R8 +000003b2: R0 := 0x20000 +000003b8: R0 := R0 + 0x61 +000003c0: mem := mem with [R31, el]:u64 <- R0 +000003c5: R30 := 0x954 +000003c8: call @strlen with return %000003ca + +000003ca: +000003cf: R1 := mem[R31, el]:u64 +000003d5: R2 := R0 +000003dc: R0 := mem[R31 + 8, el]:u64 +000003e1: R30 := 0x964 +000003e4: call @memcpy with return %000003e6 + +000003e6: +000003eb: R8 := mem[R31 + 0x18, el]:u64 +000003f2: R0 := mem[R8 + 0x78, el]:u64 +000003f7: R30 := 0x970 +000003fa: call @puts with return %000003fc + +000003fc: +00000401: R8 := mem[R31 + 0x18, el]:u64 +00000408: R9 := mem[R8 + 0x78, el]:u64 +0000040e: R9 := R9 + 4 +00000416: mem := mem with [R29 - 8, el]:u64 <- R9 +0000041d: R9 := mem[R8 + 0x78, el]:u64 +00000425: mem := mem with [R31 + 0x10, el]:u64 <- R9 +0000042c: R0 := mem[R8 + 0x78, el]:u64 +00000431: R30 := 0x990 +00000433: call @strlen with return %00000435 + +00000435: +00000439: R2 := R0 +00000440: R0 := mem[R31 + 0x10, el]:u64 +00000445: R1 := 1 +0000044a: R30 := 0x9A0 +0000044d: call @memset with return %0000044f + +0000044f: +00000454: R8 := mem[R31 + 0x18, el]:u64 +0000045b: R0 := mem[R8 + 0x78, el]:u64 +00000460: R30 := 0x9AC +00000463: call @free with return %00000465 + +00000465: +00000468: R0 := 0 +0000046e: #5 := R31 + 0x30 +00000473: R29 := mem[#5, el]:u64 +00000478: R30 := mem[#5 + 8, el]:u64 +0000047e: R31 := R31 + 0x40 +00000483: call R30 with noreturn + +0000085c: sub malloc(malloc_size, malloc_result) +000008a1: malloc_size :: in u64 = R0 +000008a2: malloc_result :: out u64 = R0 + +00000387: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16 + 0x20, el]:u64 +00000663: R16 := R16 + 0x20 +00000668: call R17 with noreturn + +0000085d: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008a3: memcpy_dst :: in out u64 = R0 +000008a4: memcpy_src :: in out u64 = R1 +000008a5: memcpy_n :: in u64 = R2 +000008a6: memcpy_result :: out u64 = R0 + +000003e2: +000005fe: R16 := 0x20000 +00000605: R17 := mem[R16, el]:u64 +0000060b: R16 := R16 +00000610: call R17 with noreturn + +0000085e: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008a7: memset_buf :: in out u64 = R0 +000008a8: memset_c :: in u32 = low:32[R1] +000008a9: memset_n :: in u64 = R2 +000008aa: memset_result :: out u64 = R0 + +0000044b: 0000066c: R16 := 0x20000 -00000674: R17 := mem[R16, el]:u64 -0000067b: R16 := R16 -00000680: call R17 with noreturn - -000008ec: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000935: memset_buf :: in out u64 = R0 -00000936: memset_c :: in u32 = low:32[R1] -00000937: memset_n :: in u64 = R2 -00000938: memset_result :: out u64 = R0 - -00000493: -000006e9: R16 := 0x20000 -000006f1: R17 := mem[R16 + 0x28, el]:u64 -000006f8: R16 := R16 + 0x28 -000006fd: call R17 with noreturn - -000008ed: sub puts(puts_s, puts_result) -00000939: puts_s :: in u64 = R0 -0000093a: puts_result :: out u32 = low:32[R0] - -00000436: -00000734: R16 := 0x20000 -0000073c: R17 := mem[R16 + 0x40, el]:u64 -00000743: R16 := R16 + 0x40 -00000748: call R17 with noreturn - -000008ee: sub register_tm_clones(register_tm_clones_result) -0000093b: register_tm_clones_result :: out u32 = low:32[R0] - -000002cf: -000002d3: R0 := 0x20000 -000002da: R0 := R0 + 0x70 -000002e0: R1 := 0x20000 -000002e7: R1 := R1 + 0x70 -000002ef: R1 := R1 - R0 -000002f6: R2 := R1 >> 0x3F -000002fe: R1 := R2 + (R1 ~>> 3) -00000305: R1 := R1 >> 1 -00000311: #30 := R1 = 0 -0000030b: when #30 goto %00000309 -0000091b: goto %00000517 - -00000517: -0000051b: R2 := 0x1F000 -00000523: R2 := mem[R2 + 0xFE0, el]:u64 -0000052e: #70 := R2 = 0 -00000528: when #70 goto %00000309 -0000091c: goto %00000531 - -00000309: -00000316: call R30 with noreturn - -00000531: -00000537: R16 := R2 -0000053c: call R16 with noreturn - -000008f1: sub strlen(strlen_s, strlen_result) -0000093c: strlen_s :: in u64 = R0 -0000093d: strlen_result :: out u64 = R0 - -000003fe: -00000685: R16 := 0x20000 -0000068d: R17 := mem[R16 + 8, el]:u64 -00000694: R16 := R16 + 8 -00000699: call R17 with noreturn +00000673: R17 := mem[R16 + 0x28, el]:u64 +00000679: R16 := R16 + 0x28 +0000067e: call R17 with noreturn + +0000085f: sub puts(puts_s, puts_result) +000008ab: puts_s :: in u64 = R0 +000008ac: puts_result :: out u32 = low:32[R0] + +000003f8: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x40, el]:u64 +000006bb: R16 := R16 + 0x40 +000006c0: call R17 with noreturn + +00000860: sub register_tm_clones(register_tm_clones_result) +000008ad: register_tm_clones_result :: out u32 = low:32[R0] + +000002b9: +000002bc: R0 := 0x20000 +000002c2: R0 := R0 + 0x70 +000002c7: R1 := 0x20000 +000002cd: R1 := R1 + 0x70 +000002d4: R1 := R1 + ~R0 + 1 +000002da: R2 := 0.63:63[R1] +000002e1: R1 := R2 + (R1 ~>> 3) +000002e7: R1 := extend:64[63:1[R1]] +000002ed: when R1 = 0 goto %000002eb +0000088d: goto %000004c0 + +000004c0: +000004c3: R2 := 0x1F000 +000004ca: R2 := mem[R2 + 0xFE0, el]:u64 +000004cf: when R2 = 0 goto %000002eb +0000088e: goto %000004d3 + +000002eb: +000002f3: call R30 with noreturn + +000004d3: +000004d7: R16 := R2 +000004dc: call R16 with noreturn + +00000863: sub strlen(strlen_s, strlen_result) +000008ae: strlen_s :: in u64 = R0 +000008af: strlen_result :: out u64 = R0 + +000003c6: +00000614: R16 := 0x20000 +0000061b: R17 := mem[R16 + 8, el]:u64 +00000621: R16 := R16 + 8 +00000626: call R17 with noreturn 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 index 72b8cc4de..483b4d70d 100644 --- 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 @@ -69,688 +69,674 @@ 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_235, "%000008bb"), Attrs([]), - Subs([Sub(Tid(2_164, "@__cxa_finalize"), +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_236, "%000008bc"), +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_219, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_129, "@__cxa_finalize"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_639, "%00000667"), Attrs([Attr("address","0x790"), +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_647, "%0000066f"), Attrs([Attr("address","0x794"), +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_654, "%00000676"), Attrs([Attr("address","0x798"), +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_659, "%0000067b"), +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_165, "@__do_global_dtors_aux"), +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_237, "%000008bd"), + "__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(758, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(765, "%000002fd"), +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("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(770, "%00000302"), Attrs([Attr("address","0x8C0"), +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("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(775, "%00000307"), Attrs([Attr("address","0x8C0"), +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("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x8C0"), +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("#34",Imm(64))), Def(Tid(786, "%00000312"), +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(794, "%0000031a"), + 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(800, "%00000320"), Attrs([Attr("address","0x8CC"), +Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x8CC"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(809, "%00000329"), Attrs([Attr("address","0x8D0"), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x8D0"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(821, "%00000335"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(815, "%0000032f"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(813, "%0000032d"))), Goto(Tid(2_225, "%000008b1"), Attrs([]), - Int(1,1), Direct(Tid(1_153, "%00000481")))])), Blk(Tid(1_153, "%00000481"), +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_157, "%00000485"), Attrs([Attr("address","0x8D8"), +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_165, "%0000048d"), Attrs([Attr("address","0x8DC"), +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)), -Def(Tid(1_177, "%00000499"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), Var("#85",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_171, "%00000493"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), - Var("#85",Imm(1)), Direct(Tid(1_169, "%00000491"))), -Goto(Tid(2_226, "%000008b2"), Attrs([]), Int(1,1), -Direct(Tid(1_201, "%000004b1")))])), Blk(Tid(1_201, "%000004b1"), +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_205, "%000004b5"), Attrs([Attr("address","0x8E4"), +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_213, "%000004bd"), Attrs([Attr("address","0x8E8"), +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_218, "%000004c2"), Attrs([Attr("address","0x8EC"), +Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(1_131, "%0000046b"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_164, "@__cxa_finalize")),Direct(Tid(1_169, "%00000491"))))])), -Blk(Tid(1_169, "%00000491"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x8F0"), +(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_184, "%000004a0"), Attrs([Attr("address","0x8F0"), +Jmps([Call(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_178, "@deregister_tm_clones")),Direct(Tid(1_186, "%000004a2"))))])), -Blk(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x8F4"), +(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_199, "%000004af"), Attrs([Attr("address","0x8F8"), +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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_227, "%000008b3"), Attrs([]), Int(1,1), -Direct(Tid(813, "%0000032d")))])), Blk(Tid(813, "%0000032d"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(829, "%0000033d"), +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(839, "%00000347"), Attrs([Attr("address","0x900"), +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(843, "%0000034b"), Attrs([Attr("address","0x900"), +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(846, "%0000034e"), Attrs([Attr("address","0x900"), +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(851, "%00000353"), +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_169, "@__libc_start_main"), +(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_238, "%000008be"), + 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_239, "%000008bf"), Attrs([Attr("c.layout","[signed : 32]"), +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_240, "%000008c0"), Attrs([Attr("c.layout","**[char : 8]"), +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_241, "%000008c1"), Attrs([Attr("c.layout","*[ : 8]"), +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_242, "%000008c2"), Attrs([Attr("c.layout","[signed : 32]"), +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(570, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(556, "@__libc_start_main"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_614, "%0000064e"), Attrs([Attr("address","0x780"), +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_622, "%00000656"), Attrs([Attr("address","0x784"), +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_629, "%0000065d"), Attrs([Attr("address","0x788"), +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_634, "%00000662"), +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_170, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_025, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x998")]), - "_fini", Args([Arg(Tid(2_243, "%000008c3"), + "_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(41, "%00000029"), + Attrs([Attr("address","0x998")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x99C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x99C"), +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("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x99C"), +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("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(55, "%00000037"), Attrs([Attr("address","0x99C"), +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("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9A0"), +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(72, "%00000048"), Attrs([Attr("address","0x9A4"), +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(76, "%0000004c"), Attrs([Attr("address","0x9A4"), +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(79, "%0000004f"), Attrs([Attr("address","0x9A4"), +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(84, "%00000054"), +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_171, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_026, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), - "_init", Args([Arg(Tid(2_244, "%000008c4"), + "_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_946, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_804, "@_init"), Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(1_955, "%000007a3"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#116",Imm(64)), +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_960, "%000007a8"), Attrs([Attr("address","0x72C"), +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("#116",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_965, "%000007ad"), Attrs([Attr("address","0x72C"), +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("#116",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_969, "%000007b1"), Attrs([Attr("address","0x72C"), +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("#116",Imm(64))), Def(Tid(1_976, "%000007b8"), +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_981, "%000007bd"), + 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_983, "%000007bf"), + 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_176, "@call_weak_fn")),Direct(Tid(1_985, "%000007c1"))))])), -Blk(Tid(1_985, "%000007c1"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(1_993, "%000007c9"), Attrs([Attr("address","0x738"), +(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_997, "%000007cd"), Attrs([Attr("address","0x738"), +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(2_000, "%000007d0"), Attrs([Attr("address","0x738"), +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(2_005, "%000007d5"), +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_172, "@_start"), +(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_245, "%000008c5"), Attrs([Attr("c.layout","[signed : 32]"), + 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(496, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(502, "%000001f6"), Attrs([Attr("address","0x804"), +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(508, "%000001fc"), Attrs([Attr("address","0x808"), +Def(Tid(503, "%000001f7"), Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(516, "%00000204"), Attrs([Attr("address","0x80C"), +Def(Tid(509, "%000001fd"), 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"), +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(531, "%00000213"), Attrs([Attr("address","0x814"), +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(538, "%0000021a"), +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(544, "%00000220"), + 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(552, "%00000228"), + 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(558, "%0000022e"), Attrs([Attr("address","0x824"), +Def(Tid(545, "%00000221"), Attrs([Attr("address","0x824"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(564, "%00000234"), Attrs([Attr("address","0x828"), +Def(Tid(550, "%00000226"), Attrs([Attr("address","0x828"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(569, "%00000239"), Attrs([Attr("address","0x82C"), +Def(Tid(555, "%0000022b"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(572, "%0000023c"), Attrs([Attr("address","0x82C"), +Jmps([Call(Tid(558, "%0000022e"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_169, "@__libc_start_main")),Direct(Tid(574, "%0000023e"))))])), -Blk(Tid(574, "%0000023e"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(577, "%00000241"), Attrs([Attr("address","0x830"), +(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(580, "%00000244"), Attrs([Attr("address","0x830"), +Jmps([Call(Tid(566, "%00000236"), Attrs([Attr("address","0x830"), Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_175, "@abort")),Direct(Tid(2_228, "%000008b4"))))])), -Blk(Tid(2_228, "%000008b4"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_229, "%000008b5"), Attrs([]), Int(1,1), -(Direct(Tid(2_176, "@call_weak_fn")),))]))])), Sub(Tid(2_175, "@abort"), +(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(578, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_739, "%000006cb"), Attrs([Attr("address","0x7D0"), +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_747, "%000006d3"), Attrs([Attr("address","0x7D4"), +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_754, "%000006da"), Attrs([Attr("address","0x7D8"), +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_759, "%000006df"), +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_176, "@call_weak_fn"), +(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_246, "%000008c6"), + "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(582, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(586, "%0000024a"), +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(594, "%00000252"), + 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)), -Def(Tid(606, "%0000025e"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(600, "%00000258"), - Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(598, "%00000256"))), -Goto(Tid(2_230, "%000008b6"), Attrs([]), Int(1,1), -Direct(Tid(1_301, "%00000515")))])), Blk(Tid(598, "%00000256"), +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(611, "%00000263"), Attrs([Attr("address","0x844"), +Jmps([Call(Tid(590, "%0000024e"), Attrs([Attr("address","0x844"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_301, "%00000515"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_304, "%00000518"), Attrs([Attr("address","0x840"), +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_302, "@__gmon_start__")))])), Blk(Tid(1_302, "@__gmon_start__"), +Direct(Tid(1_194, "@__gmon_start__")))])), Blk(Tid(1_194, "@__gmon_start__"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_714, "%000006b2"), Attrs([Attr("address","0x7C0"), +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_722, "%000006ba"), Attrs([Attr("address","0x7C4"), +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_729, "%000006c1"), Attrs([Attr("address","0x7C8"), +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_734, "%000006c6"), +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_178, "@deregister_tm_clones"), +Sub(Tid(2_033, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_247, "%000008c7"), + "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(617, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(621, "%0000026d"), +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(628, "%00000274"), + 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(634, "%0000027a"), Attrs([Attr("address","0x858"), +Def(Tid(610, "%00000262"), Attrs([Attr("address","0x858"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(641, "%00000281"), Attrs([Attr("address","0x85C"), +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(649, "%00000289"), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(622, "%0000026e"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(656, "%00000290"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(627, "%00000273"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(659, "%00000293"), Attrs([Attr("address","0x860"), + 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(Var("#16",Imm(64)),Int(0,64))), Def(Tid(662, "%00000296"), +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("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(676, "%000002a4"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(670, "%0000029e"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(668, "%0000029c"))), Goto(Tid(2_231, "%000008b7"), Attrs([]), - Int(1,1), Direct(Tid(1_262, "%000004ee")))])), Blk(Tid(1_262, "%000004ee"), + 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_266, "%000004f2"), Attrs([Attr("address","0x868"), +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_274, "%000004fa"), Attrs([Attr("address","0x86C"), +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)), -Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), Var("#93",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_279, "%000004ff"), - Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), - Var("#93",Imm(1)), Direct(Tid(668, "%0000029c"))), -Goto(Tid(2_232, "%000008b8"), Attrs([]), Int(1,1), -Direct(Tid(1_288, "%00000508")))])), Blk(Tid(668, "%0000029c"), +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(681, "%000002a9"), Attrs([Attr("address","0x87C"), +Jmps([Call(Tid(659, "%00000293"), Attrs([Attr("address","0x87C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_288, "%00000508"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x874"), +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_299, "%00000513"), Attrs([Attr("address","0x878"), +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_181, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_248, "%000008c8"), +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(857, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(810, "@frame_dummy"), Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(859, "%0000035b"), Attrs([Attr("address","0x910"), +Jmps([Call(Tid(812, "%0000032c"), Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_188, "@register_tm_clones")),))]))])), Sub(Tid(2_182, "@free"), +(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_249, "%000008c9"), +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_097, "@free"), Attrs([Attr("address","0x7F0")]), - Phis([]), Defs([Def(Tid(1_789, "%000006fd"), Attrs([Attr("address","0x7F0"), +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_797, "%00000705"), Attrs([Attr("address","0x7F4"), +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_804, "%0000070c"), Attrs([Attr("address","0x7F8"), +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_809, "%00000711"), +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_183, "@main"), +(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_250, "%000008ca"), +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_251, "%000008cb"), +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_252, "%000008cc"), +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(861, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(868, "%00000364"), +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("#42",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(873, "%00000369"), Attrs([Attr("address","0x914"), +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("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(878, "%0000036e"), Attrs([Attr("address","0x914"), +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("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(882, "%00000372"), Attrs([Attr("address","0x914"), +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("#42",Imm(64))), Def(Tid(890, "%0000037a"), +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(898, "%00000382"), Attrs([Attr("address","0x91C"), -Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#47",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(903, "%00000387"), +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("#47",Imm(64)),Var("R20",Imm(64)),LittleEndian(),64)), -Def(Tid(908, "%0000038c"), Attrs([Attr("address","0x91C"), +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("#47",Imm(64)),Int(8,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(915, "%00000393"), Attrs([Attr("address","0x920"), +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(922, "%0000039a"), Attrs([Attr("address","0x924"), +Def(Tid(871, "%00000367"), Attrs([Attr("address","0x924"), Attr("insn","mov w0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x928"), +Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x188")]), Var("R30",Imm(64)), Int(2348,64))]), -Jmps([Call(Tid(930, "%000003a2"), Attrs([Attr("address","0x928"), +Jmps([Call(Tid(879, "%0000036f"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x188")]), Int(1,1), -(Direct(Tid(2_184, "@malloc")),Direct(Tid(932, "%000003a4"))))])), -Blk(Tid(932, "%000003a4"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(936, "%000003a8"), Attrs([Attr("address","0x92C"), +(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(942, "%000003ae"), Attrs([Attr("address","0x930"), +Def(Tid(889, "%00000379"), Attrs([Attr("address","0x930"), Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), -Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x934"), +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(957, "%000003bd"), +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(965, "%000003c5"), + 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(973, "%000003cd"), Attrs([Attr("address","0x940"), +Def(Tid(915, "%00000393"), Attrs([Attr("address","0x940"), Attr("insn","mov x0, x20")]), Var("R0",Imm(64)), Var("R20",Imm(64))), -Def(Tid(978, "%000003d2"), Attrs([Attr("address","0x944"), +Def(Tid(920, "%00000398"), Attrs([Attr("address","0x944"), Attr("insn","bl #-0x1d4")]), Var("R30",Imm(64)), Int(2376,64))]), -Jmps([Call(Tid(981, "%000003d5"), Attrs([Attr("address","0x944"), +Jmps([Call(Tid(923, "%0000039b"), Attrs([Attr("address","0x944"), Attr("insn","bl #-0x1d4")]), Int(1,1), -(Direct(Tid(2_191, "@strlen")),Direct(Tid(983, "%000003d7"))))])), -Blk(Tid(983, "%000003d7"), Attrs([Attr("address","0x948")]), Phis([]), -Defs([Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x948"), +(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(997, "%000003e5"), Attrs([Attr("address","0x94C"), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x94C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x950"), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x950"), Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), -Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x954"), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x954"), Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2392,64))]), -Jmps([Call(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x954"), +Jmps([Call(Tid(949, "%000003b5"), Attrs([Attr("address","0x954"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_185, "@memcpy")),Direct(Tid(1_015, "%000003f7"))))])), -Blk(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x958")]), Phis([]), -Defs([Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x958"), +(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(1_026, "%00000402"), Attrs([Attr("address","0x95C"), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x95C"), Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2400,64))]), -Jmps([Call(Tid(1_029, "%00000405"), Attrs([Attr("address","0x95C"), +Jmps([Call(Tid(963, "%000003c3"), Attrs([Attr("address","0x95C"), Attr("insn","bl #-0x17c")]), Int(1,1), -(Direct(Tid(2_187, "@puts")),Direct(Tid(1_031, "%00000407"))))])), -Blk(Tid(1_031, "%00000407"), Attrs([Attr("address","0x960")]), Phis([]), -Defs([Def(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x960"), +(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(1_045, "%00000415"), Attrs([Attr("address","0x964"), +Def(Tid(976, "%000003d0"), Attrs([Attr("address","0x964"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_050, "%0000041a"), Attrs([Attr("address","0x968"), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x968"), Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_052, "%0000041c"), Attrs([Attr("address","0x968"), +Jmps([Call(Tid(983, "%000003d7"), Attrs([Attr("address","0x968"), Attr("insn","bl #-0x1f8")]), Int(1,1), -(Direct(Tid(2_191, "@strlen")),Direct(Tid(1_054, "%0000041e"))))])), -Blk(Tid(1_054, "%0000041e"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_060, "%00000424"), Attrs([Attr("address","0x96C"), +(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(1_068, "%0000042c"), Attrs([Attr("address","0x970"), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x970"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x974"), +Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x974"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x978"), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x978"), Attr("insn","bl #-0x1c8")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x978"), +Jmps([Call(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x978"), Attr("insn","bl #-0x1c8")]), Int(1,1), -(Direct(Tid(2_186, "@memset")),Direct(Tid(1_085, "%0000043d"))))])), -Blk(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x97C"), +(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_096, "%00000448"), Attrs([Attr("address","0x980"), +Def(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x980"), Attr("insn","bl #-0x190")]), Var("R30",Imm(64)), Int(2436,64))]), -Jmps([Call(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x980"), +Jmps([Call(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x980"), Attr("insn","bl #-0x190")]), Int(1,1), -(Direct(Tid(2_182, "@free")),Direct(Tid(1_101, "%0000044d"))))])), -Blk(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x984")]), Phis([]), -Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x984"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x988"), -Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R20",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),LittleEndian(),64)), -Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x988"), +(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("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), -Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x98C"), +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_139, "%00000473"), Attrs([Attr("address","0x990"), +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_143, "%00000477"), Attrs([Attr("address","0x990"), +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_146, "%0000047a"), Attrs([Attr("address","0x990"), +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_151, "%0000047f"), +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_184, "@malloc"), +(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_253, "%000008cd"), Attrs([Attr("alloc-size","()"), + 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_254, "%000008ce"), +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(928, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_664, "%00000680"), Attrs([Attr("address","0x7A0"), +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_672, "%00000688"), Attrs([Attr("address","0x7A4"), +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_679, "%0000068f"), Attrs([Attr("address","0x7A8"), +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_684, "%00000694"), +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_185, "@memcpy"), +(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_255, "%000008cf"), Attrs([Attr("nonnull","()"), + 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_256, "%000008d0"), +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_257, "%000008d1"), Attrs([Attr("c.layout","[unsigned long : 64]"), +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_258, "%000008d2"), Attrs([Attr("c.layout","*[ : 8]"), +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(1_011, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_564, "%0000061c"), Attrs([Attr("address","0x760"), +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_572, "%00000624"), Attrs([Attr("address","0x764"), +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_579, "%0000062b"), Attrs([Attr("address","0x768"), +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_584, "%00000630"), +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_186, "@memset"), +(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_259, "%000008d3"), Attrs([Attr("nonnull","()"), + 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_260, "%000008d4"), +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_261, "%000008d5"), +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_262, "%000008d6"), Attrs([Attr("c.layout","*[ : 8]"), +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_081, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_689, "%00000699"), Attrs([Attr("address","0x7B0"), +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_697, "%000006a1"), Attrs([Attr("address","0x7B4"), +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_704, "%000006a8"), Attrs([Attr("address","0x7B8"), +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_709, "%000006ad"), +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_187, "@puts"), +(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_263, "%000008d7"), Attrs([Attr("c.layout","*[char : 8]"), + 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_264, "%000008d8"), Attrs([Attr("c.layout","[signed : 32]"), +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(1_027, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_764, "%000006e4"), Attrs([Attr("address","0x7E0"), +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_772, "%000006ec"), Attrs([Attr("address","0x7E4"), +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_779, "%000006f3"), Attrs([Attr("address","0x7E8"), +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_784, "%000006f8"), +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_188, "@register_tm_clones"), +Sub(Tid(2_043, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_265, "%000008d9"), + "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(683, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(687, "%000002af"), Attrs([Attr("address","0x880"), +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(694, "%000002b6"), Attrs([Attr("address","0x884"), +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(700, "%000002bc"), +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(707, "%000002c3"), + 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(715, "%000002cb"), Attrs([Attr("address","0x890"), +Def(Tid(688, "%000002b0"), Attrs([Attr("address","0x890"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(722, "%000002d2"), - Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(730, "%000002da"), Attrs([Attr("address","0x898"), +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,64)))), -Def(Tid(737, "%000002e1"), Attrs([Attr("address","0x89C"), +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)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(749, "%000002ed"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(743, "%000002e7"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(741, "%000002e5"))), Goto(Tid(2_233, "%000008b9"), Attrs([]), - Int(1,1), Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), +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_227, "%000004cb"), Attrs([Attr("address","0x8A4"), +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_235, "%000004d3"), Attrs([Attr("address","0x8A8"), +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)), -Def(Tid(1_246, "%000004de"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), Var("#88",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_240, "%000004d8"), - Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), - Var("#88",Imm(1)), Direct(Tid(741, "%000002e5"))), -Goto(Tid(2_234, "%000008ba"), Attrs([]), Int(1,1), -Direct(Tid(1_249, "%000004e1")))])), Blk(Tid(741, "%000002e5"), +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(754, "%000002f2"), Attrs([Attr("address","0x8B8"), +Jmps([Call(Tid(719, "%000002cf"), Attrs([Attr("address","0x8B8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x8B0"), +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_260, "%000004ec"), Attrs([Attr("address","0x8B4"), +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_191, "@strlen"), +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_266, "%000008da"), Attrs([Attr("nonnull","()"), + 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_267, "%000008db"), +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(979, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(921, "@strlen"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_589, "%00000635"), Attrs([Attr("address","0x770"), +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_597, "%0000063d"), Attrs([Attr("address","0x774"), +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_604, "%00000644"), Attrs([Attr("address","0x778"), +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_609, "%00000649"), +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 index e490b7ad3..6e0377703 100644 --- 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 @@ -1,355 +1,348 @@ -000008bb: program -00000874: sub __cxa_finalize(__cxa_finalize_result) -000008bc: __cxa_finalize_result :: out u32 = low:32[R0] - -000004c3: -00000667: R16 := 0x20000 -0000066f: R17 := mem[R16 + 0x18, el]:u64 -00000676: R16 := R16 + 0x18 -0000067b: call R17 with noreturn - -00000875: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008bd: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -000002f6: -000002fd: #34 := R31 - 0x20 -00000302: mem := mem with [#34, el]:u64 <- R29 -00000307: mem := mem with [#34 + 8, el]:u64 <- R30 -0000030b: R31 := #34 -00000312: R29 := R31 -0000031a: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000320: R19 := 0x20000 -00000329: R0 := pad:32[mem[R19 + 0x70]] -00000335: #36 := ~~0:0[R0] -0000032f: when #36 goto %0000032d -000008b1: goto %00000481 - -00000481: -00000485: R0 := 0x1F000 -0000048d: R0 := mem[R0 + 0xFC8, el]:u64 -00000499: #85 := R0 = 0 -00000493: when #85 goto %00000491 -000008b2: goto %000004b1 - -000004b1: -000004b5: R0 := 0x20000 -000004bd: R0 := mem[R0 + 0x58, el]:u64 -000004c2: R30 := 0x8F0 -000004c5: call @__cxa_finalize with return %00000491 - -00000491: -0000049e: R30 := 0x8F4 -000004a0: call @deregister_tm_clones with return %000004a2 - -000004a2: -000004a7: R0 := 1 -000004af: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -000008b3: goto %0000032d - -0000032d: -0000033d: R19 := mem[R31 + 0x10, el]:u64 -00000347: R29 := mem[R31, el]:u64 -0000034b: R30 := mem[R31 + 8, el]:u64 -0000034e: R31 := R31 + 0x20 -00000353: call R30 with noreturn - -00000879: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008be: __libc_start_main_main :: in u64 = R0 -000008bf: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008c0: __libc_start_main_arg3 :: in out u64 = R2 -000008c1: __libc_start_main_auxv :: in out u64 = R3 -000008c2: __libc_start_main_result :: out u32 = low:32[R0] - -0000023a: -0000064e: R16 := 0x20000 -00000656: R17 := mem[R16 + 0x10, el]:u64 -0000065d: R16 := R16 + 0x10 -00000662: call R17 with noreturn - -0000087a: sub _fini(_fini_result) -000008c3: _fini_result :: out u32 = low:32[R0] +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: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -0000087b: sub _init(_init_result) -000008c4: _init_result :: out u32 = low:32[R0] - -0000079a: -000007a3: #116 := R31 - 0x10 -000007a8: mem := mem with [#116, el]:u64 <- R29 -000007ad: mem := mem with [#116 + 8, el]:u64 <- R30 -000007b1: R31 := #116 -000007b8: R29 := R31 -000007bd: R30 := 0x738 -000007bf: call @call_weak_fn with return %000007c1 - -000007c1: -000007c9: R29 := mem[R31, el]:u64 -000007cd: R30 := mem[R31 + 8, el]:u64 -000007d0: R31 := R31 + 0x10 -000007d5: call R30 with noreturn - -0000087c: sub _start(_start_result) -000008c5: _start_result :: out u32 = low:32[R0] - -000001f0: -000001f6: R29 := 0 -000001fc: R30 := 0 -00000204: R5 := R0 -0000020c: R1 := mem[R31, el]:u64 -00000213: R2 := R31 + 8 -0000021a: R6 := R31 -00000220: R0 := 0x1F000 -00000228: R0 := mem[R0 + 0xFD8, el]:u64 -0000022e: R3 := 0 -00000234: R4 := 0 -00000239: R30 := 0x830 -0000023c: call @__libc_start_main with return %0000023e - -0000023e: -00000241: R30 := 0x834 -00000244: call @abort with return %000008b4 - -000008b4: -000008b5: call @call_weak_fn with noreturn - -0000087f: sub abort() - - -00000242: -000006cb: R16 := 0x20000 -000006d3: R17 := mem[R16 + 0x38, el]:u64 -000006da: R16 := R16 + 0x38 -000006df: call R17 with noreturn - -00000880: sub call_weak_fn(call_weak_fn_result) -000008c6: call_weak_fn_result :: out u32 = low:32[R0] +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: -0000024a: R0 := 0x1F000 -00000252: R0 := mem[R0 + 0xFD0, el]:u64 -0000025e: #12 := R0 = 0 -00000258: when #12 goto %00000256 -000008b6: goto %00000515 - -00000256: -00000263: call R30 with noreturn - -00000515: -00000518: goto @__gmon_start__ - -00000516: -000006b2: R16 := 0x20000 -000006ba: R17 := mem[R16 + 0x30, el]:u64 -000006c1: R16 := R16 + 0x30 -000006c6: call R17 with noreturn - -00000882: sub deregister_tm_clones(deregister_tm_clones_result) -000008c7: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000269: -0000026d: R0 := 0x20000 -00000274: R0 := R0 + 0x70 -0000027a: R1 := 0x20000 -00000281: R1 := R1 + 0x70 -00000289: #16 := 1 + ~R0 + R1 -0000028d: NF := 63:63[#16] -00000290: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -00000293: ZF := #16 = 0 -00000296: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002a4: #21 := ZF -0000029e: when #21 goto %0000029c -000008b7: goto %000004ee - -000004ee: -000004f2: R1 := 0x1F000 -000004fa: R1 := mem[R1 + 0xFC0, el]:u64 -00000505: #93 := R1 = 0 -000004ff: when #93 goto %0000029c -000008b8: goto %00000508 - -0000029c: -000002a9: call R30 with noreturn - -00000508: -0000050e: R16 := R1 -00000513: call R16 with noreturn - -00000885: sub frame_dummy(frame_dummy_result) -000008c8: frame_dummy_result :: out u32 = low:32[R0] - -00000359: -0000035b: call @register_tm_clones with noreturn - -00000886: sub free(free_ptr) -000008c9: free_ptr :: in out u64 = R0 - -00000449: -000006fd: R16 := 0x20000 -00000705: R17 := mem[R16 + 0x48, el]:u64 -0000070c: R16 := R16 + 0x48 -00000711: call R17 with noreturn - -00000887: sub main(main_argc, main_argv, main_result) -000008ca: main_argc :: in u32 = low:32[R0] -000008cb: main_argv :: in out u64 = R1 -000008cc: main_result :: out u32 = low:32[R0] - -0000035d: -00000364: #42 := R31 - 0x30 -00000369: mem := mem with [#42, el]:u64 <- R29 -0000036e: mem := mem with [#42 + 8, el]:u64 <- R30 -00000372: R31 := #42 -0000037a: mem := mem with [R31 + 0x10, el]:u64 <- R21 -00000382: #47 := R31 + 0x20 -00000387: mem := mem with [#47, el]:u64 <- R20 -0000038c: mem := mem with [#47 + 8, el]:u64 <- R19 -00000393: R29 := R31 -0000039a: R0 := 0xB -0000039f: R30 := 0x92C -000003a2: call @malloc with return %000003a4 - -000003a4: -000003a8: R21 := 0x20000 -000003ae: R20 := 0x20000 -000003b5: R20 := R20 + 0x61 -000003bd: R19 := R0 -000003c5: mem := mem with [R21 + 0x78, el]:u64 <- R0 -000003cd: R0 := R20 -000003d2: R30 := 0x948 -000003d5: call @strlen with return %000003d7 - -000003d7: +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 -000003e5: R0 := R19 -000003ed: R1 := R20 -000003f2: R30 := 0x958 -000003f5: call @memcpy with return %000003f7 - -000003f7: -000003fd: R0 := R19 -00000402: R30 := 0x960 -00000405: call @puts with return %00000407 - -00000407: -0000040d: R19 := mem[R21 + 0x78, el]:u64 -00000415: R0 := R19 -0000041a: R30 := 0x96C -0000041c: call @strlen with return %0000041e - -0000041e: -00000424: R2 := R0 -0000042c: R0 := R19 -00000433: R1 := 1 -00000438: R30 := 0x97C -0000043b: call @memset with return %0000043d - -0000043d: -00000443: R0 := mem[R21 + 0x78, el]:u64 -00000448: R30 := 0x984 -0000044b: call @free with return %0000044d - -0000044d: -00000454: R0 := 0 -0000045d: R20 := mem[R31 + 0x20, el]:u64 -00000461: R19 := mem[R31 + 0x28, el]:u64 -00000469: R21 := mem[R31 + 0x10, el]:u64 -00000473: R29 := mem[R31, el]:u64 -00000477: R30 := mem[R31 + 8, el]:u64 -0000047a: R31 := R31 + 0x30 -0000047f: call R30 with noreturn - -00000888: sub malloc(malloc_size, malloc_result) -000008cd: malloc_size :: in u64 = R0 -000008ce: malloc_result :: out u64 = R0 - -000003a0: -00000680: R16 := 0x20000 -00000688: R17 := mem[R16 + 0x20, el]:u64 -0000068f: R16 := R16 + 0x20 -00000694: call R17 with noreturn - -00000889: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008cf: memcpy_dst :: in out u64 = R0 -000008d0: memcpy_src :: in out u64 = R1 -000008d1: memcpy_n :: in u64 = R2 -000008d2: memcpy_result :: out u64 = R0 - -000003f3: -0000061c: R16 := 0x20000 -00000624: R17 := mem[R16, el]:u64 -0000062b: R16 := R16 -00000630: call R17 with noreturn - -0000088a: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008d3: memset_buf :: in out u64 = R0 -000008d4: memset_c :: in u32 = low:32[R1] -000008d5: memset_n :: in u64 = R2 -000008d6: memset_result :: out u64 = R0 - -00000439: -00000699: R16 := 0x20000 -000006a1: R17 := mem[R16 + 0x28, el]:u64 -000006a8: R16 := R16 + 0x28 -000006ad: call R17 with noreturn - -0000088b: sub puts(puts_s, puts_result) -000008d7: puts_s :: in u64 = R0 -000008d8: puts_result :: out u32 = low:32[R0] - -00000403: -000006e4: R16 := 0x20000 -000006ec: R17 := mem[R16 + 0x40, el]:u64 -000006f3: R16 := R16 + 0x40 -000006f8: call R17 with noreturn - -0000088c: sub register_tm_clones(register_tm_clones_result) -000008d9: register_tm_clones_result :: out u32 = low:32[R0] - -000002ab: -000002af: R0 := 0x20000 -000002b6: R0 := R0 + 0x70 -000002bc: R1 := 0x20000 -000002c3: R1 := R1 + 0x70 -000002cb: R1 := R1 - R0 -000002d2: R2 := R1 >> 0x3F -000002da: R1 := R2 + (R1 ~>> 3) -000002e1: R1 := R1 >> 1 -000002ed: #30 := R1 = 0 -000002e7: when #30 goto %000002e5 -000008b9: goto %000004c7 - -000004c7: -000004cb: R2 := 0x1F000 -000004d3: R2 := mem[R2 + 0xFE0, el]:u64 -000004de: #88 := R2 = 0 -000004d8: when #88 goto %000002e5 -000008ba: goto %000004e1 - -000002e5: -000002f2: call R30 with noreturn - -000004e1: -000004e7: R16 := R2 -000004ec: call R16 with noreturn - -0000088f: sub strlen(strlen_s, strlen_result) -000008da: strlen_s :: in u64 = R0 -000008db: strlen_result :: out u64 = R0 - -000003d3: -00000635: R16 := 0x20000 -0000063d: R17 := mem[R16 + 8, el]:u64 -00000644: R16 := R16 + 8 -00000649: call R17 with noreturn +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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt index 6be3f033b..80e54b967 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt @@ -69,707 +69,693 @@ Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), Annotation(Region(0x800,0x9BB), Attr("section","\".text\"")), Annotation(Region(0x800,0x9BB), Attr("code-region","()")), Annotation(Region(0x9BC,0x9CF), Attr("code-region","()"))]), -Program(Tid(2_333, "%0000091d"), Attrs([]), - Subs([Sub(Tid(2_262, "@__cxa_finalize"), +Program(Tid(2_191, "%0000088f"), Attrs([]), + Subs([Sub(Tid(2_120, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_334, "%0000091e"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_192, "%00000890"), 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_299, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_212, "@__cxa_finalize"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x790"), +Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x794"), +Def(Tid(1_607, "%00000647"), 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_734, "%000006c6"), Attrs([Attr("address","0x798"), +Def(Tid(1_613, "%0000064d"), 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_739, "%000006cb"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_618, "%00000652"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_263, "@__do_global_dtors_aux"), +Sub(Tid(2_121, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_335, "%0000091f"), + "__do_global_dtors_aux", Args([Arg(Tid(2_193, "%00000891"), 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(794, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(801, "%00000321"), +Blks([Blk(Tid(759, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(763, "%000002fb"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(806, "%00000326"), Attrs([Attr("address","0x8C0"), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x8C0"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(775, "%00000307"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x8C0"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(822, "%00000336"), +Var("#3",Imm(64))), Def(Tid(785, "%00000311"), Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(830, "%0000033e"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(793, "%00000319"), 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(836, "%00000344"), Attrs([Attr("address","0x8CC"), +Def(Tid(798, "%0000031e"), Attrs([Attr("address","0x8CC"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x8D0"), +Def(Tid(805, "%00000325"), Attrs([Attr("address","0x8D0"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(857, "%00000359"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(849, "%00000351"))), Goto(Tid(2_323, "%00000913"), Attrs([]), - Int(1,1), Direct(Tid(1_233, "%000004d1")))])), Blk(Tid(1_233, "%000004d1"), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(811, "%0000032b"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(809, "%00000329"))), +Goto(Tid(2_181, "%00000885"), Attrs([]), Int(1,1), +Direct(Tid(1_157, "%00000485")))])), Blk(Tid(1_157, "%00000485"), Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8D8"), +Defs([Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x8D8"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8DC"), +Def(Tid(1_167, "%0000048f"), 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)), -Def(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_251, "%000004e3"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), - Var("#67",Imm(1)), Direct(Tid(1_249, "%000004e1"))), -Goto(Tid(2_324, "%00000914"), Attrs([]), Int(1,1), -Direct(Tid(1_281, "%00000501")))])), Blk(Tid(1_281, "%00000501"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_173, "%00000495"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_171, "%00000493"))), Goto(Tid(2_182, "%00000886"), Attrs([]), + Int(1,1), Direct(Tid(1_196, "%000004ac")))])), Blk(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x8E4"), +Defs([Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_293, "%0000050d"), Attrs([Attr("address","0x8E8"), +Def(Tid(1_206, "%000004b6"), 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_298, "%00000512"), Attrs([Attr("address","0x8EC"), +Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_301, "%00000515"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(1_214, "%000004be"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_262, "@__cxa_finalize")),Direct(Tid(1_249, "%000004e1"))))])), -Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8F0"), +(Direct(Tid(2_120, "@__cxa_finalize")),Direct(Tid(1_171, "%00000493"))))])), +Blk(Tid(1_171, "%00000493"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x8F0"), +Jmps([Call(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_276, "@deregister_tm_clones")),Direct(Tid(1_266, "%000004f2"))))])), -Blk(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8F4"), +(Direct(Tid(2_134, "@deregister_tm_clones")),Direct(Tid(1_183, "%0000049f"))))])), +Blk(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8F4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x8F8"), +Def(Tid(1_194, "%000004aa"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_325, "%00000915"), Attrs([]), Int(1,1), -Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(865, "%00000361"), +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_183, "%00000887"), Attrs([]), Int(1,1), +Direct(Tid(809, "%00000329")))])), Blk(Tid(809, "%00000329"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(819, "%00000333"), 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(875, "%0000036b"), Attrs([Attr("address","0x900"), +Def(Tid(826, "%0000033a"), 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(879, "%0000036f"), Attrs([Attr("address","0x900"), +Def(Tid(831, "%0000033f"), 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(882, "%00000372"), Attrs([Attr("address","0x900"), +Def(Tid(835, "%00000343"), 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(887, "%00000377"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(840, "%00000348"), Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_267, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_125, "@__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_336, "%00000920"), + Args([Arg(Tid(2_194, "%00000892"), 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_337, "%00000921"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_195, "%00000893"), 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_338, "%00000922"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_196, "%00000894"), 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_339, "%00000923"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_197, "%00000895"), 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_340, "%00000924"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_198, "%00000896"), 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(606, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(592, "@__libc_start_main"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_694, "%0000069e"), Attrs([Attr("address","0x780"), +Defs([Def(Tid(1_578, "%0000062a"), 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"), +Def(Tid(1_585, "%00000631"), 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_709, "%000006ad"), Attrs([Attr("address","0x788"), +Def(Tid(1_591, "%00000637"), 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_714, "%000006b2"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_596, "%0000063c"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_268, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_126, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9BC")]), - "_fini", Args([Arg(Tid(2_341, "%00000925"), + "_fini", Args([Arg(Tid(2_199, "%00000897"), 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","0x9BC")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9BC")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x9C0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9C0"), +Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x9C0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9C0"), +Store(Var("mem",Mem(64,8)),Var("#0",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(50, "%00000032"), Attrs([Attr("address","0x9C0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9C0"), +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","0x9C0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9C4"), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9C4"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9C8"), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9C8"), 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(76, "%0000004c"), Attrs([Attr("address","0x9C8"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9C8"), 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(79, "%0000004f"), Attrs([Attr("address","0x9C8"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x9C8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), Attrs([Attr("address","0x9CC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_269, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_127, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), - "_init", Args([Arg(Tid(2_342, "%00000926"), + "_init", Args([Arg(Tid(2_200, "%00000898"), 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(2_035, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_896, "@_init"), Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(2_044, "%000007fc"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#98",Imm(64)), +Defs([Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(2_049, "%00000801"), Attrs([Attr("address","0x72C"), +Def(Tid(1_908, "%00000774"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#98",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(2_054, "%00000806"), Attrs([Attr("address","0x72C"), +Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_914, "%0000077a"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#98",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(2_058, "%0000080a"), Attrs([Attr("address","0x72C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_918, "%0000077e"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#98",Imm(64))), Def(Tid(2_065, "%00000811"), +Var("#7",Imm(64))), Def(Tid(1_924, "%00000784"), Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_070, "%00000816"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_929, "%00000789"), Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), - Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(2_072, "%00000818"), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_931, "%0000078b"), Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), -(Direct(Tid(2_274, "@call_weak_fn")),Direct(Tid(2_074, "%0000081a"))))])), -Blk(Tid(2_074, "%0000081a"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(2_082, "%00000822"), Attrs([Attr("address","0x738"), +(Direct(Tid(2_132, "@call_weak_fn")),Direct(Tid(1_933, "%0000078d"))))])), +Blk(Tid(1_933, "%0000078d"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(1_938, "%00000792"), 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(2_086, "%00000826"), Attrs([Attr("address","0x738"), +Def(Tid(1_943, "%00000797"), 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(2_089, "%00000829"), Attrs([Attr("address","0x738"), +Def(Tid(1_947, "%0000079b"), 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(2_094, "%0000082e"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_952, "%000007a0"), Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_270, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_128, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), Attr("stub","()"), Attr("entry-point","()")]), "_start", - Args([Arg(Tid(2_343, "%00000927"), Attrs([Attr("c.layout","[signed : 32]"), + Args([Arg(Tid(2_201, "%00000899"), 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(532, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(538, "%0000021a"), Attrs([Attr("address","0x804"), +Blks([Blk(Tid(529, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(534, "%00000216"), Attrs([Attr("address","0x804"), Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), -Def(Tid(544, "%00000220"), Attrs([Attr("address","0x808"), +Def(Tid(539, "%0000021b"), Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(552, "%00000228"), Attrs([Attr("address","0x80C"), +Def(Tid(545, "%00000221"), Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), -Def(Tid(560, "%00000230"), Attrs([Attr("address","0x810"), +Def(Tid(552, "%00000228"), 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(567, "%00000237"), Attrs([Attr("address","0x814"), +Def(Tid(558, "%0000022e"), Attrs([Attr("address","0x814"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(574, "%0000023e"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(564, "%00000234"), Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(580, "%00000244"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(569, "%00000239"), Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(588, "%0000024c"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(576, "%00000240"), 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(594, "%00000252"), Attrs([Attr("address","0x824"), +Def(Tid(581, "%00000245"), Attrs([Attr("address","0x824"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(600, "%00000258"), Attrs([Attr("address","0x828"), +Def(Tid(586, "%0000024a"), Attrs([Attr("address","0x828"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(605, "%0000025d"), Attrs([Attr("address","0x82C"), +Def(Tid(591, "%0000024f"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(608, "%00000260"), Attrs([Attr("address","0x82C"), +Jmps([Call(Tid(594, "%00000252"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_267, "@__libc_start_main")),Direct(Tid(610, "%00000262"))))])), -Blk(Tid(610, "%00000262"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(613, "%00000265"), Attrs([Attr("address","0x830"), +(Direct(Tid(2_125, "@__libc_start_main")),Direct(Tid(596, "%00000254"))))])), +Blk(Tid(596, "%00000254"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(599, "%00000257"), Attrs([Attr("address","0x830"), Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x830"), +Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x830"), Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_273, "@abort")),Direct(Tid(2_326, "%00000916"))))])), -Blk(Tid(2_326, "%00000916"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_327, "%00000917"), Attrs([]), Int(1,1), -(Direct(Tid(2_274, "@call_weak_fn")),))]))])), Sub(Tid(2_273, "@abort"), +(Direct(Tid(2_131, "@abort")),Direct(Tid(2_184, "%00000888"))))])), +Blk(Tid(2_184, "%00000888"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_185, "%00000889"), Attrs([]), Int(1,1), +(Direct(Tid(2_132, "@call_weak_fn")),))]))])), Sub(Tid(2_131, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(614, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x7D0"), +Blks([Blk(Tid(600, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x7D4"), +Def(Tid(1_695, "%0000069f"), 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_834, "%0000072a"), Attrs([Attr("address","0x7D8"), +Def(Tid(1_701, "%000006a5"), 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_839, "%0000072f"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_706, "%000006aa"), Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_274, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_132, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), - "call_weak_fn", Args([Arg(Tid(2_344, "%00000928"), + "call_weak_fn", Args([Arg(Tid(2_202, "%0000089a"), 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(618, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(622, "%0000026e"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(604, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(630, "%00000276"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(614, "%00000266"), 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)), -Def(Tid(642, "%00000282"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(636, "%0000027c"), - Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(634, "%0000027a"))), -Goto(Tid(2_328, "%00000918"), Attrs([]), Int(1,1), -Direct(Tid(1_381, "%00000565")))])), Blk(Tid(634, "%0000027a"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(620, "%0000026c"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(618, "%0000026a"))), Goto(Tid(2_186, "%0000088a"), Attrs([]), + Int(1,1), Direct(Tid(1_276, "%000004fc")))])), Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(647, "%00000287"), Attrs([Attr("address","0x844"), +Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x844"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_381, "%00000565"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_384, "%00000568"), Attrs([Attr("address","0x840"), +Blk(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x840"), Attr("insn","b #-0x80")]), Int(1,1), -Direct(Tid(1_382, "@__gmon_start__")))])), Blk(Tid(1_382, "@__gmon_start__"), +Direct(Tid(1_277, "@__gmon_start__")))])), Blk(Tid(1_277, "@__gmon_start__"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x7C0"), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x7C4"), +Def(Tid(1_673, "%00000689"), 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_809, "%00000711"), Attrs([Attr("address","0x7C8"), +Def(Tid(1_679, "%0000068f"), 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_814, "%00000716"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_684, "%00000694"), Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_276, "@deregister_tm_clones"), +Sub(Tid(2_134, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_345, "%00000929"), + "deregister_tm_clones", Args([Arg(Tid(2_203, "%0000089b"), 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(653, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(657, "%00000291"), +Blks([Blk(Tid(632, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(635, "%0000027b"), Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(664, "%00000298"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(641, "%00000281"), Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x858"), +Def(Tid(646, "%00000286"), Attrs([Attr("address","0x858"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(677, "%000002a5"), Attrs([Attr("address","0x85C"), +Def(Tid(652, "%0000028c"), Attrs([Attr("address","0x85C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(685, "%000002ad"), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(658, "%00000292"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(689, "%000002b1"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(692, "%000002b4"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(663, "%00000297"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x860"), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(669, "%0000029d"), 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(675, "%000002a3"), 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(679, "%000002a7"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(698, "%000002ba"), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(683, "%000002ab"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(712, "%000002c8"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(706, "%000002c2"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(704, "%000002c0"))), Goto(Tid(2_329, "%00000919"), Attrs([]), - Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(1_342, "%0000053e"), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(689, "%000002b1"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(687, "%000002af"))), Goto(Tid(2_187, "%0000088b"), Attrs([]), + Int(1,1), Direct(Tid(1_246, "%000004de")))])), Blk(Tid(1_246, "%000004de"), Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_346, "%00000542"), Attrs([Attr("address","0x868"), +Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x868"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x86C"), +Def(Tid(1_256, "%000004e8"), 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)), -Def(Tid(1_365, "%00000555"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_359, "%0000054f"), - Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), - Var("#75",Imm(1)), Direct(Tid(704, "%000002c0"))), -Goto(Tid(2_330, "%0000091a"), Attrs([]), Int(1,1), -Direct(Tid(1_368, "%00000558")))])), Blk(Tid(704, "%000002c0"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(687, "%000002af"))), Goto(Tid(2_188, "%0000088c"), Attrs([]), + Int(1,1), Direct(Tid(1_265, "%000004f1")))])), Blk(Tid(687, "%000002af"), Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(717, "%000002cd"), Attrs([Attr("address","0x87C"), +Jmps([Call(Tid(695, "%000002b7"), Attrs([Attr("address","0x87C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_368, "%00000558"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_374, "%0000055e"), Attrs([Attr("address","0x874"), +Blk(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x874"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_379, "%00000563"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x878"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_279, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_346, "%0000092a"), +Sub(Tid(2_137, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_204, "%0000089c"), 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(893, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(846, "@frame_dummy"), Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(895, "%0000037f"), Attrs([Attr("address","0x910"), +Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_286, "@register_tm_clones")),))]))])), Sub(Tid(2_280, "@free"), +(Direct(Tid(2_144, "@register_tm_clones")),))]))])), Sub(Tid(2_138, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_347, "%0000092b"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_205, "%0000089d"), 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_195, "@free"), Attrs([Attr("address","0x7F0")]), - Phis([]), Defs([Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x7F0"), +Both())]), Blks([Blk(Tid(1_121, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x7F4"), +Def(Tid(1_739, "%000006cb"), 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_884, "%0000075c"), Attrs([Attr("address","0x7F8"), +Def(Tid(1_745, "%000006d1"), 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_889, "%00000761"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_750, "%000006d6"), Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_281, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_139, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_348, "%0000092c"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_206, "%0000089e"), 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_349, "%0000092d"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_207, "%0000089f"), 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_350, "%0000092e"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_208, "%000008a0"), 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(897, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(902, "%00000386"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(850, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(854, "%00000356"), Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), -Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x918"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(915, "%00000393"), + Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), +Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x918"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(866, "%00000362"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(920, "%00000398"), Attrs([Attr("address","0x918"), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(872, "%00000368"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x91C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(878, "%0000036e"), Attrs([Attr("address","0x91C"), Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(935, "%000003a7"), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(885, "%00000375"), Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(943, "%000003af"), Attrs([Attr("address","0x924"), +Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x924"), Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x928"), +Def(Tid(897, "%00000381"), Attrs([Attr("address","0x928"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x92C"), +Def(Tid(902, "%00000386"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(957, "%000003bd"), Attrs([Attr("address","0x92C"), +Jmps([Call(Tid(905, "%00000389"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_282, "@malloc")),Direct(Tid(959, "%000003bf"))))])), -Blk(Tid(959, "%000003bf"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x930"), +(Direct(Tid(2_140, "@malloc")),Direct(Tid(907, "%0000038b"))))])), +Blk(Tid(907, "%0000038b"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x930"), Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x934"), +Def(Tid(918, "%00000396"), Attrs([Attr("address","0x934"), Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x938"), +Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x938"), Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x93C"), +Def(Tid(933, "%000003a5"), Attrs([Attr("address","0x93C"), Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x940"), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x940"), Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x944"), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x944"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x948"), +Def(Tid(952, "%000003b8"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(1_016, "%000003f8"), +PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x950"), +Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x950"), Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), -Jmps([Call(Tid(1_024, "%00000400"), Attrs([Attr("address","0x950"), +Jmps([Call(Tid(968, "%000003c8"), Attrs([Attr("address","0x950"), Attr("insn","bl #-0x1e0")]), Int(1,1), -(Direct(Tid(2_289, "@strlen")),Direct(Tid(1_026, "%00000402"))))])), -Blk(Tid(1_026, "%00000402"), Attrs([Attr("address","0x954")]), Phis([]), -Defs([Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x954"), +(Direct(Tid(2_147, "@strlen")),Direct(Tid(970, "%000003ca"))))])), +Blk(Tid(970, "%000003ca"), Attrs([Attr("address","0x954")]), Phis([]), +Defs([Def(Tid(975, "%000003cf"), Attrs([Attr("address","0x954"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x958"), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x958"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x95C"), +Def(Tid(988, "%000003dc"), Attrs([Attr("address","0x95C"), Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x960"), +Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x960"), Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), -Jmps([Call(Tid(1_056, "%00000420"), Attrs([Attr("address","0x960"), +Jmps([Call(Tid(996, "%000003e4"), Attrs([Attr("address","0x960"), Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_283, "@memcpy")),Direct(Tid(1_058, "%00000422"))))])), -Blk(Tid(1_058, "%00000422"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_064, "%00000428"), Attrs([Attr("address","0x964"), +(Direct(Tid(2_141, "@memcpy")),Direct(Tid(998, "%000003e6"))))])), +Blk(Tid(998, "%000003e6"), Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x968"), +Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x968"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x96C"), +Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), -Jmps([Call(Tid(1_080, "%00000438"), Attrs([Attr("address","0x96C"), +Jmps([Call(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_285, "@puts")),Direct(Tid(1_082, "%0000043a"))))])), -Blk(Tid(1_082, "%0000043a"), Attrs([Attr("address","0x970")]), Phis([]), -Defs([Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x970"), +(Direct(Tid(2_143, "@puts")),Direct(Tid(1_020, "%000003fc"))))])), +Blk(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x970"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x974"), +Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x974"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x978"), +Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x978"), Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_111, "%00000457"), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x980"), +Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x980"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x984"), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x984"), Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x988"), +Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x988"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_140, "%00000474"), Attrs([Attr("address","0x98C"), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x98C"), Attr("insn","bl #-0x21c")]), Var("R30",Imm(64)), Int(2448,64))]), -Jmps([Call(Tid(1_142, "%00000476"), Attrs([Attr("address","0x98C"), +Jmps([Call(Tid(1_075, "%00000433"), Attrs([Attr("address","0x98C"), Attr("insn","bl #-0x21c")]), Int(1,1), -(Direct(Tid(2_289, "@strlen")),Direct(Tid(1_144, "%00000478"))))])), -Blk(Tid(1_144, "%00000478"), Attrs([Attr("address","0x990")]), Phis([]), -Defs([Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x990"), +(Direct(Tid(2_147, "@strlen")),Direct(Tid(1_077, "%00000435"))))])), +Blk(Tid(1_077, "%00000435"), Attrs([Attr("address","0x990")]), Phis([]), +Defs([Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x990"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_158, "%00000486"), Attrs([Attr("address","0x994"), +Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x994"), Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x998"), +Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x998"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x99C"), +Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x99C"), Attr("insn","bl #-0x1ec")]), Var("R30",Imm(64)), Int(2464,64))]), -Jmps([Call(Tid(1_173, "%00000495"), Attrs([Attr("address","0x99C"), +Jmps([Call(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x99C"), Attr("insn","bl #-0x1ec")]), Int(1,1), -(Direct(Tid(2_284, "@memset")),Direct(Tid(1_175, "%00000497"))))])), -Blk(Tid(1_175, "%00000497"), Attrs([Attr("address","0x9A0")]), Phis([]), -Defs([Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x9A0"), +(Direct(Tid(2_142, "@memset")),Direct(Tid(1_103, "%0000044f"))))])), +Blk(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x9A0")]), Phis([]), +Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x9A0"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x9A4"), +Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x9A4"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x9A8"), +Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x9A8"), Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2476,64))]), -Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x9A8"), +Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x9A8"), Attr("insn","bl #-0x1b8")]), Int(1,1), -(Direct(Tid(2_280, "@free")),Direct(Tid(1_199, "%000004af"))))])), -Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x9AC")]), Phis([]), -Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x9AC"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x9B0"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), -Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x9B0"), +(Direct(Tid(2_138, "@free")),Direct(Tid(1_125, "%00000465"))))])), +Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x9AC")]), Phis([]), +Defs([Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x9AC"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x9B0"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_139, "%00000473"), + Attrs([Attr("address","0x9B0"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), + Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), +Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x9B0"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), -Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x9B4"), +Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x9B4"), Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_231, "%000004cf"), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_155, "%00000483"), Attrs([Attr("address","0x9B8"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_282, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_140, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_351, "%0000092f"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_209, "%000008a1"), 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_352, "%00000930"), +Var("R0",Imm(64)), In()), Arg(Tid(2_210, "%000008a2"), 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(955, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x7A0"), +Blks([Blk(Tid(903, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_629, "%0000065d"), 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_759, "%000006df"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_635, "%00000663"), 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_764, "%000006e4"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_640, "%00000668"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_283, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_141, "@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_353, "%00000931"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_211, "%000008a3"), 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_354, "%00000932"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_212, "%000008a4"), 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_355, "%00000933"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_213, "%000008a5"), 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_356, "%00000934"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_214, "%000008a6"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_054, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(994, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_534, "%000005fe"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_652, "%00000674"), Attrs([Attr("address","0x764"), +Def(Tid(1_541, "%00000605"), 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_659, "%0000067b"), Attrs([Attr("address","0x768"), +Def(Tid(1_547, "%0000060b"), Attrs([Attr("address","0x768"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_664, "%00000680"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_552, "%00000610"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_284, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_142, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x7B0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_357, "%00000935"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_215, "%000008a7"), 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_358, "%00000936"), +Both()), Arg(Tid(2_216, "%000008a8"), 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_359, "%00000937"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_217, "%000008a9"), 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_360, "%00000938"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_218, "%000008aa"), 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_171, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x7B0"), +Blks([Blk(Tid(1_099, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x7B4"), +Def(Tid(1_651, "%00000673"), 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_784, "%000006f8"), Attrs([Attr("address","0x7B8"), +Def(Tid(1_657, "%00000679"), 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_789, "%000006fd"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_662, "%0000067e"), Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_285, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_143, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x7E0"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_361, "%00000939"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_219, "%000008ab"), 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_362, "%0000093a"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_220, "%000008ac"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_078, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x7E0"), +Blks([Blk(Tid(1_016, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x7E4"), +Def(Tid(1_717, "%000006b5"), 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_859, "%00000743"), Attrs([Attr("address","0x7E8"), +Def(Tid(1_723, "%000006bb"), 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_864, "%00000748"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_728, "%000006c0"), Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_286, "@register_tm_clones"), +Sub(Tid(2_144, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_363, "%0000093b"), + "register_tm_clones", Args([Arg(Tid(2_221, "%000008ad"), 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(719, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x880"), +Blks([Blk(Tid(697, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x880"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(730, "%000002da"), Attrs([Attr("address","0x884"), +Def(Tid(706, "%000002c2"), Attrs([Attr("address","0x884"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(736, "%000002e0"), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(743, "%000002e7"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(717, "%000002cd"), Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x890"), +Def(Tid(724, "%000002d4"), Attrs([Attr("address","0x890"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(758, "%000002f6"), - Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(766, "%000002fe"), Attrs([Attr("address","0x898"), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(730, "%000002da"), 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(737, "%000002e1"), 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,64)))), -Def(Tid(773, "%00000305"), Attrs([Attr("address","0x89C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x89C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(785, "%00000311"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(779, "%0000030b"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(777, "%00000309"))), Goto(Tid(2_331, "%0000091b"), Attrs([]), - Int(1,1), Direct(Tid(1_303, "%00000517")))])), Blk(Tid(1_303, "%00000517"), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(749, "%000002ed"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(747, "%000002eb"))), Goto(Tid(2_189, "%0000088d"), Attrs([]), + Int(1,1), Direct(Tid(1_216, "%000004c0")))])), Blk(Tid(1_216, "%000004c0"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_315, "%00000523"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_226, "%000004ca"), 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)), -Def(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_320, "%00000528"), - Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), - Var("#70",Imm(1)), Direct(Tid(777, "%00000309"))), -Goto(Tid(2_332, "%0000091c"), Attrs([]), Int(1,1), -Direct(Tid(1_329, "%00000531")))])), Blk(Tid(777, "%00000309"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(747, "%000002eb"))), Goto(Tid(2_190, "%0000088e"), Attrs([]), + Int(1,1), Direct(Tid(1_235, "%000004d3")))])), Blk(Tid(747, "%000002eb"), Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(790, "%00000316"), Attrs([Attr("address","0x8B8"), +Jmps([Call(Tid(755, "%000002f3"), Attrs([Attr("address","0x8B8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_329, "%00000531"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x8B0"), +Blk(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8B0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8B4"), +Jmps([Call(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x8B4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_289, "@strlen"), +Sub(Tid(2_147, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_364, "%0000093c"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_222, "%000008ae"), 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_365, "%0000093d"), +In()), Arg(Tid(2_223, "%000008af"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_022, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(966, "@strlen"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_669, "%00000685"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_677, "%0000068d"), Attrs([Attr("address","0x774"), +Def(Tid(1_563, "%0000061b"), 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_684, "%00000694"), Attrs([Attr("address","0x778"), +Def(Tid(1_569, "%00000621"), 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_689, "%00000699"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_574, "%00000626"), 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir index e1fe07e4d..546f63944 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir @@ -1,359 +1,352 @@ -0000091d: program -000008d6: sub __cxa_finalize(__cxa_finalize_result) -0000091e: __cxa_finalize_result :: out u32 = low:32[R0] - -00000513: -000006b7: R16 := 0x20000 -000006bf: R17 := mem[R16 + 0x18, el]:u64 -000006c6: R16 := R16 + 0x18 -000006cb: call R17 with noreturn - -000008d7: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000091f: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -0000031a: -00000321: #34 := R31 - 0x20 -00000326: mem := mem with [#34, el]:u64 <- R29 -0000032b: mem := mem with [#34 + 8, el]:u64 <- R30 -0000032f: R31 := #34 -00000336: R29 := R31 -0000033e: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000344: R19 := 0x20000 -0000034d: R0 := pad:32[mem[R19 + 0x70]] -00000359: #36 := ~~0:0[R0] -00000353: when #36 goto %00000351 -00000913: goto %000004d1 - -000004d1: -000004d5: R0 := 0x1F000 -000004dd: R0 := mem[R0 + 0xFC8, el]:u64 -000004e9: #67 := R0 = 0 -000004e3: when #67 goto %000004e1 -00000914: goto %00000501 - -00000501: -00000505: R0 := 0x20000 -0000050d: R0 := mem[R0 + 0x58, el]:u64 -00000512: R30 := 0x8F0 -00000515: call @__cxa_finalize with return %000004e1 - -000004e1: -000004ee: R30 := 0x8F4 -000004f0: call @deregister_tm_clones with return %000004f2 - -000004f2: -000004f7: R0 := 1 -000004ff: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -00000915: goto %00000351 - -00000351: -00000361: R19 := mem[R31 + 0x10, el]:u64 -0000036b: R29 := mem[R31, el]:u64 -0000036f: R30 := mem[R31 + 8, el]:u64 -00000372: R31 := R31 + 0x20 -00000377: call R30 with noreturn - -000008db: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000920: __libc_start_main_main :: in u64 = R0 -00000921: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000922: __libc_start_main_arg3 :: in out u64 = R2 -00000923: __libc_start_main_auxv :: in out u64 = R3 -00000924: __libc_start_main_result :: out u32 = low:32[R0] - -0000025e: -0000069e: R16 := 0x20000 -000006a6: R17 := mem[R16 + 0x10, el]:u64 -000006ad: R16 := R16 + 0x10 -000006b2: call R17 with noreturn - -000008dc: sub _fini(_fini_result) -00000925: _fini_result :: out u32 = low:32[R0] +0000088f: program +00000848: sub __cxa_finalize(__cxa_finalize_result) +00000890: __cxa_finalize_result :: out u32 = low:32[R0] + +000004bc: +00000640: R16 := 0x20000 +00000647: R17 := mem[R16 + 0x18, el]:u64 +0000064d: R16 := R16 + 0x18 +00000652: call R17 with noreturn + +00000849: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000891: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002f7: +000002fb: #3 := R31 - 0x20 +00000301: mem := mem with [#3, el]:u64 <- R29 +00000307: mem := mem with [#3 + 8, el]:u64 <- R30 +0000030b: R31 := #3 +00000311: R29 := R31 +00000319: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000031e: R19 := 0x20000 +00000325: R0 := pad:64[mem[R19 + 0x70]] +0000032b: when 0:0[R0] goto %00000329 +00000885: goto %00000485 + +00000485: +00000488: R0 := 0x1F000 +0000048f: R0 := mem[R0 + 0xFC8, el]:u64 +00000495: when R0 = 0 goto %00000493 +00000886: goto %000004ac + +000004ac: +000004af: R0 := 0x20000 +000004b6: R0 := mem[R0 + 0x58, el]:u64 +000004bb: R30 := 0x8F0 +000004be: call @__cxa_finalize with return %00000493 + +00000493: +0000049b: R30 := 0x8F4 +0000049d: call @deregister_tm_clones with return %0000049f + +0000049f: +000004a2: R0 := 1 +000004aa: mem := mem with [R19 + 0x70] <- 7:0[R0] +00000887: goto %00000329 + +00000329: +00000333: R19 := mem[R31 + 0x10, el]:u64 +0000033a: R29 := mem[R31, el]:u64 +0000033f: R30 := mem[R31 + 8, el]:u64 +00000343: R31 := R31 + 0x20 +00000348: call R30 with noreturn + +0000084d: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000892: __libc_start_main_main :: in u64 = R0 +00000893: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000894: __libc_start_main_arg3 :: in out u64 = R2 +00000895: __libc_start_main_auxv :: in out u64 = R3 +00000896: __libc_start_main_result :: out u32 = low:32[R0] + +00000250: +0000062a: R16 := 0x20000 +00000631: R17 := mem[R16 + 0x10, el]:u64 +00000637: R16 := R16 + 0x10 +0000063c: call R17 with noreturn + +0000084e: sub _fini(_fini_result) +00000897: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -000008dd: sub _init(_init_result) -00000926: _init_result :: out u32 = low:32[R0] - -000007f3: -000007fc: #98 := R31 - 0x10 -00000801: mem := mem with [#98, el]:u64 <- R29 -00000806: mem := mem with [#98 + 8, el]:u64 <- R30 -0000080a: R31 := #98 -00000811: R29 := R31 -00000816: R30 := 0x738 -00000818: call @call_weak_fn with return %0000081a - -0000081a: -00000822: R29 := mem[R31, el]:u64 -00000826: R30 := mem[R31 + 8, el]:u64 -00000829: R31 := R31 + 0x10 -0000082e: call R30 with noreturn - -000008de: sub _start(_start_result) -00000927: _start_result :: out u32 = low:32[R0] - -00000214: -0000021a: R29 := 0 -00000220: R30 := 0 -00000228: R5 := R0 -00000230: R1 := mem[R31, el]:u64 -00000237: R2 := R31 + 8 -0000023e: R6 := R31 -00000244: R0 := 0x1F000 -0000024c: R0 := mem[R0 + 0xFD8, el]:u64 -00000252: R3 := 0 -00000258: R4 := 0 -0000025d: R30 := 0x830 -00000260: call @__libc_start_main with return %00000262 - -00000262: -00000265: R30 := 0x834 -00000268: call @abort with return %00000916 - -00000916: -00000917: call @call_weak_fn with noreturn - -000008e1: sub abort() - - -00000266: -0000071b: R16 := 0x20000 -00000723: R17 := mem[R16 + 0x38, el]:u64 -0000072a: R16 := R16 + 0x38 -0000072f: call R17 with noreturn - -000008e2: sub call_weak_fn(call_weak_fn_result) -00000928: call_weak_fn_result :: out u32 = low:32[R0] +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 + +0000084f: sub _init(_init_result) +00000898: _init_result :: out u32 = low:32[R0] + +00000768: +0000076e: #7 := R31 - 0x10 +00000774: mem := mem with [#7, el]:u64 <- R29 +0000077a: mem := mem with [#7 + 8, el]:u64 <- R30 +0000077e: R31 := #7 +00000784: R29 := R31 +00000789: R30 := 0x738 +0000078b: call @call_weak_fn with return %0000078d + +0000078d: +00000792: R29 := mem[R31, el]:u64 +00000797: R30 := mem[R31 + 8, el]:u64 +0000079b: R31 := R31 + 0x10 +000007a0: call R30 with noreturn + +00000850: sub _start(_start_result) +00000899: _start_result :: out u32 = low:32[R0] + +00000211: +00000216: R29 := 0 +0000021b: R30 := 0 +00000221: R5 := R0 +00000228: R1 := mem[R31, el]:u64 +0000022e: R2 := R31 + 8 +00000234: R6 := R31 +00000239: R0 := 0x1F000 +00000240: R0 := mem[R0 + 0xFD8, el]:u64 +00000245: R3 := 0 +0000024a: R4 := 0 +0000024f: R30 := 0x830 +00000252: call @__libc_start_main with return %00000254 + +00000254: +00000257: R30 := 0x834 +0000025a: call @abort with return %00000888 + +00000888: +00000889: call @call_weak_fn with noreturn + +00000853: sub abort() + + +00000258: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x38, el]:u64 +000006a5: R16 := R16 + 0x38 +000006aa: call R17 with noreturn + +00000854: sub call_weak_fn(call_weak_fn_result) +0000089a: call_weak_fn_result :: out u32 = low:32[R0] + +0000025c: +0000025f: R0 := 0x1F000 +00000266: R0 := mem[R0 + 0xFD0, el]:u64 +0000026c: when R0 = 0 goto %0000026a +0000088a: goto %000004fc 0000026a: -0000026e: R0 := 0x1F000 -00000276: R0 := mem[R0 + 0xFD0, el]:u64 -00000282: #12 := R0 = 0 -0000027c: when #12 goto %0000027a -00000918: goto %00000565 - -0000027a: -00000287: call R30 with noreturn - -00000565: -00000568: goto @__gmon_start__ - -00000566: -00000702: R16 := 0x20000 -0000070a: R17 := mem[R16 + 0x30, el]:u64 -00000711: R16 := R16 + 0x30 -00000716: call R17 with noreturn - -000008e4: sub deregister_tm_clones(deregister_tm_clones_result) -00000929: deregister_tm_clones_result :: out u32 = low:32[R0] - -0000028d: -00000291: R0 := 0x20000 -00000298: R0 := R0 + 0x70 -0000029e: R1 := 0x20000 -000002a5: R1 := R1 + 0x70 -000002ad: #16 := 1 + ~R0 + R1 -000002b1: NF := 63:63[#16] -000002b4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002b7: ZF := #16 = 0 -000002ba: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002c8: #21 := ZF -000002c2: when #21 goto %000002c0 -00000919: goto %0000053e - -0000053e: -00000542: R1 := 0x1F000 -0000054a: R1 := mem[R1 + 0xFC0, el]:u64 -00000555: #75 := R1 = 0 -0000054f: when #75 goto %000002c0 -0000091a: goto %00000558 - -000002c0: -000002cd: call R30 with noreturn - -00000558: -0000055e: R16 := R1 -00000563: call R16 with noreturn - -000008e7: sub frame_dummy(frame_dummy_result) -0000092a: frame_dummy_result :: out u32 = low:32[R0] - -0000037d: -0000037f: call @register_tm_clones with noreturn - -000008e8: sub free(free_ptr) -0000092b: free_ptr :: in out u64 = R0 - -000004ab: -0000074d: R16 := 0x20000 -00000755: R17 := mem[R16 + 0x48, el]:u64 -0000075c: R16 := R16 + 0x48 -00000761: call R17 with noreturn - -000008e9: sub main(main_argc, main_argv, main_result) -0000092c: main_argc :: in u32 = low:32[R0] -0000092d: main_argv :: in out u64 = R1 -0000092e: main_result :: out u32 = low:32[R0] - -00000381: -00000386: R31 := R31 - 0x40 -0000038e: #42 := R31 + 0x30 -00000393: mem := mem with [#42, el]:u64 <- R29 -00000398: mem := mem with [#42 + 8, el]:u64 <- R30 -0000039f: R29 := R31 + 0x30 -000003a7: mem := mem with [R29 - 8, el]:u64 <- 0 -000003af: mem := mem with [R29 - 0x10, el]:u64 <- 0 -000003b5: R0 := 0xB -000003ba: R30 := 0x930 -000003bd: call @malloc with return %000003bf - -000003bf: -000003c3: R8 := 0x20000 -000003cb: mem := mem with [R31 + 0x18, el]:u64 <- R8 -000003d3: mem := mem with [R8 + 0x78, el]:u64 <- R0 -000003db: R8 := mem[R8 + 0x78, el]:u64 -000003e3: mem := mem with [R31 + 8, el]:u64 <- R8 -000003e9: R0 := 0x20000 -000003f0: R0 := R0 + 0x61 -000003f8: mem := mem with [R31, el]:u64 <- R0 -000003fd: R30 := 0x954 -00000400: call @strlen with return %00000402 - -00000402: -00000408: R1 := mem[R31, el]:u64 -00000410: R2 := R0 -00000418: R0 := mem[R31 + 8, el]:u64 -0000041d: R30 := 0x964 -00000420: call @memcpy with return %00000422 - -00000422: -00000428: R8 := mem[R31 + 0x18, el]:u64 -00000430: R0 := mem[R8 + 0x78, el]:u64 -00000435: R30 := 0x970 -00000438: call @puts with return %0000043a - -0000043a: -00000440: R8 := mem[R31 + 0x18, el]:u64 -00000448: R9 := mem[R8 + 0x78, el]:u64 -0000044f: R9 := R9 + 4 -00000457: mem := mem with [R29 - 8, el]:u64 <- R9 -0000045f: R9 := mem[R8 + 0x78, el]:u64 -00000467: mem := mem with [R31 + 0x10, el]:u64 <- R9 -0000046f: R0 := mem[R8 + 0x78, el]:u64 -00000474: R30 := 0x990 -00000476: call @strlen with return %00000478 - -00000478: -0000047e: R2 := R0 -00000486: R0 := mem[R31 + 0x10, el]:u64 -0000048d: R1 := 1 -00000492: R30 := 0x9A0 -00000495: call @memset with return %00000497 - -00000497: -0000049d: R8 := mem[R31 + 0x18, el]:u64 -000004a5: R0 := mem[R8 + 0x78, el]:u64 -000004aa: R30 := 0x9AC -000004ad: call @free with return %000004af - -000004af: -000004b6: R0 := 0 -000004bf: R29 := mem[R31 + 0x30, el]:u64 -000004c3: R30 := mem[R31 + 0x38, el]:u64 -000004ca: R31 := R31 + 0x40 -000004cf: call R30 with noreturn - -000008ea: sub malloc(malloc_size, malloc_result) -0000092f: malloc_size :: in u64 = R0 -00000930: malloc_result :: out u64 = R0 - -000003bb: -000006d0: R16 := 0x20000 -000006d8: R17 := mem[R16 + 0x20, el]:u64 -000006df: R16 := R16 + 0x20 -000006e4: call R17 with noreturn - -000008eb: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000931: memcpy_dst :: in out u64 = R0 -00000932: memcpy_src :: in out u64 = R1 -00000933: memcpy_n :: in u64 = R2 -00000934: memcpy_result :: out u64 = R0 - -0000041e: +00000272: call R30 with noreturn + +000004fc: +000004ff: goto @__gmon_start__ + +000004fd: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x30, el]:u64 +0000068f: R16 := R16 + 0x30 +00000694: call R17 with noreturn + +00000856: sub deregister_tm_clones(deregister_tm_clones_result) +0000089b: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000278: +0000027b: R0 := 0x20000 +00000281: R0 := R0 + 0x70 +00000286: R1 := 0x20000 +0000028c: R1 := R1 + 0x70 +00000292: #1 := ~R0 +00000297: #2 := R1 + ~R0 +0000029d: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002a3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002a7: ZF := #2 + 1 = 0 +000002ab: NF := 63:63[#2 + 1] +000002b1: when ZF goto %000002af +0000088b: goto %000004de + +000004de: +000004e1: R1 := 0x1F000 +000004e8: R1 := mem[R1 + 0xFC0, el]:u64 +000004ed: when R1 = 0 goto %000002af +0000088c: goto %000004f1 + +000002af: +000002b7: call R30 with noreturn + +000004f1: +000004f5: R16 := R1 +000004fa: call R16 with noreturn + +00000859: sub frame_dummy(frame_dummy_result) +0000089c: frame_dummy_result :: out u32 = low:32[R0] + +0000034e: +00000350: call @register_tm_clones with noreturn + +0000085a: sub free(free_ptr) +0000089d: free_ptr :: in out u64 = R0 + +00000461: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x48, el]:u64 +000006d1: R16 := R16 + 0x48 +000006d6: call R17 with noreturn + +0000085b: sub main(main_argc, main_argv, main_result) +0000089e: main_argc :: in u32 = low:32[R0] +0000089f: main_argv :: in out u64 = R1 +000008a0: main_result :: out u32 = low:32[R0] + +00000352: +00000356: R31 := R31 - 0x40 +0000035c: #4 := R31 + 0x30 +00000362: mem := mem with [#4, el]:u64 <- R29 +00000368: mem := mem with [#4 + 8, el]:u64 <- R30 +0000036e: R29 := R31 + 0x30 +00000375: mem := mem with [R29 - 8, el]:u64 <- 0 +0000037c: mem := mem with [R29 - 0x10, el]:u64 <- 0 +00000381: R0 := 0xB +00000386: R30 := 0x930 +00000389: call @malloc with return %0000038b + +0000038b: +0000038e: R8 := 0x20000 +00000396: mem := mem with [R31 + 0x18, el]:u64 <- R8 +0000039e: mem := mem with [R8 + 0x78, el]:u64 <- R0 +000003a5: R8 := mem[R8 + 0x78, el]:u64 +000003ad: mem := mem with [R31 + 8, el]:u64 <- R8 +000003b2: R0 := 0x20000 +000003b8: R0 := R0 + 0x61 +000003c0: mem := mem with [R31, el]:u64 <- R0 +000003c5: R30 := 0x954 +000003c8: call @strlen with return %000003ca + +000003ca: +000003cf: R1 := mem[R31, el]:u64 +000003d5: R2 := R0 +000003dc: R0 := mem[R31 + 8, el]:u64 +000003e1: R30 := 0x964 +000003e4: call @memcpy with return %000003e6 + +000003e6: +000003eb: R8 := mem[R31 + 0x18, el]:u64 +000003f2: R0 := mem[R8 + 0x78, el]:u64 +000003f7: R30 := 0x970 +000003fa: call @puts with return %000003fc + +000003fc: +00000401: R8 := mem[R31 + 0x18, el]:u64 +00000408: R9 := mem[R8 + 0x78, el]:u64 +0000040e: R9 := R9 + 4 +00000416: mem := mem with [R29 - 8, el]:u64 <- R9 +0000041d: R9 := mem[R8 + 0x78, el]:u64 +00000425: mem := mem with [R31 + 0x10, el]:u64 <- R9 +0000042c: R0 := mem[R8 + 0x78, el]:u64 +00000431: R30 := 0x990 +00000433: call @strlen with return %00000435 + +00000435: +00000439: R2 := R0 +00000440: R0 := mem[R31 + 0x10, el]:u64 +00000445: R1 := 1 +0000044a: R30 := 0x9A0 +0000044d: call @memset with return %0000044f + +0000044f: +00000454: R8 := mem[R31 + 0x18, el]:u64 +0000045b: R0 := mem[R8 + 0x78, el]:u64 +00000460: R30 := 0x9AC +00000463: call @free with return %00000465 + +00000465: +00000468: R0 := 0 +0000046e: #5 := R31 + 0x30 +00000473: R29 := mem[#5, el]:u64 +00000478: R30 := mem[#5 + 8, el]:u64 +0000047e: R31 := R31 + 0x40 +00000483: call R30 with noreturn + +0000085c: sub malloc(malloc_size, malloc_result) +000008a1: malloc_size :: in u64 = R0 +000008a2: malloc_result :: out u64 = R0 + +00000387: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16 + 0x20, el]:u64 +00000663: R16 := R16 + 0x20 +00000668: call R17 with noreturn + +0000085d: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008a3: memcpy_dst :: in out u64 = R0 +000008a4: memcpy_src :: in out u64 = R1 +000008a5: memcpy_n :: in u64 = R2 +000008a6: memcpy_result :: out u64 = R0 + +000003e2: +000005fe: R16 := 0x20000 +00000605: R17 := mem[R16, el]:u64 +0000060b: R16 := R16 +00000610: call R17 with noreturn + +0000085e: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008a7: memset_buf :: in out u64 = R0 +000008a8: memset_c :: in u32 = low:32[R1] +000008a9: memset_n :: in u64 = R2 +000008aa: memset_result :: out u64 = R0 + +0000044b: 0000066c: R16 := 0x20000 -00000674: R17 := mem[R16, el]:u64 -0000067b: R16 := R16 -00000680: call R17 with noreturn - -000008ec: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000935: memset_buf :: in out u64 = R0 -00000936: memset_c :: in u32 = low:32[R1] -00000937: memset_n :: in u64 = R2 -00000938: memset_result :: out u64 = R0 - -00000493: -000006e9: R16 := 0x20000 -000006f1: R17 := mem[R16 + 0x28, el]:u64 -000006f8: R16 := R16 + 0x28 -000006fd: call R17 with noreturn - -000008ed: sub puts(puts_s, puts_result) -00000939: puts_s :: in u64 = R0 -0000093a: puts_result :: out u32 = low:32[R0] - -00000436: -00000734: R16 := 0x20000 -0000073c: R17 := mem[R16 + 0x40, el]:u64 -00000743: R16 := R16 + 0x40 -00000748: call R17 with noreturn - -000008ee: sub register_tm_clones(register_tm_clones_result) -0000093b: register_tm_clones_result :: out u32 = low:32[R0] - -000002cf: -000002d3: R0 := 0x20000 -000002da: R0 := R0 + 0x70 -000002e0: R1 := 0x20000 -000002e7: R1 := R1 + 0x70 -000002ef: R1 := R1 - R0 -000002f6: R2 := R1 >> 0x3F -000002fe: R1 := R2 + (R1 ~>> 3) -00000305: R1 := R1 >> 1 -00000311: #30 := R1 = 0 -0000030b: when #30 goto %00000309 -0000091b: goto %00000517 - -00000517: -0000051b: R2 := 0x1F000 -00000523: R2 := mem[R2 + 0xFE0, el]:u64 -0000052e: #70 := R2 = 0 -00000528: when #70 goto %00000309 -0000091c: goto %00000531 - -00000309: -00000316: call R30 with noreturn - -00000531: -00000537: R16 := R2 -0000053c: call R16 with noreturn - -000008f1: sub strlen(strlen_s, strlen_result) -0000093c: strlen_s :: in u64 = R0 -0000093d: strlen_result :: out u64 = R0 - -000003fe: -00000685: R16 := 0x20000 -0000068d: R17 := mem[R16 + 8, el]:u64 -00000694: R16 := R16 + 8 -00000699: call R17 with noreturn +00000673: R17 := mem[R16 + 0x28, el]:u64 +00000679: R16 := R16 + 0x28 +0000067e: call R17 with noreturn + +0000085f: sub puts(puts_s, puts_result) +000008ab: puts_s :: in u64 = R0 +000008ac: puts_result :: out u32 = low:32[R0] + +000003f8: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x40, el]:u64 +000006bb: R16 := R16 + 0x40 +000006c0: call R17 with noreturn + +00000860: sub register_tm_clones(register_tm_clones_result) +000008ad: register_tm_clones_result :: out u32 = low:32[R0] + +000002b9: +000002bc: R0 := 0x20000 +000002c2: R0 := R0 + 0x70 +000002c7: R1 := 0x20000 +000002cd: R1 := R1 + 0x70 +000002d4: R1 := R1 + ~R0 + 1 +000002da: R2 := 0.63:63[R1] +000002e1: R1 := R2 + (R1 ~>> 3) +000002e7: R1 := extend:64[63:1[R1]] +000002ed: when R1 = 0 goto %000002eb +0000088d: goto %000004c0 + +000004c0: +000004c3: R2 := 0x1F000 +000004ca: R2 := mem[R2 + 0xFE0, el]:u64 +000004cf: when R2 = 0 goto %000002eb +0000088e: goto %000004d3 + +000002eb: +000002f3: call R30 with noreturn + +000004d3: +000004d7: R16 := R2 +000004dc: call R16 with noreturn + +00000863: sub strlen(strlen_s, strlen_result) +000008ae: strlen_s :: in u64 = R0 +000008af: strlen_result :: out u64 = R0 + +000003c6: +00000614: R16 := 0x20000 +0000061b: R17 := mem[R16 + 8, el]:u64 +00000621: R16 := R16 + 8 +00000626: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt index 79ad8ab17..8f91289fb 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt @@ -69,713 +69,699 @@ Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), Annotation(Region(0x840,0xA03), Attr("section","\".text\"")), Annotation(Region(0x840,0xA03), Attr("code-region","()")), Annotation(Region(0xA04,0xA17), Attr("code-region","()"))]), -Program(Tid(2_242, "%000008c2"), Attrs([]), - Subs([Sub(Tid(2_171, "@__cxa_finalize"), +Program(Tid(2_098, "%00000832"), Attrs([]), + Subs([Sub(Tid(2_027, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_243, "%000008c3"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_099, "%00000833"), 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_324, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_235, "@__cxa_finalize"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x7C0"), +Defs([Def(Tid(1_623, "%00000657"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x7C4"), +Def(Tid(1_630, "%0000065e"), Attrs([Attr("address","0x7C4"), 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_759, "%000006df"), Attrs([Attr("address","0x7C8"), +Def(Tid(1_636, "%00000664"), Attrs([Attr("address","0x7C8"), Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_764, "%000006e4"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_641, "%00000669"), Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_172, "@__do_global_dtors_aux"), +Sub(Tid(2_028, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_244, "%000008c4"), + "__do_global_dtors_aux", Args([Arg(Tid(2_100, "%00000834"), 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(802, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x900")]), Phis([]), Defs([Def(Tid(809, "%00000329"), +Blks([Blk(Tid(767, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x900")]), Phis([]), Defs([Def(Tid(771, "%00000303"), Attrs([Attr("address","0x900"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x900"), +Def(Tid(777, "%00000309"), Attrs([Attr("address","0x900"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(819, "%00000333"), Attrs([Attr("address","0x900"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x900"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(823, "%00000337"), Attrs([Attr("address","0x900"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(787, "%00000313"), Attrs([Attr("address","0x900"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(830, "%0000033e"), +Var("#3",Imm(64))), Def(Tid(793, "%00000319"), Attrs([Attr("address","0x904"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(838, "%00000346"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(801, "%00000321"), Attrs([Attr("address","0x908"), 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(844, "%0000034c"), Attrs([Attr("address","0x90C"), +Def(Tid(806, "%00000326"), Attrs([Attr("address","0x90C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(853, "%00000355"), Attrs([Attr("address","0x910"), +Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x910"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(865, "%00000361"), Attrs([Attr("address","0x914"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(859, "%0000035b"), Attrs([Attr("address","0x914"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(857, "%00000359"))), Goto(Tid(2_232, "%000008b8"), Attrs([]), - Int(1,1), Direct(Tid(1_258, "%000004ea")))])), Blk(Tid(1_258, "%000004ea"), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(819, "%00000333"), Attrs([Attr("address","0x914"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(817, "%00000331"))), +Goto(Tid(2_088, "%00000828"), Attrs([]), Int(1,1), +Direct(Tid(1_180, "%0000049c")))])), Blk(Tid(1_180, "%0000049c"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x918"), +Defs([Def(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x918"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x91C"), +Def(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x91C"), Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64)), -Def(Tid(1_282, "%00000502"), Attrs([Attr("address","0x920"), -Attr("insn","cbz x0, #0x10")]), Var("#70",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_276, "%000004fc"), - Attrs([Attr("address","0x920"), Attr("insn","cbz x0, #0x10")]), - Var("#70",Imm(1)), Direct(Tid(1_274, "%000004fa"))), -Goto(Tid(2_233, "%000008b9"), Attrs([]), Int(1,1), -Direct(Tid(1_306, "%0000051a")))])), Blk(Tid(1_306, "%0000051a"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x920"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_194, "%000004aa"))), Goto(Tid(2_089, "%00000829"), Attrs([]), + Int(1,1), Direct(Tid(1_219, "%000004c3")))])), Blk(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x924"), +Defs([Def(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x924"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_318, "%00000526"), Attrs([Attr("address","0x928"), +Def(Tid(1_229, "%000004cd"), Attrs([Attr("address","0x928"), 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_323, "%0000052b"), Attrs([Attr("address","0x92C"), +Def(Tid(1_234, "%000004d2"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x92C"), +Jmps([Call(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_171, "@__cxa_finalize")),Direct(Tid(1_274, "%000004fa"))))])), -Blk(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_287, "%00000507"), Attrs([Attr("address","0x930"), +(Direct(Tid(2_027, "@__cxa_finalize")),Direct(Tid(1_194, "%000004aa"))))])), +Blk(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x930"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2356,64))]), -Jmps([Call(Tid(1_289, "%00000509"), Attrs([Attr("address","0x930"), +Jmps([Call(Tid(1_204, "%000004b4"), Attrs([Attr("address","0x930"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_185, "@deregister_tm_clones")),Direct(Tid(1_291, "%0000050b"))))])), -Blk(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x934")]), Phis([]), -Defs([Def(Tid(1_296, "%00000510"), Attrs([Attr("address","0x934"), +(Direct(Tid(2_041, "@deregister_tm_clones")),Direct(Tid(1_206, "%000004b6"))))])), +Blk(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x934")]), Phis([]), +Defs([Def(Tid(1_209, "%000004b9"), Attrs([Attr("address","0x934"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_304, "%00000518"), Attrs([Attr("address","0x938"), +Def(Tid(1_217, "%000004c1"), Attrs([Attr("address","0x938"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_234, "%000008ba"), Attrs([]), Int(1,1), -Direct(Tid(857, "%00000359")))])), Blk(Tid(857, "%00000359"), - Attrs([Attr("address","0x93C")]), Phis([]), Defs([Def(Tid(873, "%00000369"), +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_090, "%0000082a"), Attrs([]), Int(1,1), +Direct(Tid(817, "%00000331")))])), Blk(Tid(817, "%00000331"), + Attrs([Attr("address","0x93C")]), Phis([]), Defs([Def(Tid(827, "%0000033b"), Attrs([Attr("address","0x93C"), 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(883, "%00000373"), Attrs([Attr("address","0x940"), +Def(Tid(834, "%00000342"), Attrs([Attr("address","0x940"), 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(887, "%00000377"), Attrs([Attr("address","0x940"), +Def(Tid(839, "%00000347"), Attrs([Attr("address","0x940"), 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(890, "%0000037a"), Attrs([Attr("address","0x940"), +Def(Tid(843, "%0000034b"), Attrs([Attr("address","0x940"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(895, "%0000037f"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x944"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_176, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_032, "@__libc_start_main"), Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), Attr("address","0x7B0"), Attr("stub","()")]), "__libc_start_main", - Args([Arg(Tid(2_245, "%000008c5"), + Args([Arg(Tid(2_101, "%00000835"), 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_246, "%000008c6"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_102, "%00000836"), 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_247, "%000008c7"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_103, "%00000837"), 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_248, "%000008c8"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_104, "%00000838"), 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_249, "%000008c9"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_105, "%00000839"), 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(614, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(600, "@__libc_start_main"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_719, "%000006b7"), Attrs([Attr("address","0x7B0"), +Defs([Def(Tid(1_601, "%00000641"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x7B4"), +Def(Tid(1_608, "%00000648"), Attrs([Attr("address","0x7B4"), 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_734, "%000006c6"), Attrs([Attr("address","0x7B8"), +Def(Tid(1_614, "%0000064e"), Attrs([Attr("address","0x7B8"), Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_739, "%000006cb"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_619, "%00000653"), Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_177, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_033, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0xA04")]), - "_fini", Args([Arg(Tid(2_250, "%000008ca"), + "_fini", Args([Arg(Tid(2_106, "%0000083a"), 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","0xA04")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0xA04")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0xA08"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0xA08"), +Def(Tid(44, "%0000002c"), Attrs([Attr("address","0xA08"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0xA08"), +Store(Var("mem",Mem(64,8)),Var("#0",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(50, "%00000032"), Attrs([Attr("address","0xA08"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0xA08"), +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","0xA08"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0xA0C"), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0xA0C"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0xA10"), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0xA10"), 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(76, "%0000004c"), Attrs([Attr("address","0xA10"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0xA10"), 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(79, "%0000004f"), Attrs([Attr("address","0xA10"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0xA10"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), Attrs([Attr("address","0xA14"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_178, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_034, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x758")]), - "_init", Args([Arg(Tid(2_251, "%000008cb"), + "_init", Args([Arg(Tid(2_107, "%0000083b"), 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_942, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_801, "@_init"), Attrs([Attr("address","0x758")]), Phis([]), -Defs([Def(Tid(1_951, "%0000079f"), Attrs([Attr("address","0x75C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#101",Imm(64)), +Defs([Def(Tid(1_807, "%0000070f"), Attrs([Attr("address","0x75C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_956, "%000007a4"), Attrs([Attr("address","0x75C"), +Def(Tid(1_813, "%00000715"), Attrs([Attr("address","0x75C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#101",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_961, "%000007a9"), Attrs([Attr("address","0x75C"), +Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x75C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#101",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_965, "%000007ad"), Attrs([Attr("address","0x75C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_823, "%0000071f"), Attrs([Attr("address","0x75C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#101",Imm(64))), Def(Tid(1_972, "%000007b4"), +Var("#7",Imm(64))), Def(Tid(1_829, "%00000725"), Attrs([Attr("address","0x760"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_977, "%000007b9"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_834, "%0000072a"), Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1896,64))]), Jmps([Call(Tid(1_979, "%000007bb"), + Var("R30",Imm(64)), Int(1896,64))]), Jmps([Call(Tid(1_836, "%0000072c"), Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_183, "@call_weak_fn")),Direct(Tid(1_981, "%000007bd"))))])), -Blk(Tid(1_981, "%000007bd"), Attrs([Attr("address","0x768")]), Phis([]), -Defs([Def(Tid(1_989, "%000007c5"), Attrs([Attr("address","0x768"), +(Direct(Tid(2_039, "@call_weak_fn")),Direct(Tid(1_838, "%0000072e"))))])), +Blk(Tid(1_838, "%0000072e"), Attrs([Attr("address","0x768")]), Phis([]), +Defs([Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x768"), 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_993, "%000007c9"), Attrs([Attr("address","0x768"), +Def(Tid(1_848, "%00000738"), Attrs([Attr("address","0x768"), 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_996, "%000007cc"), Attrs([Attr("address","0x768"), +Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x768"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_001, "%000007d1"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_857, "%00000741"), Attrs([Attr("address","0x76C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_179, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_035, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_252, "%000008cc"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_108, "%0000083c"), 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(540, "@_start"), - Attrs([Attr("address","0x840")]), Phis([]), Defs([Def(Tid(546, "%00000222"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(537, "@_start"), + Attrs([Attr("address","0x840")]), Phis([]), Defs([Def(Tid(542, "%0000021e"), Attrs([Attr("address","0x844"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(552, "%00000228"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(547, "%00000223"), Attrs([Attr("address","0x848"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(560, "%00000230"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(553, "%00000229"), Attrs([Attr("address","0x84C"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(568, "%00000238"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(560, "%00000230"), Attrs([Attr("address","0x850"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(575, "%0000023f"), Attrs([Attr("address","0x854"), +Def(Tid(566, "%00000236"), Attrs([Attr("address","0x854"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(582, "%00000246"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(572, "%0000023c"), Attrs([Attr("address","0x858"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(588, "%0000024c"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(577, "%00000241"), Attrs([Attr("address","0x85C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(596, "%00000254"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(584, "%00000248"), Attrs([Attr("address","0x860"), 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(602, "%0000025a"), Attrs([Attr("address","0x864"), +Def(Tid(589, "%0000024d"), Attrs([Attr("address","0x864"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(608, "%00000260"), Attrs([Attr("address","0x868"), +Def(Tid(594, "%00000252"), Attrs([Attr("address","0x868"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(613, "%00000265"), Attrs([Attr("address","0x86C"), +Def(Tid(599, "%00000257"), Attrs([Attr("address","0x86C"), Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2160,64))]), -Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x86C"), +Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x86C"), Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_176, "@__libc_start_main")),Direct(Tid(618, "%0000026a"))))])), -Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x870"), +(Direct(Tid(2_032, "@__libc_start_main")),Direct(Tid(604, "%0000025c"))))])), +Blk(Tid(604, "%0000025c"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x870"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2164,64))]), -Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x870"), +Jmps([Call(Tid(610, "%00000262"), Attrs([Attr("address","0x870"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_182, "@abort")),Direct(Tid(2_235, "%000008bb"))))])), -Blk(Tid(2_235, "%000008bb"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_236, "%000008bc"), Attrs([]), Int(1,1), -(Direct(Tid(2_183, "@call_weak_fn")),))]))])), Sub(Tid(2_182, "@abort"), +(Direct(Tid(2_038, "@abort")),Direct(Tid(2_091, "%0000082b"))))])), +Blk(Tid(2_091, "%0000082b"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_092, "%0000082c"), Attrs([]), Int(1,1), +(Direct(Tid(2_039, "@call_weak_fn")),))]))])), Sub(Tid(2_038, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x800"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(622, "@abort"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x800"), +Blks([Blk(Tid(608, "@abort"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(1_711, "%000006af"), Attrs([Attr("address","0x800"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x804"), +Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x804"), 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_859, "%00000743"), Attrs([Attr("address","0x808"), +Def(Tid(1_724, "%000006bc"), Attrs([Attr("address","0x808"), Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_864, "%00000748"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_729, "%000006c1"), Attrs([Attr("address","0x80C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_183, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_039, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x874")]), - "call_weak_fn", Args([Arg(Tid(2_253, "%000008cd"), + "call_weak_fn", Args([Arg(Tid(2_109, "%0000083d"), 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(626, "@call_weak_fn"), - Attrs([Attr("address","0x874")]), Phis([]), Defs([Def(Tid(630, "%00000276"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(612, "@call_weak_fn"), + Attrs([Attr("address","0x874")]), Phis([]), Defs([Def(Tid(615, "%00000267"), Attrs([Attr("address","0x874"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(638, "%0000027e"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(622, "%0000026e"), Attrs([Attr("address","0x878"), Attr("insn","ldr x0, [x0, #0xfc0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64)), -Def(Tid(650, "%0000028a"), Attrs([Attr("address","0x87C"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(644, "%00000284"), - Attrs([Attr("address","0x87C"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(642, "%00000282"))), -Goto(Tid(2_237, "%000008bd"), Attrs([]), Int(1,1), -Direct(Tid(1_406, "%0000057e")))])), Blk(Tid(642, "%00000282"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(628, "%00000274"), Attrs([Attr("address","0x87C"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(626, "%00000272"))), Goto(Tid(2_093, "%0000082d"), Attrs([]), + Int(1,1), Direct(Tid(1_299, "%00000513")))])), Blk(Tid(626, "%00000272"), Attrs([Attr("address","0x884")]), Phis([]), Defs([]), -Jmps([Call(Tid(655, "%0000028f"), Attrs([Attr("address","0x884"), +Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x884"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_406, "%0000057e"), Attrs([Attr("address","0x880")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_409, "%00000581"), Attrs([Attr("address","0x880"), +Blk(Tid(1_299, "%00000513"), Attrs([Attr("address","0x880")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_302, "%00000516"), Attrs([Attr("address","0x880"), Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_407, "@__gmon_start__")))])), Blk(Tid(1_407, "@__gmon_start__"), +Direct(Tid(1_300, "@__gmon_start__")))])), Blk(Tid(1_300, "@__gmon_start__"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x7F0"), +Defs([Def(Tid(1_689, "%00000699"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x7F4"), +Def(Tid(1_696, "%000006a0"), Attrs([Attr("address","0x7F4"), 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_834, "%0000072a"), Attrs([Attr("address","0x7F8"), +Def(Tid(1_702, "%000006a6"), Attrs([Attr("address","0x7F8"), Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_839, "%0000072f"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_707, "%000006ab"), Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_185, "@deregister_tm_clones"), +Sub(Tid(2_041, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x890")]), - "deregister_tm_clones", Args([Arg(Tid(2_254, "%000008ce"), + "deregister_tm_clones", Args([Arg(Tid(2_110, "%0000083e"), 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(661, "@deregister_tm_clones"), - Attrs([Attr("address","0x890")]), Phis([]), Defs([Def(Tid(665, "%00000299"), +Blks([Blk(Tid(640, "@deregister_tm_clones"), + Attrs([Attr("address","0x890")]), Phis([]), Defs([Def(Tid(643, "%00000283"), Attrs([Attr("address","0x890"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(672, "%000002a0"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(649, "%00000289"), Attrs([Attr("address","0x894"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x898"), +Def(Tid(654, "%0000028e"), Attrs([Attr("address","0x898"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x89C"), +Def(Tid(660, "%00000294"), Attrs([Attr("address","0x89C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(693, "%000002b5"), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(666, "%0000029a"), Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x8A0"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(700, "%000002bc"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(671, "%0000029f"), Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x8A0"), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(677, "%000002a5"), Attrs([Attr("address","0x8A0"), +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(683, "%000002ab"), Attrs([Attr("address","0x8A0"), +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(687, "%000002af"), Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(706, "%000002c2"), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(691, "%000002b3"), Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x8A4"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(714, "%000002ca"), Attrs([Attr("address","0x8A4"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(712, "%000002c8"))), Goto(Tid(2_238, "%000008be"), Attrs([]), - Int(1,1), Direct(Tid(1_367, "%00000557")))])), Blk(Tid(1_367, "%00000557"), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(697, "%000002b9"), Attrs([Attr("address","0x8A4"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(695, "%000002b7"))), Goto(Tid(2_094, "%0000082e"), Attrs([]), + Int(1,1), Direct(Tid(1_269, "%000004f5")))])), Blk(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x8A8")]), Phis([]), -Defs([Def(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x8A8"), +Defs([Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x8A8"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_379, "%00000563"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x8AC"), Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64)), -Def(Tid(1_390, "%0000056e"), Attrs([Attr("address","0x8B0"), -Attr("insn","cbz x1, #0xc")]), Var("#78",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_384, "%00000568"), - Attrs([Attr("address","0x8B0"), Attr("insn","cbz x1, #0xc")]), - Var("#78",Imm(1)), Direct(Tid(712, "%000002c8"))), -Goto(Tid(2_239, "%000008bf"), Attrs([]), Int(1,1), -Direct(Tid(1_393, "%00000571")))])), Blk(Tid(712, "%000002c8"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_284, "%00000504"), Attrs([Attr("address","0x8B0"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(695, "%000002b7"))), Goto(Tid(2_095, "%0000082f"), Attrs([]), + Int(1,1), Direct(Tid(1_288, "%00000508")))])), Blk(Tid(695, "%000002b7"), Attrs([Attr("address","0x8BC")]), Phis([]), Defs([]), -Jmps([Call(Tid(725, "%000002d5"), Attrs([Attr("address","0x8BC"), +Jmps([Call(Tid(703, "%000002bf"), Attrs([Attr("address","0x8BC"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_393, "%00000571"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_399, "%00000577"), Attrs([Attr("address","0x8B4"), +Blk(Tid(1_288, "%00000508"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x8B4"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_404, "%0000057c"), Attrs([Attr("address","0x8B8"), +Jmps([Call(Tid(1_297, "%00000511"), Attrs([Attr("address","0x8B8"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_188, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x950")]), "frame_dummy", Args([Arg(Tid(2_255, "%000008cf"), +Sub(Tid(2_044, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x950")]), "frame_dummy", Args([Arg(Tid(2_111, "%0000083f"), 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(901, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(854, "@frame_dummy"), Attrs([Attr("address","0x950")]), Phis([]), Defs([]), -Jmps([Call(Tid(903, "%00000387"), Attrs([Attr("address","0x950"), +Jmps([Call(Tid(856, "%00000358"), Attrs([Attr("address","0x950"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_195, "@register_tm_clones")),))]))])), Sub(Tid(2_189, "@free"), +(Direct(Tid(2_051, "@register_tm_clones")),))]))])), Sub(Tid(2_045, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x820"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_256, "%000008d0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_112, "%00000840"), 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_220, "@free"), Attrs([Attr("address","0x820")]), - Phis([]), Defs([Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x820"), +Both())]), Blks([Blk(Tid(1_144, "@free"), Attrs([Attr("address","0x820")]), + Phis([]), Defs([Def(Tid(1_755, "%000006db"), Attrs([Attr("address","0x820"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x824"), +Def(Tid(1_762, "%000006e2"), Attrs([Attr("address","0x824"), 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_909, "%00000775"), Attrs([Attr("address","0x828"), +Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x828"), Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_914, "%0000077a"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_773, "%000006ed"), Attrs([Attr("address","0x82C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_190, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_046, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x954")]), "main", Args([Arg(Tid(2_257, "%000008d1"), +Attr("address","0x954")]), "main", Args([Arg(Tid(2_113, "%00000841"), 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_258, "%000008d2"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_114, "%00000842"), 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_259, "%000008d3"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_115, "%00000843"), 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(905, "@main"), - Attrs([Attr("address","0x954")]), Phis([]), Defs([Def(Tid(910, "%0000038e"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(858, "@main"), + Attrs([Attr("address","0x954")]), Phis([]), Defs([Def(Tid(862, "%0000035e"), Attrs([Attr("address","0x954"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), -Def(Tid(918, "%00000396"), Attrs([Attr("address","0x958"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(923, "%0000039b"), + Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), +Def(Tid(868, "%00000364"), Attrs([Attr("address","0x958"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(874, "%0000036a"), Attrs([Attr("address","0x958"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x958"), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(880, "%00000370"), Attrs([Attr("address","0x958"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x95C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(886, "%00000376"), Attrs([Attr("address","0x95C"), Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(941, "%000003ad"), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(891, "%0000037b"), Attrs([Attr("address","0x960"), Attr("insn","adrp x8, #0x1f000")]), - Var("R8",Imm(64)), Int(126976,64)), Def(Tid(949, "%000003b5"), + Var("R8",Imm(64)), Int(126976,64)), Def(Tid(898, "%00000382"), Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [x8, #0xfc8]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(4040,64)),LittleEndian(),64)), -Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x968"), +Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x968"), Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x96C"), +Def(Tid(913, "%00000391"), Attrs([Attr("address","0x96C"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x970"), +Def(Tid(920, "%00000398"), Attrs([Attr("address","0x970"), Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x974"), +Def(Tid(925, "%0000039d"), Attrs([Attr("address","0x974"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(984, "%000003d8"), Attrs([Attr("address","0x978"), +Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x978"), Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(987, "%000003db"), Attrs([Attr("address","0x978"), +Jmps([Call(Tid(933, "%000003a5"), Attrs([Attr("address","0x978"), Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_191, "@malloc")),Direct(Tid(989, "%000003dd"))))])), -Blk(Tid(989, "%000003dd"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x97C"), +(Direct(Tid(2_047, "@malloc")),Direct(Tid(935, "%000003a7"))))])), +Blk(Tid(935, "%000003a7"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(940, "%000003ac"), Attrs([Attr("address","0x97C"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x980"), +Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x980"), Attr("insn","str x0, [x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R8",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x984"), +Def(Tid(955, "%000003bb"), Attrs([Attr("address","0x984"), Attr("insn","ldr x8, [x8]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x988"), +Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x988"), Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x98C"), +Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x98C"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x990"), +Def(Tid(975, "%000003cf"), Attrs([Attr("address","0x990"), 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)), -Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x994"), +Def(Tid(983, "%000003d7"), Attrs([Attr("address","0x994"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x998"), +Def(Tid(988, "%000003dc"), Attrs([Attr("address","0x998"), Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2460,64))]), -Jmps([Call(Tid(1_049, "%00000419"), Attrs([Attr("address","0x998"), +Jmps([Call(Tid(991, "%000003df"), Attrs([Attr("address","0x998"), Attr("insn","bl #-0x1f8")]), Int(1,1), -(Direct(Tid(2_198, "@strlen")),Direct(Tid(1_051, "%0000041b"))))])), -Blk(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x99C")]), Phis([]), -Defs([Def(Tid(1_057, "%00000421"), Attrs([Attr("address","0x99C"), +(Direct(Tid(2_054, "@strlen")),Direct(Tid(993, "%000003e1"))))])), +Blk(Tid(993, "%000003e1"), Attrs([Attr("address","0x99C")]), Phis([]), +Defs([Def(Tid(998, "%000003e6"), Attrs([Attr("address","0x99C"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_065, "%00000429"), Attrs([Attr("address","0x9A0"), +Def(Tid(1_004, "%000003ec"), Attrs([Attr("address","0x9A0"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x9A4"), +Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x9A4"), Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_078, "%00000436"), Attrs([Attr("address","0x9A8"), +Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x9A8"), Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2476,64))]), -Jmps([Call(Tid(1_081, "%00000439"), Attrs([Attr("address","0x9A8"), +Jmps([Call(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x9A8"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_192, "@memcpy")),Direct(Tid(1_083, "%0000043b"))))])), -Blk(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x9AC")]), Phis([]), -Defs([Def(Tid(1_089, "%00000441"), Attrs([Attr("address","0x9AC"), +(Direct(Tid(2_048, "@memcpy")),Direct(Tid(1_021, "%000003fd"))))])), +Blk(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x9AC")]), Phis([]), +Defs([Def(Tid(1_026, "%00000402"), Attrs([Attr("address","0x9AC"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_097, "%00000449"), Attrs([Attr("address","0x9B0"), +Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x9B0"), Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_102, "%0000044e"), Attrs([Attr("address","0x9B4"), +Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x9B4"), Attr("insn","bl #-0x1a4")]), Var("R30",Imm(64)), Int(2488,64))]), -Jmps([Call(Tid(1_105, "%00000451"), Attrs([Attr("address","0x9B4"), +Jmps([Call(Tid(1_041, "%00000411"), Attrs([Attr("address","0x9B4"), Attr("insn","bl #-0x1a4")]), Int(1,1), -(Direct(Tid(2_194, "@puts")),Direct(Tid(1_107, "%00000453"))))])), -Blk(Tid(1_107, "%00000453"), Attrs([Attr("address","0x9B8")]), Phis([]), -Defs([Def(Tid(1_113, "%00000459"), Attrs([Attr("address","0x9B8"), +(Direct(Tid(2_050, "@puts")),Direct(Tid(1_043, "%00000413"))))])), +Blk(Tid(1_043, "%00000413"), Attrs([Attr("address","0x9B8")]), Phis([]), +Defs([Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x9B8"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x9BC"), +Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x9BC"), Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x9C0"), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x9C0"), Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_136, "%00000470"), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x9C4"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x9C8"), +Def(Tid(1_076, "%00000434"), Attrs([Attr("address","0x9C8"), Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_152, "%00000480"), Attrs([Attr("address","0x9CC"), +Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x9CC"), Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x9D0"), +Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x9D0"), Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x9D4"), +Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x9D4"), Attr("insn","bl #-0x234")]), Var("R30",Imm(64)), Int(2520,64))]), -Jmps([Call(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x9D4"), +Jmps([Call(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x9D4"), Attr("insn","bl #-0x234")]), Int(1,1), -(Direct(Tid(2_198, "@strlen")),Direct(Tid(1_169, "%00000491"))))])), -Blk(Tid(1_169, "%00000491"), Attrs([Attr("address","0x9D8")]), Phis([]), -Defs([Def(Tid(1_175, "%00000497"), Attrs([Attr("address","0x9D8"), +(Direct(Tid(2_054, "@strlen")),Direct(Tid(1_100, "%0000044c"))))])), +Blk(Tid(1_100, "%0000044c"), Attrs([Attr("address","0x9D8")]), Phis([]), +Defs([Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x9D8"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x9DC"), +Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x9DC"), Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x9E0"), +Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x9E0"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x9E4"), +Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x9E4"), Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2536,64))]), -Jmps([Call(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x9E4"), +Jmps([Call(Tid(1_124, "%00000464"), Attrs([Attr("address","0x9E4"), Attr("insn","bl #-0x204")]), Int(1,1), -(Direct(Tid(2_193, "@memset")),Direct(Tid(1_200, "%000004b0"))))])), -Blk(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x9E8")]), Phis([]), -Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x9E8"), +(Direct(Tid(2_049, "@memset")),Direct(Tid(1_126, "%00000466"))))])), +Blk(Tid(1_126, "%00000466"), Attrs([Attr("address","0x9E8")]), Phis([]), +Defs([Def(Tid(1_131, "%0000046b"), Attrs([Attr("address","0x9E8"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_214, "%000004be"), Attrs([Attr("address","0x9EC"), +Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x9EC"), Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x9F0"), +Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x9F0"), Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2548,64))]), -Jmps([Call(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x9F0"), +Jmps([Call(Tid(1_146, "%0000047a"), Attrs([Attr("address","0x9F0"), Attr("insn","bl #-0x1d0")]), Int(1,1), -(Direct(Tid(2_189, "@free")),Direct(Tid(1_224, "%000004c8"))))])), -Blk(Tid(1_224, "%000004c8"), Attrs([Attr("address","0x9F4")]), Phis([]), -Defs([Def(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x9F4"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x9F8"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), -Def(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x9F8"), +(Direct(Tid(2_045, "@free")),Direct(Tid(1_148, "%0000047c"))))])), +Blk(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x9F4")]), Phis([]), +Defs([Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x9F4"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x9F8"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_162, "%0000048a"), + Attrs([Attr("address","0x9F8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), + Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), +Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x9F8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), -Def(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x9FC"), +Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x9FC"), Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_256, "%000004e8"), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_178, "%0000049a"), Attrs([Attr("address","0xA00"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_191, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_047, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x7D0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_260, "%000008d4"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_116, "%00000844"), 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_261, "%000008d5"), +Var("R0",Imm(64)), In()), Arg(Tid(2_117, "%00000845"), 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(985, "@malloc"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x7D0"), +Blks([Blk(Tid(931, "@malloc"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_645, "%0000066d"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x7D4"), +Def(Tid(1_652, "%00000674"), Attrs([Attr("address","0x7D4"), 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_784, "%000006f8"), Attrs([Attr("address","0x7D8"), +Def(Tid(1_658, "%0000067a"), Attrs([Attr("address","0x7D8"), Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_789, "%000006fd"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_663, "%0000067f"), Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_192, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_048, "@memcpy"), Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), Attr("address","0x790"), Attr("stub","()")]), "memcpy", - Args([Arg(Tid(2_262, "%000008d6"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_118, "%00000846"), 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_263, "%000008d7"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_119, "%00000847"), 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_264, "%000008d8"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_120, "%00000848"), 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_265, "%000008d9"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_121, "%00000849"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_079, "@memcpy"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_669, "%00000685"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_017, "@memcpy"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_557, "%00000615"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_677, "%0000068d"), Attrs([Attr("address","0x794"), +Def(Tid(1_564, "%0000061c"), Attrs([Attr("address","0x794"), Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), -Def(Tid(1_684, "%00000694"), Attrs([Attr("address","0x798"), +Def(Tid(1_570, "%00000622"), Attrs([Attr("address","0x798"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_689, "%00000699"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_575, "%00000627"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_193, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_049, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x7E0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_266, "%000008da"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_122, "%0000084a"), 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_267, "%000008db"), +Both()), Arg(Tid(2_123, "%0000084b"), 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_268, "%000008dc"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_124, "%0000084c"), 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_269, "%000008dd"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_125, "%0000084d"), 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_196, "@memset"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x7E0"), +Blks([Blk(Tid(1_122, "@memset"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_667, "%00000683"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x7E4"), +Def(Tid(1_674, "%0000068a"), Attrs([Attr("address","0x7E4"), 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_809, "%00000711"), Attrs([Attr("address","0x7E8"), +Def(Tid(1_680, "%00000690"), Attrs([Attr("address","0x7E8"), Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_814, "%00000716"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_685, "%00000695"), Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_194, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_050, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x810"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_270, "%000008de"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_126, "%0000084e"), 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_271, "%000008df"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_127, "%0000084f"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_103, "@puts"), Attrs([Attr("address","0x810")]), Phis([]), -Defs([Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x810"), +Blks([Blk(Tid(1_039, "@puts"), Attrs([Attr("address","0x810")]), Phis([]), +Defs([Def(Tid(1_733, "%000006c5"), Attrs([Attr("address","0x810"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x814"), +Def(Tid(1_740, "%000006cc"), Attrs([Attr("address","0x814"), 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_884, "%0000075c"), Attrs([Attr("address","0x818"), +Def(Tid(1_746, "%000006d2"), Attrs([Attr("address","0x818"), Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_889, "%00000761"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x81C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_195, "@register_tm_clones"), +Sub(Tid(2_051, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "register_tm_clones", Args([Arg(Tid(2_272, "%000008e0"), + "register_tm_clones", Args([Arg(Tid(2_128, "%00000850"), 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(727, "@register_tm_clones"), Attrs([Attr("address","0x8C0")]), - Phis([]), Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x8C0"), +Blks([Blk(Tid(705, "@register_tm_clones"), Attrs([Attr("address","0x8C0")]), + Phis([]), Defs([Def(Tid(708, "%000002c4"), Attrs([Attr("address","0x8C0"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x8C4"), +Def(Tid(714, "%000002ca"), Attrs([Attr("address","0x8C4"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(744, "%000002e8"), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(719, "%000002cf"), Attrs([Attr("address","0x8C8"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(751, "%000002ef"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(725, "%000002d5"), Attrs([Attr("address","0x8CC"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x8D0"), +Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x8D0"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(766, "%000002fe"), - Attrs([Attr("address","0x8D4"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(774, "%00000306"), Attrs([Attr("address","0x8D8"), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x8D4"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(745, "%000002e9"), Attrs([Attr("address","0x8D8"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), -Def(Tid(781, "%0000030d"), Attrs([Attr("address","0x8DC"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x8DC"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(793, "%00000319"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(787, "%00000313"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(785, "%00000311"))), Goto(Tid(2_240, "%000008c0"), Attrs([]), - Int(1,1), Direct(Tid(1_328, "%00000530")))])), Blk(Tid(1_328, "%00000530"), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(757, "%000002f5"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(755, "%000002f3"))), Goto(Tid(2_096, "%00000830"), Attrs([]), + Int(1,1), Direct(Tid(1_239, "%000004d7")))])), Blk(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_332, "%00000534"), Attrs([Attr("address","0x8E4"), +Defs([Def(Tid(1_242, "%000004da"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8E8"), +Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8E8"), 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)), -Def(Tid(1_351, "%00000547"), Attrs([Attr("address","0x8EC"), -Attr("insn","cbz x2, #0xc")]), Var("#73",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_345, "%00000541"), - Attrs([Attr("address","0x8EC"), Attr("insn","cbz x2, #0xc")]), - Var("#73",Imm(1)), Direct(Tid(785, "%00000311"))), -Goto(Tid(2_241, "%000008c1"), Attrs([]), Int(1,1), -Direct(Tid(1_354, "%0000054a")))])), Blk(Tid(785, "%00000311"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_254, "%000004e6"), Attrs([Attr("address","0x8EC"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(755, "%000002f3"))), Goto(Tid(2_097, "%00000831"), Attrs([]), + Int(1,1), Direct(Tid(1_258, "%000004ea")))])), Blk(Tid(755, "%000002f3"), Attrs([Attr("address","0x8F8")]), Phis([]), Defs([]), -Jmps([Call(Tid(798, "%0000031e"), Attrs([Attr("address","0x8F8"), +Jmps([Call(Tid(763, "%000002fb"), Attrs([Attr("address","0x8F8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_360, "%00000550"), Attrs([Attr("address","0x8F0"), +Blk(Tid(1_258, "%000004ea"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8F0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_365, "%00000555"), Attrs([Attr("address","0x8F4"), +Jmps([Call(Tid(1_267, "%000004f3"), Attrs([Attr("address","0x8F4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_198, "@strlen"), +Sub(Tid(2_054, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x7A0"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_273, "%000008e1"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_129, "%00000851"), 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_274, "%000008e2"), +In()), Arg(Tid(2_130, "%00000852"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_047, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(989, "@strlen"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_694, "%0000069e"), Attrs([Attr("address","0x7A0"), +Defs([Def(Tid(1_579, "%0000062b"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_702, "%000006a6"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_586, "%00000632"), Attrs([Attr("address","0x7A4"), 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_709, "%000006ad"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_592, "%00000638"), Attrs([Attr("address","0x7A8"), Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_714, "%000006b2"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_597, "%0000063d"), Attrs([Attr("address","0x7AC"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir index 24db96439..eabcefde8 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir @@ -1,361 +1,354 @@ -000008c2: program -0000087b: sub __cxa_finalize(__cxa_finalize_result) -000008c3: __cxa_finalize_result :: out u32 = low:32[R0] - -0000052c: -000006d0: R16 := 0x20000 -000006d8: R17 := mem[R16 + 0x18, el]:u64 -000006df: R16 := R16 + 0x18 -000006e4: call R17 with noreturn - -0000087c: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008c4: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000322: -00000329: #34 := R31 - 0x20 -0000032e: mem := mem with [#34, el]:u64 <- R29 -00000333: mem := mem with [#34 + 8, el]:u64 <- R30 -00000337: R31 := #34 -0000033e: R29 := R31 -00000346: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000034c: R19 := 0x20000 -00000355: R0 := pad:32[mem[R19 + 0x70]] -00000361: #36 := ~~0:0[R0] -0000035b: when #36 goto %00000359 -000008b8: goto %000004ea - -000004ea: -000004ee: R0 := 0x1F000 -000004f6: R0 := mem[R0 + 0xFB8, el]:u64 -00000502: #70 := R0 = 0 -000004fc: when #70 goto %000004fa -000008b9: goto %0000051a - -0000051a: -0000051e: R0 := 0x20000 -00000526: R0 := mem[R0 + 0x58, el]:u64 -0000052b: R30 := 0x930 -0000052e: call @__cxa_finalize with return %000004fa - -000004fa: -00000507: R30 := 0x934 -00000509: call @deregister_tm_clones with return %0000050b - -0000050b: -00000510: R0 := 1 -00000518: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -000008ba: goto %00000359 - -00000359: -00000369: R19 := mem[R31 + 0x10, el]:u64 -00000373: R29 := mem[R31, el]:u64 -00000377: R30 := mem[R31 + 8, el]:u64 -0000037a: R31 := R31 + 0x20 -0000037f: call R30 with noreturn - -00000880: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008c5: __libc_start_main_main :: in u64 = R0 -000008c6: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008c7: __libc_start_main_arg3 :: in out u64 = R2 -000008c8: __libc_start_main_auxv :: in out u64 = R3 -000008c9: __libc_start_main_result :: out u32 = low:32[R0] - -00000266: -000006b7: R16 := 0x20000 -000006bf: R17 := mem[R16 + 0x10, el]:u64 -000006c6: R16 := R16 + 0x10 -000006cb: call R17 with noreturn - -00000881: sub _fini(_fini_result) -000008ca: _fini_result :: out u32 = low:32[R0] +00000832: program +000007eb: sub __cxa_finalize(__cxa_finalize_result) +00000833: __cxa_finalize_result :: out u32 = low:32[R0] + +000004d3: +00000657: R16 := 0x20000 +0000065e: R17 := mem[R16 + 0x18, el]:u64 +00000664: R16 := R16 + 0x18 +00000669: call R17 with noreturn + +000007ec: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000834: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002ff: +00000303: #3 := R31 - 0x20 +00000309: mem := mem with [#3, el]:u64 <- R29 +0000030f: mem := mem with [#3 + 8, el]:u64 <- R30 +00000313: R31 := #3 +00000319: R29 := R31 +00000321: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000326: R19 := 0x20000 +0000032d: R0 := pad:64[mem[R19 + 0x70]] +00000333: when 0:0[R0] goto %00000331 +00000828: goto %0000049c + +0000049c: +0000049f: R0 := 0x1F000 +000004a6: R0 := mem[R0 + 0xFB8, el]:u64 +000004ac: when R0 = 0 goto %000004aa +00000829: goto %000004c3 + +000004c3: +000004c6: R0 := 0x20000 +000004cd: R0 := mem[R0 + 0x58, el]:u64 +000004d2: R30 := 0x930 +000004d5: call @__cxa_finalize with return %000004aa + +000004aa: +000004b2: R30 := 0x934 +000004b4: call @deregister_tm_clones with return %000004b6 + +000004b6: +000004b9: R0 := 1 +000004c1: mem := mem with [R19 + 0x70] <- 7:0[R0] +0000082a: goto %00000331 + +00000331: +0000033b: R19 := mem[R31 + 0x10, el]:u64 +00000342: R29 := mem[R31, el]:u64 +00000347: R30 := mem[R31 + 8, el]:u64 +0000034b: R31 := R31 + 0x20 +00000350: call R30 with noreturn + +000007f0: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000835: __libc_start_main_main :: in u64 = R0 +00000836: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000837: __libc_start_main_arg3 :: in out u64 = R2 +00000838: __libc_start_main_auxv :: in out u64 = R3 +00000839: __libc_start_main_result :: out u32 = low:32[R0] + +00000258: +00000641: R16 := 0x20000 +00000648: R17 := mem[R16 + 0x10, el]:u64 +0000064e: R16 := R16 + 0x10 +00000653: call R17 with noreturn + +000007f1: sub _fini(_fini_result) +0000083a: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -00000882: sub _init(_init_result) -000008cb: _init_result :: out u32 = low:32[R0] - -00000796: -0000079f: #101 := R31 - 0x10 -000007a4: mem := mem with [#101, el]:u64 <- R29 -000007a9: mem := mem with [#101 + 8, el]:u64 <- R30 -000007ad: R31 := #101 -000007b4: R29 := R31 -000007b9: R30 := 0x768 -000007bb: call @call_weak_fn with return %000007bd - -000007bd: -000007c5: R29 := mem[R31, el]:u64 -000007c9: R30 := mem[R31 + 8, el]:u64 -000007cc: R31 := R31 + 0x10 -000007d1: call R30 with noreturn - -00000883: sub _start(_start_result) -000008cc: _start_result :: out u32 = low:32[R0] - -0000021c: -00000222: R29 := 0 -00000228: R30 := 0 -00000230: R5 := R0 -00000238: R1 := mem[R31, el]:u64 -0000023f: R2 := R31 + 8 -00000246: R6 := R31 -0000024c: R0 := 0x1F000 -00000254: R0 := mem[R0 + 0xFD8, el]:u64 -0000025a: R3 := 0 -00000260: R4 := 0 -00000265: R30 := 0x870 -00000268: call @__libc_start_main with return %0000026a - -0000026a: -0000026d: R30 := 0x874 -00000270: call @abort with return %000008bb - -000008bb: -000008bc: call @call_weak_fn with noreturn - -00000886: sub abort() - - -0000026e: -00000734: R16 := 0x20000 -0000073c: R17 := mem[R16 + 0x38, el]:u64 -00000743: R16 := R16 + 0x38 -00000748: call R17 with noreturn - -00000887: sub call_weak_fn(call_weak_fn_result) -000008cd: call_weak_fn_result :: out u32 = low:32[R0] +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 + +000007f2: sub _init(_init_result) +0000083b: _init_result :: out u32 = low:32[R0] + +00000709: +0000070f: #7 := R31 - 0x10 +00000715: mem := mem with [#7, el]:u64 <- R29 +0000071b: mem := mem with [#7 + 8, el]:u64 <- R30 +0000071f: R31 := #7 +00000725: R29 := R31 +0000072a: R30 := 0x768 +0000072c: call @call_weak_fn with return %0000072e + +0000072e: +00000733: R29 := mem[R31, el]:u64 +00000738: R30 := mem[R31 + 8, el]:u64 +0000073c: R31 := R31 + 0x10 +00000741: call R30 with noreturn + +000007f3: sub _start(_start_result) +0000083c: _start_result :: out u32 = low:32[R0] + +00000219: +0000021e: R29 := 0 +00000223: R30 := 0 +00000229: R5 := R0 +00000230: R1 := mem[R31, el]:u64 +00000236: R2 := R31 + 8 +0000023c: R6 := R31 +00000241: R0 := 0x1F000 +00000248: R0 := mem[R0 + 0xFD8, el]:u64 +0000024d: R3 := 0 +00000252: R4 := 0 +00000257: R30 := 0x870 +0000025a: call @__libc_start_main with return %0000025c + +0000025c: +0000025f: R30 := 0x874 +00000262: call @abort with return %0000082b + +0000082b: +0000082c: call @call_weak_fn with noreturn + +000007f6: sub abort() + + +00000260: +000006af: R16 := 0x20000 +000006b6: R17 := mem[R16 + 0x38, el]:u64 +000006bc: R16 := R16 + 0x38 +000006c1: call R17 with noreturn + +000007f7: sub call_weak_fn(call_weak_fn_result) +0000083d: call_weak_fn_result :: out u32 = low:32[R0] + +00000264: +00000267: R0 := 0x1F000 +0000026e: R0 := mem[R0 + 0xFC0, el]:u64 +00000274: when R0 = 0 goto %00000272 +0000082d: goto %00000513 00000272: -00000276: R0 := 0x1F000 -0000027e: R0 := mem[R0 + 0xFC0, el]:u64 -0000028a: #12 := R0 = 0 -00000284: when #12 goto %00000282 -000008bd: goto %0000057e - -00000282: -0000028f: call R30 with noreturn - -0000057e: -00000581: goto @__gmon_start__ - -0000057f: -0000071b: R16 := 0x20000 -00000723: R17 := mem[R16 + 0x30, el]:u64 -0000072a: R16 := R16 + 0x30 -0000072f: call R17 with noreturn - -00000889: sub deregister_tm_clones(deregister_tm_clones_result) -000008ce: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000295: -00000299: R0 := 0x20000 -000002a0: R0 := R0 + 0x70 -000002a6: R1 := 0x20000 -000002ad: R1 := R1 + 0x70 -000002b5: #16 := 1 + ~R0 + R1 -000002b9: NF := 63:63[#16] -000002bc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002bf: ZF := #16 = 0 -000002c2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002d0: #21 := ZF -000002ca: when #21 goto %000002c8 -000008be: goto %00000557 - -00000557: -0000055b: R1 := 0x1F000 -00000563: R1 := mem[R1 + 0xFB0, el]:u64 -0000056e: #78 := R1 = 0 -00000568: when #78 goto %000002c8 -000008bf: goto %00000571 - -000002c8: -000002d5: call R30 with noreturn - -00000571: -00000577: R16 := R1 -0000057c: call R16 with noreturn - -0000088c: sub frame_dummy(frame_dummy_result) -000008cf: frame_dummy_result :: out u32 = low:32[R0] - -00000385: -00000387: call @register_tm_clones with noreturn - -0000088d: sub free(free_ptr) -000008d0: free_ptr :: in out u64 = R0 - -000004c4: -00000766: R16 := 0x20000 -0000076e: R17 := mem[R16 + 0x48, el]:u64 -00000775: R16 := R16 + 0x48 -0000077a: call R17 with noreturn - -0000088e: sub main(main_argc, main_argv, main_result) -000008d1: main_argc :: in u32 = low:32[R0] -000008d2: main_argv :: in out u64 = R1 -000008d3: main_result :: out u32 = low:32[R0] - -00000389: -0000038e: R31 := R31 - 0x40 -00000396: #42 := R31 + 0x30 -0000039b: mem := mem with [#42, el]:u64 <- R29 -000003a0: mem := mem with [#42 + 8, el]:u64 <- R30 -000003a7: R29 := R31 + 0x30 -000003ad: R8 := 0x1F000 -000003b5: R8 := mem[R8 + 0xFC8, el]:u64 -000003bd: mem := mem with [R31 + 0x18, el]:u64 <- R8 -000003c5: mem := mem with [R29 - 8, el]:u64 <- 0 -000003cd: mem := mem with [R29 - 0x10, el]:u64 <- 0 -000003d3: R0 := 0xB -000003d8: R30 := 0x97C -000003db: call @malloc with return %000003dd +0000027a: call R30 with noreturn + +00000513: +00000516: goto @__gmon_start__ + +00000514: +00000699: R16 := 0x20000 +000006a0: R17 := mem[R16 + 0x30, el]:u64 +000006a6: R16 := R16 + 0x30 +000006ab: call R17 with noreturn + +000007f9: sub deregister_tm_clones(deregister_tm_clones_result) +0000083e: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000280: +00000283: R0 := 0x20000 +00000289: R0 := R0 + 0x70 +0000028e: R1 := 0x20000 +00000294: R1 := R1 + 0x70 +0000029a: #1 := ~R0 +0000029f: #2 := R1 + ~R0 +000002a5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002ab: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002af: ZF := #2 + 1 = 0 +000002b3: NF := 63:63[#2 + 1] +000002b9: when ZF goto %000002b7 +0000082e: goto %000004f5 + +000004f5: +000004f8: R1 := 0x1F000 +000004ff: R1 := mem[R1 + 0xFB0, el]:u64 +00000504: when R1 = 0 goto %000002b7 +0000082f: goto %00000508 + +000002b7: +000002bf: call R30 with noreturn + +00000508: +0000050c: R16 := R1 +00000511: call R16 with noreturn + +000007fc: sub frame_dummy(frame_dummy_result) +0000083f: frame_dummy_result :: out u32 = low:32[R0] + +00000356: +00000358: call @register_tm_clones with noreturn + +000007fd: sub free(free_ptr) +00000840: free_ptr :: in out u64 = R0 + +00000478: +000006db: R16 := 0x20000 +000006e2: R17 := mem[R16 + 0x48, el]:u64 +000006e8: R16 := R16 + 0x48 +000006ed: call R17 with noreturn + +000007fe: sub main(main_argc, main_argv, main_result) +00000841: main_argc :: in u32 = low:32[R0] +00000842: main_argv :: in out u64 = R1 +00000843: main_result :: out u32 = low:32[R0] + +0000035a: +0000035e: R31 := R31 - 0x40 +00000364: #4 := R31 + 0x30 +0000036a: mem := mem with [#4, el]:u64 <- R29 +00000370: mem := mem with [#4 + 8, el]:u64 <- R30 +00000376: R29 := R31 + 0x30 +0000037b: R8 := 0x1F000 +00000382: R8 := mem[R8 + 0xFC8, el]:u64 +0000038a: mem := mem with [R31 + 0x18, el]:u64 <- R8 +00000391: mem := mem with [R29 - 8, el]:u64 <- 0 +00000398: mem := mem with [R29 - 0x10, el]:u64 <- 0 +0000039d: R0 := 0xB +000003a2: R30 := 0x97C +000003a5: call @malloc with return %000003a7 + +000003a7: +000003ac: R8 := mem[R31 + 0x18, el]:u64 +000003b4: mem := mem with [R8, el]:u64 <- R0 +000003bb: R8 := mem[R8, el]:u64 +000003c3: mem := mem with [R31 + 8, el]:u64 <- R8 +000003c8: R0 := 0x1F000 +000003cf: R0 := mem[R0 + 0xFD0, el]:u64 +000003d7: mem := mem with [R31, el]:u64 <- R0 +000003dc: R30 := 0x99C +000003df: call @strlen with return %000003e1 + +000003e1: +000003e6: R1 := mem[R31, el]:u64 +000003ec: R2 := R0 +000003f3: R0 := mem[R31 + 8, el]:u64 +000003f8: R30 := 0x9AC +000003fb: call @memcpy with return %000003fd + +000003fd: +00000402: R8 := mem[R31 + 0x18, el]:u64 +00000409: R0 := mem[R8, el]:u64 +0000040e: R30 := 0x9B8 +00000411: call @puts with return %00000413 + +00000413: +00000418: R8 := mem[R31 + 0x18, el]:u64 +0000041f: R9 := mem[R8, el]:u64 +00000425: R9 := R9 + 4 +0000042d: mem := mem with [R29 - 8, el]:u64 <- R9 +00000434: R9 := mem[R8, el]:u64 +0000043c: mem := mem with [R31 + 0x10, el]:u64 <- R9 +00000443: R0 := mem[R8, el]:u64 +00000448: R30 := 0x9D8 +0000044a: call @strlen with return %0000044c + +0000044c: +00000450: R2 := R0 +00000457: R0 := mem[R31 + 0x10, el]:u64 +0000045c: R1 := 1 +00000461: R30 := 0x9E8 +00000464: call @memset with return %00000466 + +00000466: +0000046b: R8 := mem[R31 + 0x18, el]:u64 +00000472: R0 := mem[R8, el]:u64 +00000477: R30 := 0x9F4 +0000047a: call @free with return %0000047c + +0000047c: +0000047f: R0 := 0 +00000485: #5 := R31 + 0x30 +0000048a: R29 := mem[#5, el]:u64 +0000048f: R30 := mem[#5 + 8, el]:u64 +00000495: R31 := R31 + 0x40 +0000049a: call R30 with noreturn + +000007ff: sub malloc(malloc_size, malloc_result) +00000844: malloc_size :: in u64 = R0 +00000845: malloc_result :: out u64 = R0 + +000003a3: +0000066d: R16 := 0x20000 +00000674: R17 := mem[R16 + 0x20, el]:u64 +0000067a: R16 := R16 + 0x20 +0000067f: call R17 with noreturn + +00000800: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000846: memcpy_dst :: in out u64 = R0 +00000847: memcpy_src :: in out u64 = R1 +00000848: memcpy_n :: in u64 = R2 +00000849: memcpy_result :: out u64 = R0 + +000003f9: +00000615: R16 := 0x20000 +0000061c: R17 := mem[R16, el]:u64 +00000622: R16 := R16 +00000627: call R17 with noreturn + +00000801: sub memset(memset_buf, memset_c, memset_n, memset_result) +0000084a: memset_buf :: in out u64 = R0 +0000084b: memset_c :: in u32 = low:32[R1] +0000084c: memset_n :: in u64 = R2 +0000084d: memset_result :: out u64 = R0 + +00000462: +00000683: R16 := 0x20000 +0000068a: R17 := mem[R16 + 0x28, el]:u64 +00000690: R16 := R16 + 0x28 +00000695: call R17 with noreturn + +00000802: sub puts(puts_s, puts_result) +0000084e: puts_s :: in u64 = R0 +0000084f: puts_result :: out u32 = low:32[R0] + +0000040f: +000006c5: R16 := 0x20000 +000006cc: R17 := mem[R16 + 0x40, el]:u64 +000006d2: R16 := R16 + 0x40 +000006d7: call R17 with noreturn + +00000803: sub register_tm_clones(register_tm_clones_result) +00000850: register_tm_clones_result :: out u32 = low:32[R0] + +000002c1: +000002c4: R0 := 0x20000 +000002ca: R0 := R0 + 0x70 +000002cf: R1 := 0x20000 +000002d5: R1 := R1 + 0x70 +000002dc: R1 := R1 + ~R0 + 1 +000002e2: R2 := 0.63:63[R1] +000002e9: R1 := R2 + (R1 ~>> 3) +000002ef: R1 := extend:64[63:1[R1]] +000002f5: when R1 = 0 goto %000002f3 +00000830: goto %000004d7 + +000004d7: +000004da: R2 := 0x1F000 +000004e1: R2 := mem[R2 + 0xFE0, el]:u64 +000004e6: when R2 = 0 goto %000002f3 +00000831: goto %000004ea + +000002f3: +000002fb: call R30 with noreturn + +000004ea: +000004ee: R16 := R2 +000004f3: call R16 with noreturn + +00000806: sub strlen(strlen_s, strlen_result) +00000851: strlen_s :: in u64 = R0 +00000852: strlen_result :: out u64 = R0 000003dd: -000003e3: R8 := mem[R31 + 0x18, el]:u64 -000003eb: mem := mem with [R8, el]:u64 <- R0 -000003f3: R8 := mem[R8, el]:u64 -000003fb: mem := mem with [R31 + 8, el]:u64 <- R8 -00000401: R0 := 0x1F000 -00000409: R0 := mem[R0 + 0xFD0, el]:u64 -00000411: mem := mem with [R31, el]:u64 <- R0 -00000416: R30 := 0x99C -00000419: call @strlen with return %0000041b - -0000041b: -00000421: R1 := mem[R31, el]:u64 -00000429: R2 := R0 -00000431: R0 := mem[R31 + 8, el]:u64 -00000436: R30 := 0x9AC -00000439: call @memcpy with return %0000043b - -0000043b: -00000441: R8 := mem[R31 + 0x18, el]:u64 -00000449: R0 := mem[R8, el]:u64 -0000044e: R30 := 0x9B8 -00000451: call @puts with return %00000453 - -00000453: -00000459: R8 := mem[R31 + 0x18, el]:u64 -00000461: R9 := mem[R8, el]:u64 -00000468: R9 := R9 + 4 -00000470: mem := mem with [R29 - 8, el]:u64 <- R9 -00000478: R9 := mem[R8, el]:u64 -00000480: mem := mem with [R31 + 0x10, el]:u64 <- R9 -00000488: R0 := mem[R8, el]:u64 -0000048d: R30 := 0x9D8 -0000048f: call @strlen with return %00000491 - -00000491: -00000497: R2 := R0 -0000049f: R0 := mem[R31 + 0x10, el]:u64 -000004a6: R1 := 1 -000004ab: R30 := 0x9E8 -000004ae: call @memset with return %000004b0 - -000004b0: -000004b6: R8 := mem[R31 + 0x18, el]:u64 -000004be: R0 := mem[R8, el]:u64 -000004c3: R30 := 0x9F4 -000004c6: call @free with return %000004c8 - -000004c8: -000004cf: R0 := 0 -000004d8: R29 := mem[R31 + 0x30, el]:u64 -000004dc: R30 := mem[R31 + 0x38, el]:u64 -000004e3: R31 := R31 + 0x40 -000004e8: call R30 with noreturn - -0000088f: sub malloc(malloc_size, malloc_result) -000008d4: malloc_size :: in u64 = R0 -000008d5: malloc_result :: out u64 = R0 - -000003d9: -000006e9: R16 := 0x20000 -000006f1: R17 := mem[R16 + 0x20, el]:u64 -000006f8: R16 := R16 + 0x20 -000006fd: call R17 with noreturn - -00000890: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008d6: memcpy_dst :: in out u64 = R0 -000008d7: memcpy_src :: in out u64 = R1 -000008d8: memcpy_n :: in u64 = R2 -000008d9: memcpy_result :: out u64 = R0 - -00000437: -00000685: R16 := 0x20000 -0000068d: R17 := mem[R16, el]:u64 -00000694: R16 := R16 -00000699: call R17 with noreturn - -00000891: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008da: memset_buf :: in out u64 = R0 -000008db: memset_c :: in u32 = low:32[R1] -000008dc: memset_n :: in u64 = R2 -000008dd: memset_result :: out u64 = R0 - -000004ac: -00000702: R16 := 0x20000 -0000070a: R17 := mem[R16 + 0x28, el]:u64 -00000711: R16 := R16 + 0x28 -00000716: call R17 with noreturn - -00000892: sub puts(puts_s, puts_result) -000008de: puts_s :: in u64 = R0 -000008df: puts_result :: out u32 = low:32[R0] - -0000044f: -0000074d: R16 := 0x20000 -00000755: R17 := mem[R16 + 0x40, el]:u64 -0000075c: R16 := R16 + 0x40 -00000761: call R17 with noreturn - -00000893: sub register_tm_clones(register_tm_clones_result) -000008e0: register_tm_clones_result :: out u32 = low:32[R0] - -000002d7: -000002db: R0 := 0x20000 -000002e2: R0 := R0 + 0x70 -000002e8: R1 := 0x20000 -000002ef: R1 := R1 + 0x70 -000002f7: R1 := R1 - R0 -000002fe: R2 := R1 >> 0x3F -00000306: R1 := R2 + (R1 ~>> 3) -0000030d: R1 := R1 >> 1 -00000319: #30 := R1 = 0 -00000313: when #30 goto %00000311 -000008c0: goto %00000530 - -00000530: -00000534: R2 := 0x1F000 -0000053c: R2 := mem[R2 + 0xFE0, el]:u64 -00000547: #73 := R2 = 0 -00000541: when #73 goto %00000311 -000008c1: goto %0000054a - -00000311: -0000031e: call R30 with noreturn - -0000054a: -00000550: R16 := R2 -00000555: call R16 with noreturn - -00000896: sub strlen(strlen_s, strlen_result) -000008e1: strlen_s :: in u64 = R0 -000008e2: strlen_result :: out u64 = R0 - -00000417: -0000069e: R16 := 0x20000 -000006a6: R17 := mem[R16 + 8, el]:u64 -000006ad: R16 := R16 + 8 -000006b2: call R17 with noreturn +0000062b: R16 := 0x20000 +00000632: R17 := mem[R16 + 8, el]:u64 +00000638: R16 := R16 + 8 +0000063d: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt index b97fefcf3..3ef42699d 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt @@ -67,725 +67,708 @@ Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), Annotation(Region(0x7C0,0x99B), Attr("section","\".text\"")), Annotation(Region(0x7C0,0x99B), Attr("code-region","()")), Annotation(Region(0x99C,0x9AF), Attr("code-region","()"))]), -Program(Tid(2_306, "%00000902"), Attrs([]), - Subs([Sub(Tid(2_235, "@__cxa_finalize"), +Program(Tid(2_147, "%00000863"), Attrs([]), + Subs([Sub(Tid(2_076, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_307, "%00000903"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_148, "%00000864"), 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_382, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_278, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x740"), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x740"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_810, "%00000712"), Attrs([Attr("address","0x744"), +Def(Tid(1_673, "%00000689"), 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_817, "%00000719"), Attrs([Attr("address","0x748"), +Def(Tid(1_679, "%0000068f"), 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_822, "%0000071e"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_684, "%00000694"), Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_236, "@__do_global_dtors_aux"), +Sub(Tid(2_077, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_308, "%00000904"), + "__do_global_dtors_aux", Args([Arg(Tid(2_149, "%00000865"), 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(826, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(833, "%00000341"), +Blks([Blk(Tid(791, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(795, "%0000031b"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(838, "%00000346"), Attrs([Attr("address","0x880"), +Def(Tid(801, "%00000321"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(843, "%0000034b"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(807, "%00000327"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(847, "%0000034f"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(854, "%00000356"), +Var("#3",Imm(64))), Def(Tid(817, "%00000331"), Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(862, "%0000035e"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(825, "%00000339"), Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(868, "%00000364"), Attrs([Attr("address","0x88C"), +Def(Tid(830, "%0000033e"), Attrs([Attr("address","0x88C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(877, "%0000036d"), Attrs([Attr("address","0x890"), +Def(Tid(837, "%00000345"), Attrs([Attr("address","0x890"), Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), -Def(Tid(889, "%00000379"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(883, "%00000373"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(881, "%00000371"))), Goto(Tid(2_296, "%000008f8"), Attrs([]), - Int(1,1), Direct(Tid(1_316, "%00000524")))])), Blk(Tid(1_316, "%00000524"), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(843, "%0000034b"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(841, "%00000349"))), +Goto(Tid(2_137, "%00000859"), Attrs([]), Int(1,1), +Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_320, "%00000528"), Attrs([Attr("address","0x898"), +Defs([Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x898"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_328, "%00000530"), Attrs([Attr("address","0x89C"), +Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x89C"), Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), -Def(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), Var("#68",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_334, "%00000536"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), - Var("#68",Imm(1)), Direct(Tid(1_332, "%00000534"))), -Goto(Tid(2_297, "%000008f9"), Attrs([]), Int(1,1), -Direct(Tid(1_364, "%00000554")))])), Blk(Tid(1_364, "%00000554"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_237, "%000004d5"))), Goto(Tid(2_138, "%0000085a"), Attrs([]), + Int(1,1), Direct(Tid(1_262, "%000004ee")))])), Blk(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_368, "%00000558"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_376, "%00000560"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x8A8"), Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_381, "%00000565"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(1_280, "%00000500"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_235, "@__cxa_finalize")),Direct(Tid(1_332, "%00000534"))))])), -Blk(Tid(1_332, "%00000534"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_345, "%00000541"), Attrs([Attr("address","0x8B0"), +(Direct(Tid(2_076, "@__cxa_finalize")),Direct(Tid(1_237, "%000004d5"))))])), +Blk(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_347, "%00000543"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(1_247, "%000004df"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_249, "@deregister_tm_clones")),Direct(Tid(1_349, "%00000545"))))])), -Blk(Tid(1_349, "%00000545"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_090, "@deregister_tm_clones")),Direct(Tid(1_249, "%000004e1"))))])), +Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_252, "%000004e4"), Attrs([Attr("address","0x8B4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_362, "%00000552"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_260, "%000004ec"), Attrs([Attr("address","0x8B8"), Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_298, "%000008fa"), Attrs([]), Int(1,1), -Direct(Tid(881, "%00000371")))])), Blk(Tid(881, "%00000371"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(897, "%00000381"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_139, "%0000085b"), Attrs([]), Int(1,1), +Direct(Tid(841, "%00000349")))])), Blk(Tid(841, "%00000349"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(851, "%00000353"), Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(907, "%0000038b"), Attrs([Attr("address","0x8C0"), +Def(Tid(858, "%0000035a"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(911, "%0000038f"), Attrs([Attr("address","0x8C0"), +Def(Tid(863, "%0000035f"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(914, "%00000392"), Attrs([Attr("address","0x8C0"), +Def(Tid(867, "%00000363"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(919, "%00000397"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(872, "%00000368"), Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_240, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_081, "@__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_309, "%00000905"), + Args([Arg(Tid(2_150, "%00000866"), 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_310, "%00000906"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_151, "%00000867"), 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_311, "%00000907"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_152, "%00000868"), 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_312, "%00000908"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_153, "%00000869"), 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_313, "%00000909"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_154, "%0000086a"), 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(638, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(624, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x730"), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x730"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_785, "%000006f9"), Attrs([Attr("address","0x734"), +Def(Tid(1_651, "%00000673"), 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_792, "%00000700"), Attrs([Attr("address","0x738"), +Def(Tid(1_657, "%00000679"), 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_797, "%00000705"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_662, "%0000067e"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_241, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_082, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x99C")]), - "_fini", Args([Arg(Tid(2_314, "%0000090a"), + "_fini", Args([Arg(Tid(2_155, "%0000086b"), 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","0x99C")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x99C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x9A0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9A0"), +Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x9A0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9A0"), +Store(Var("mem",Mem(64,8)),Var("#0",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(50, "%00000032"), Attrs([Attr("address","0x9A0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9A0"), +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","0x9A0"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9A4"), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9A4"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9A8"), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9A8"), 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(76, "%0000004c"), Attrs([Attr("address","0x9A8"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9A8"), 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(79, "%0000004f"), Attrs([Attr("address","0x9A8"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x9A8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), Attrs([Attr("address","0x9AC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_242, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_083, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_315, "%0000090b"), + "_init", Args([Arg(Tid(2_156, "%0000086c"), 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(2_000, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_844, "@_init"), Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(2_009, "%000007d9"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#99",Imm(64)), +Defs([Def(Tid(1_850, "%0000073a"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(2_014, "%000007de"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_856, "%00000740"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#99",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(2_019, "%000007e3"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_862, "%00000746"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#99",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(2_023, "%000007e7"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_866, "%0000074a"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#99",Imm(64))), Def(Tid(2_030, "%000007ee"), +Var("#6",Imm(64))), Def(Tid(1_872, "%00000750"), Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_035, "%000007f3"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(2_037, "%000007f5"), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_879, "%00000757"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_247, "@call_weak_fn")),Direct(Tid(2_039, "%000007f7"))))])), -Blk(Tid(2_039, "%000007f7"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x6E8"), +(Direct(Tid(2_088, "@call_weak_fn")),Direct(Tid(1_881, "%00000759"))))])), +Blk(Tid(1_881, "%00000759"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_886, "%0000075e"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(2_051, "%00000803"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_891, "%00000763"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(2_054, "%00000806"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_895, "%00000767"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_059, "%0000080b"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_900, "%0000076c"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_243, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_084, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_316, "%0000090c"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_157, "%0000086d"), 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(564, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(570, "%0000023a"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(561, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(566, "%00000236"), Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(576, "%00000240"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(571, "%0000023b"), Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(577, "%00000241"), Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(584, "%00000248"), Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(599, "%00000257"), Attrs([Attr("address","0x7D4"), +Def(Tid(590, "%0000024e"), Attrs([Attr("address","0x7D4"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(606, "%0000025e"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(596, "%00000254"), Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(612, "%00000264"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(601, "%00000259"), Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(620, "%0000026c"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(608, "%00000260"), Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(626, "%00000272"), Attrs([Attr("address","0x7E4"), +Def(Tid(613, "%00000265"), Attrs([Attr("address","0x7E4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(632, "%00000278"), Attrs([Attr("address","0x7E8"), +Def(Tid(618, "%0000026a"), Attrs([Attr("address","0x7E8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(637, "%0000027d"), Attrs([Attr("address","0x7EC"), +Def(Tid(623, "%0000026f"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(640, "%00000280"), Attrs([Attr("address","0x7EC"), +Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_240, "@__libc_start_main")),Direct(Tid(642, "%00000282"))))])), -Blk(Tid(642, "%00000282"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(645, "%00000285"), Attrs([Attr("address","0x7F0"), +(Direct(Tid(2_081, "@__libc_start_main")),Direct(Tid(628, "%00000274"))))])), +Blk(Tid(628, "%00000274"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_246, "@abort")),Direct(Tid(2_299, "%000008fb"))))])), -Blk(Tid(2_299, "%000008fb"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_300, "%000008fc"), Attrs([]), Int(1,1), -(Direct(Tid(2_247, "@call_weak_fn")),))]))])), Sub(Tid(2_246, "@abort"), +(Direct(Tid(2_087, "@abort")),Direct(Tid(2_140, "%0000085c"))))])), +Blk(Tid(2_140, "%0000085c"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_141, "%0000085d"), Attrs([]), Int(1,1), +(Direct(Tid(2_088, "@call_weak_fn")),))]))])), Sub(Tid(2_087, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(646, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x780"), +Blks([Blk(Tid(632, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_910, "%00000776"), Attrs([Attr("address","0x784"), +Def(Tid(1_761, "%000006e1"), 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_917, "%0000077d"), Attrs([Attr("address","0x788"), +Def(Tid(1_767, "%000006e7"), 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_922, "%00000782"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_772, "%000006ec"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_247, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_088, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_317, "%0000090d"), + "call_weak_fn", Args([Arg(Tid(2_158, "%0000086e"), 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(650, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(654, "%0000028e"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(636, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(662, "%00000296"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(646, "%00000286"), Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), -Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(668, "%0000029c"), - Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(666, "%0000029a"))), -Goto(Tid(2_301, "%000008fd"), Attrs([]), Int(1,1), -Direct(Tid(1_464, "%000005b8")))])), Blk(Tid(666, "%0000029a"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(652, "%0000028c"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(650, "%0000028a"))), Goto(Tid(2_142, "%0000085e"), Attrs([]), + Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(650, "%0000028a"), Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(679, "%000002a7"), Attrs([Attr("address","0x804"), +Jmps([Call(Tid(658, "%00000292"), Attrs([Attr("address","0x804"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_464, "%000005b8"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_467, "%000005bb"), Attrs([Attr("address","0x800"), +Blk(Tid(1_342, "%0000053e"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_345, "%00000541"), Attrs([Attr("address","0x800"), Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_465, "@__gmon_start__")))])), Blk(Tid(1_465, "@__gmon_start__"), +Direct(Tid(1_343, "@__gmon_start__")))])), Blk(Tid(1_343, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_885, "%0000075d"), Attrs([Attr("address","0x774"), +Def(Tid(1_739, "%000006cb"), 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_892, "%00000764"), Attrs([Attr("address","0x778"), +Def(Tid(1_745, "%000006d1"), 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_897, "%00000769"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_750, "%000006d6"), Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_249, "@deregister_tm_clones"), +Sub(Tid(2_090, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_318, "%0000090e"), + "deregister_tm_clones", Args([Arg(Tid(2_159, "%0000086f"), 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(685, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(689, "%000002b1"), +Blks([Blk(Tid(664, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(667, "%0000029b"), Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(696, "%000002b8"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(673, "%000002a1"), Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(702, "%000002be"), Attrs([Attr("address","0x818"), +Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x818"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x81C"), +Def(Tid(684, "%000002ac"), Attrs([Attr("address","0x81C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(717, "%000002cd"), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(690, "%000002b2"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(721, "%000002d1"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(724, "%000002d4"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(727, "%000002d7"), Attrs([Attr("address","0x820"), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(730, "%000002da"), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(744, "%000002e8"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(738, "%000002e2"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(736, "%000002e0"))), Goto(Tid(2_302, "%000008fe"), Attrs([]), - Int(1,1), Direct(Tid(1_425, "%00000591")))])), Blk(Tid(1_425, "%00000591"), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(721, "%000002d1"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(719, "%000002cf"))), Goto(Tid(2_143, "%0000085f"), Attrs([]), + Int(1,1), Direct(Tid(1_312, "%00000520")))])), Blk(Tid(1_312, "%00000520"), Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_429, "%00000595"), Attrs([Attr("address","0x828"), +Defs([Def(Tid(1_315, "%00000523"), Attrs([Attr("address","0x828"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_437, "%0000059d"), Attrs([Attr("address","0x82C"), +Def(Tid(1_322, "%0000052a"), Attrs([Attr("address","0x82C"), Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), -Def(Tid(1_448, "%000005a8"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), Var("#76",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_442, "%000005a2"), - Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), - Var("#76",Imm(1)), Direct(Tid(736, "%000002e0"))), -Goto(Tid(2_303, "%000008ff"), Attrs([]), Int(1,1), -Direct(Tid(1_451, "%000005ab")))])), Blk(Tid(736, "%000002e0"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(719, "%000002cf"))), Goto(Tid(2_144, "%00000860"), Attrs([]), + Int(1,1), Direct(Tid(1_331, "%00000533")))])), Blk(Tid(719, "%000002cf"), Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(749, "%000002ed"), Attrs([Attr("address","0x83C"), +Jmps([Call(Tid(727, "%000002d7"), Attrs([Attr("address","0x83C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_457, "%000005b1"), Attrs([Attr("address","0x834"), +Blk(Tid(1_331, "%00000533"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x834"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_462, "%000005b6"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x838"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_252, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_319, "%0000090f"), +Sub(Tid(2_093, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_160, "%00000870"), 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(925, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(878, "@frame_dummy"), Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(927, "%0000039f"), Attrs([Attr("address","0x8D0"), +Jmps([Call(Tid(880, "%00000370"), Attrs([Attr("address","0x8D0"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_259, "@register_tm_clones")),))]))])), Sub(Tid(2_253, "@free"), +(Direct(Tid(2_100, "@register_tm_clones")),))]))])), Sub(Tid(2_094, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_320, "%00000910"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_161, "%00000871"), 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_275, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_952, "%000007a0"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_186, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_960, "%000007a8"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_805, "%0000070d"), 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_967, "%000007af"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_811, "%00000713"), 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_972, "%000007b4"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_816, "%00000718"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_254, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_095, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_321, "%00000911"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_162, "%00000872"), 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_322, "%00000912"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_163, "%00000873"), 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_323, "%00000913"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_164, "%00000874"), 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(929, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(936, "%000003a8"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(882, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(886, "%00000376"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x8D4"), +Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(898, "%00000382"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(950, "%000003b6"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#42",Imm(64))), Def(Tid(957, "%000003bd"), +Var("#4",Imm(64))), Def(Tid(908, "%0000038c"), Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(965, "%000003c5"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(916, "%00000394"), Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x8E0"), +Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x8E0"), Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x8E4"), +Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x8E4"), Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x8E8"), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x8E8"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(992, "%000003e0"), Attrs([Attr("address","0x8EC"), +Def(Tid(940, "%000003ac"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(995, "%000003e3"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(943, "%000003af"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_255, "@malloc")),Direct(Tid(997, "%000003e5"))))])), -Blk(Tid(997, "%000003e5"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8F0"), +(Direct(Tid(2_096, "@malloc")),Direct(Tid(945, "%000003b1"))))])), +Blk(Tid(945, "%000003b1"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8F0"), Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x8F4"), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8F4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x8F8"), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x8F8"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_024, "%00000400"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x900"), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x900"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x904"), +Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x904"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_045, "%00000415"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(986, "%000003da"), Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x90C"), +Def(Tid(991, "%000003df"), Attrs([Attr("address","0x90C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_058, "%00000422"), Attrs([Attr("address","0x910"), +Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x910"), Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_063, "%00000427"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_002, "%000003ea"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), - Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_066, "%0000042a"), + Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_262, "@strlen")),Direct(Tid(1_068, "%0000042c"))))])), -Blk(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x918"), +(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_007, "%000003ef"))))])), +Blk(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x918"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x91C"), +Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x91C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_087, "%0000043f"), Attrs([Attr("address","0x920"), +Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x920"), Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_095, "%00000447"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_028, "%00000404"), Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_100, "%0000044c"), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_103, "%0000044f"), + Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_036, "%0000040c"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_256, "@memcpy")),Direct(Tid(1_105, "%00000451"))))])), -Blk(Tid(1_105, "%00000451"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x92C"), +(Direct(Tid(2_097, "@memcpy")),Direct(Tid(1_038, "%0000040e"))))])), +Blk(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x92C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x930"), +Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x930"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_124, "%00000464"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_054, "%0000041e"), Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x938"), +Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x938"), +Jmps([Call(Tid(1_062, "%00000426"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_258, "@puts")),Direct(Tid(1_134, "%0000046e"))))])), -Blk(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x93C"), +(Direct(Tid(2_099, "@puts")),Direct(Tid(1_064, "%00000428"))))])), +Blk(Tid(1_064, "%00000428"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x93C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x940"), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x940"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_153, "%00000481"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x948"), +Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_168, "%00000490"), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_094, "%00000446"), Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x950"), +Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x950"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x954"), +Def(Tid(1_105, "%00000451"), Attrs([Attr("address","0x954"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_189, "%000004a5"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_112, "%00000458"), Attrs([Attr("address","0x958"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x95C"), +Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x95C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x960"), +Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x960"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_210, "%000004ba"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_130, "%0000046a"), Attrs([Attr("address","0x964"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x968"), +Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x968"), Attr("insn","bl #-0x248")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_217, "%000004c1"), Attrs([Attr("address","0x968"), +Jmps([Call(Tid(1_137, "%00000471"), Attrs([Attr("address","0x968"), Attr("insn","bl #-0x248")]), Int(1,1), -(Direct(Tid(2_262, "@strlen")),Direct(Tid(1_219, "%000004c3"))))])), -Blk(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_225, "%000004c9"), Attrs([Attr("address","0x96C"), +(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_139, "%00000473"))))])), +Blk(Tid(1_139, "%00000473"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x96C"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_232, "%000004d0"), Attrs([Attr("address","0x970"), +Def(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x970"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x974"), +Def(Tid(1_154, "%00000482"), Attrs([Attr("address","0x974"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x978"), +Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x978"), Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x978"), +Jmps([Call(Tid(1_162, "%0000048a"), Attrs([Attr("address","0x978"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_257, "@memset")),Direct(Tid(1_250, "%000004e2"))))])), -Blk(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_254, "%000004e6"), Attrs([Attr("address","0x97C"), +(Direct(Tid(2_098, "@memset")),Direct(Tid(1_164, "%0000048c"))))])), +Blk(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x97C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x980"), +Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x980"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_269, "%000004f5"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_180, "%0000049c"), Attrs([Attr("address","0x984"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x988"), +Def(Tid(1_185, "%000004a1"), Attrs([Attr("address","0x988"), Attr("insn","bl #-0x1e8")]), Var("R30",Imm(64)), Int(2444,64))]), -Jmps([Call(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x988"), +Jmps([Call(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x988"), Attr("insn","bl #-0x1e8")]), Int(1,1), -(Direct(Tid(2_253, "@free")),Direct(Tid(1_279, "%000004ff"))))])), -Blk(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x98C")]), Phis([]), -Defs([Def(Tid(1_284, "%00000504"), Attrs([Attr("address","0x98C"), +(Direct(Tid(2_094, "@free")),Direct(Tid(1_190, "%000004a6"))))])), +Blk(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x98C")]), Phis([]), +Defs([Def(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x98C"), Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x990"), +Def(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x990"), 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_302, "%00000516"), Attrs([Attr("address","0x994"), +Def(Tid(1_207, "%000004b7"), Attrs([Attr("address","0x994"), 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_306, "%0000051a"), Attrs([Attr("address","0x994"), +Def(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x994"), 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_309, "%0000051d"), Attrs([Attr("address","0x994"), +Def(Tid(1_216, "%000004c0"), Attrs([Attr("address","0x994"), Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_314, "%00000522"), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x998"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_255, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_096, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_324, "%00000914"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_165, "%00000875"), 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_325, "%00000915"), +Var("R0",Imm(64)), In()), Arg(Tid(2_166, "%00000876"), 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(993, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(941, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x750"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_835, "%0000072b"), Attrs([Attr("address","0x754"), +Def(Tid(1_695, "%0000069f"), 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_842, "%00000732"), Attrs([Attr("address","0x758"), +Def(Tid(1_701, "%000006a5"), 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_847, "%00000737"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_706, "%000006aa"), Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_256, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_097, "@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_326, "%00000916"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_167, "%00000877"), 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_327, "%00000917"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_168, "%00000878"), 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_328, "%00000918"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_169, "%00000879"), 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_329, "%00000919"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_170, "%0000087a"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_101, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_034, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x710"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_735, "%000006c7"), Attrs([Attr("address","0x714"), +Def(Tid(1_607, "%00000647"), 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_742, "%000006ce"), Attrs([Attr("address","0x718"), +Def(Tid(1_613, "%0000064d"), Attrs([Attr("address","0x718"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_747, "%000006d3"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_618, "%00000652"), Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_257, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_098, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_330, "%0000091a"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_171, "%0000087b"), 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_331, "%0000091b"), +Both()), Arg(Tid(2_172, "%0000087c"), 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_332, "%0000091c"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_173, "%0000087d"), 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_333, "%0000091d"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_174, "%0000087e"), 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_246, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_160, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_860, "%00000744"), Attrs([Attr("address","0x764"), +Def(Tid(1_717, "%000006b5"), 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_867, "%0000074b"), Attrs([Attr("address","0x768"), +Def(Tid(1_723, "%000006bb"), 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_872, "%00000750"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_728, "%000006c0"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_258, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_099, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_334, "%0000091e"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_175, "%0000087f"), 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_335, "%0000091f"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_176, "%00000880"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_130, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_927, "%00000787"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_060, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_935, "%0000078f"), Attrs([Attr("address","0x794"), +Def(Tid(1_783, "%000006f7"), 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_942, "%00000796"), Attrs([Attr("address","0x798"), +Def(Tid(1_789, "%000006fd"), 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_947, "%0000079b"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_794, "%00000702"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_259, "@register_tm_clones"), +Sub(Tid(2_100, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_336, "%00000920"), + "register_tm_clones", Args([Arg(Tid(2_177, "%00000881"), 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(751, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(729, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x840"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x844"), +Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x844"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(768, "%00000300"), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(743, "%000002e7"), Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(775, "%00000307"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(749, "%000002ed"), Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x850"), +Def(Tid(756, "%000002f4"), Attrs([Attr("address","0x850"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(790, "%00000316"), - Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(798, "%0000031e"), Attrs([Attr("address","0x858"), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x858"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), -Def(Tid(805, "%00000325"), Attrs([Attr("address","0x85C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(775, "%00000307"), Attrs([Attr("address","0x85C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(817, "%00000331"), - Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(811, "%0000032b"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(809, "%00000329"))), Goto(Tid(2_304, "%00000900"), Attrs([]), - Int(1,1), Direct(Tid(1_386, "%0000056a")))])), Blk(Tid(1_386, "%0000056a"), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(781, "%0000030d"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(779, "%0000030b"))), Goto(Tid(2_145, "%00000861"), Attrs([]), + Int(1,1), Direct(Tid(1_282, "%00000502")))])), Blk(Tid(1_282, "%00000502"), Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_390, "%0000056e"), Attrs([Attr("address","0x864"), +Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x864"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_398, "%00000576"), Attrs([Attr("address","0x868"), +Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x868"), Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), -Def(Tid(1_409, "%00000581"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), Var("#71",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_403, "%0000057b"), - Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), - Var("#71",Imm(1)), Direct(Tid(809, "%00000329"))), -Goto(Tid(2_305, "%00000901"), Attrs([]), Int(1,1), -Direct(Tid(1_412, "%00000584")))])), Blk(Tid(809, "%00000329"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_297, "%00000511"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(779, "%0000030b"))), Goto(Tid(2_146, "%00000862"), Attrs([]), + Int(1,1), Direct(Tid(1_301, "%00000515")))])), Blk(Tid(779, "%0000030b"), Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(822, "%00000336"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(787, "%00000313"), Attrs([Attr("address","0x878"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_412, "%00000584"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_418, "%0000058a"), Attrs([Attr("address","0x870"), +Blk(Tid(1_301, "%00000515"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_305, "%00000519"), Attrs([Attr("address","0x870"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_423, "%0000058f"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x874"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_262, "@strlen"), +Sub(Tid(2_103, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_337, "%00000921"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_178, "%00000882"), 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_338, "%00000922"), +In()), Arg(Tid(2_179, "%00000883"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_064, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_003, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x720"), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x720"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_760, "%000006e0"), Attrs([Attr("address","0x724"), +Def(Tid(1_629, "%0000065d"), 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_767, "%000006e7"), Attrs([Attr("address","0x728"), +Def(Tid(1_635, "%00000663"), 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_772, "%000006ec"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_640, "%00000668"), 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/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir index fd154ed39..c1288beb8 100644 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir @@ -1,369 +1,361 @@ -00000902: program -000008bb: sub __cxa_finalize(__cxa_finalize_result) -00000903: __cxa_finalize_result :: out u32 = low:32[R0] - -00000566: -0000070a: R16 := 0x20000 -00000712: R17 := mem[R16 + 0x18, el]:u64 -00000719: R16 := R16 + 0x18 -0000071e: call R17 with noreturn - -000008bc: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000904: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -0000033a: -00000341: #34 := R31 - 0x20 -00000346: mem := mem with [#34, el]:u64 <- R29 -0000034b: mem := mem with [#34 + 8, el]:u64 <- R30 -0000034f: R31 := #34 -00000356: R29 := R31 -0000035e: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000364: R19 := 0x20000 -0000036d: R0 := pad:32[mem[R19 + 0x78]] -00000379: #36 := ~~0:0[R0] -00000373: when #36 goto %00000371 -000008f8: goto %00000524 - -00000524: -00000528: R0 := 0x1F000 -00000530: R0 := mem[R0 + 0xFC8, el]:u64 -0000053c: #68 := R0 = 0 -00000536: when #68 goto %00000534 -000008f9: goto %00000554 - -00000554: -00000558: R0 := 0x20000 -00000560: R0 := mem[R0 + 0x58, el]:u64 -00000565: R30 := 0x8B0 -00000568: call @__cxa_finalize with return %00000534 - -00000534: -00000541: R30 := 0x8B4 -00000543: call @deregister_tm_clones with return %00000545 - -00000545: -0000054a: R0 := 1 -00000552: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] -000008fa: goto %00000371 - -00000371: -00000381: R19 := mem[R31 + 0x10, el]:u64 -0000038b: R29 := mem[R31, el]:u64 -0000038f: R30 := mem[R31 + 8, el]:u64 -00000392: R31 := R31 + 0x20 -00000397: call R30 with noreturn - -000008c0: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000905: __libc_start_main_main :: in u64 = R0 -00000906: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000907: __libc_start_main_arg3 :: in out u64 = R2 -00000908: __libc_start_main_auxv :: in out u64 = R3 -00000909: __libc_start_main_result :: out u32 = low:32[R0] - -0000027e: -000006f1: R16 := 0x20000 -000006f9: R17 := mem[R16 + 0x10, el]:u64 -00000700: R16 := R16 + 0x10 -00000705: call R17 with noreturn - -000008c1: sub _fini(_fini_result) -0000090a: _fini_result :: out u32 = low:32[R0] +00000863: program +0000081c: sub __cxa_finalize(__cxa_finalize_result) +00000864: __cxa_finalize_result :: out u32 = low:32[R0] + +000004fe: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x18, el]:u64 +0000068f: R16 := R16 + 0x18 +00000694: call R17 with noreturn + +0000081d: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000865: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000317: +0000031b: #3 := R31 - 0x20 +00000321: mem := mem with [#3, el]:u64 <- R29 +00000327: mem := mem with [#3 + 8, el]:u64 <- R30 +0000032b: R31 := #3 +00000331: R29 := R31 +00000339: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000033e: R19 := 0x20000 +00000345: R0 := pad:64[mem[R19 + 0x78]] +0000034b: when 0:0[R0] goto %00000349 +00000859: goto %000004c7 + +000004c7: +000004ca: R0 := 0x1F000 +000004d1: R0 := mem[R0 + 0xFC8, el]:u64 +000004d7: when R0 = 0 goto %000004d5 +0000085a: goto %000004ee + +000004ee: +000004f1: R0 := 0x20000 +000004f8: R0 := mem[R0 + 0x58, el]:u64 +000004fd: R30 := 0x8B0 +00000500: call @__cxa_finalize with return %000004d5 + +000004d5: +000004dd: R30 := 0x8B4 +000004df: call @deregister_tm_clones with return %000004e1 + +000004e1: +000004e4: R0 := 1 +000004ec: mem := mem with [R19 + 0x78] <- 7:0[R0] +0000085b: goto %00000349 + +00000349: +00000353: R19 := mem[R31 + 0x10, el]:u64 +0000035a: R29 := mem[R31, el]:u64 +0000035f: R30 := mem[R31 + 8, el]:u64 +00000363: R31 := R31 + 0x20 +00000368: call R30 with noreturn + +00000821: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000866: __libc_start_main_main :: in u64 = R0 +00000867: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000868: __libc_start_main_arg3 :: in out u64 = R2 +00000869: __libc_start_main_auxv :: in out u64 = R3 +0000086a: __libc_start_main_result :: out u32 = low:32[R0] + +00000270: +0000066c: R16 := 0x20000 +00000673: R17 := mem[R16 + 0x10, el]:u64 +00000679: R16 := R16 + 0x10 +0000067e: call R17 with noreturn + +00000822: sub _fini(_fini_result) +0000086b: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -000008c2: sub _init(_init_result) -0000090b: _init_result :: out u32 = low:32[R0] - -000007d0: -000007d9: #99 := R31 - 0x10 -000007de: mem := mem with [#99, el]:u64 <- R29 -000007e3: mem := mem with [#99 + 8, el]:u64 <- R30 -000007e7: R31 := #99 -000007ee: R29 := R31 -000007f3: R30 := 0x6E8 -000007f5: call @call_weak_fn with return %000007f7 - -000007f7: -000007ff: R29 := mem[R31, el]:u64 -00000803: R30 := mem[R31 + 8, el]:u64 -00000806: R31 := R31 + 0x10 -0000080b: call R30 with noreturn - -000008c3: sub _start(_start_result) -0000090c: _start_result :: out u32 = low:32[R0] - -00000234: -0000023a: R29 := 0 -00000240: R30 := 0 -00000248: R5 := R0 -00000250: R1 := mem[R31, el]:u64 -00000257: R2 := R31 + 8 -0000025e: R6 := R31 -00000264: R0 := 0x1F000 -0000026c: R0 := mem[R0 + 0xFD8, el]:u64 -00000272: R3 := 0 -00000278: R4 := 0 -0000027d: R30 := 0x7F0 -00000280: call @__libc_start_main with return %00000282 - -00000282: -00000285: R30 := 0x7F4 -00000288: call @abort with return %000008fb - -000008fb: -000008fc: call @call_weak_fn with noreturn - -000008c6: sub abort() - - -00000286: -0000076e: R16 := 0x20000 -00000776: R17 := mem[R16 + 0x38, el]:u64 -0000077d: R16 := R16 + 0x38 -00000782: call R17 with noreturn - -000008c7: sub call_weak_fn(call_weak_fn_result) -0000090d: call_weak_fn_result :: out u32 = low:32[R0] +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 + +00000823: sub _init(_init_result) +0000086c: _init_result :: out u32 = low:32[R0] + +00000734: +0000073a: #6 := R31 - 0x10 +00000740: mem := mem with [#6, el]:u64 <- R29 +00000746: mem := mem with [#6 + 8, el]:u64 <- R30 +0000074a: R31 := #6 +00000750: R29 := R31 +00000755: R30 := 0x6E8 +00000757: call @call_weak_fn with return %00000759 + +00000759: +0000075e: R29 := mem[R31, el]:u64 +00000763: R30 := mem[R31 + 8, el]:u64 +00000767: R31 := R31 + 0x10 +0000076c: call R30 with noreturn + +00000824: sub _start(_start_result) +0000086d: _start_result :: out u32 = low:32[R0] + +00000231: +00000236: R29 := 0 +0000023b: R30 := 0 +00000241: R5 := R0 +00000248: R1 := mem[R31, el]:u64 +0000024e: R2 := R31 + 8 +00000254: R6 := R31 +00000259: R0 := 0x1F000 +00000260: R0 := mem[R0 + 0xFD8, el]:u64 +00000265: R3 := 0 +0000026a: R4 := 0 +0000026f: R30 := 0x7F0 +00000272: call @__libc_start_main with return %00000274 + +00000274: +00000277: R30 := 0x7F4 +0000027a: call @abort with return %0000085c + +0000085c: +0000085d: call @call_weak_fn with noreturn + +00000827: sub abort() + + +00000278: +000006da: R16 := 0x20000 +000006e1: R17 := mem[R16 + 0x38, el]:u64 +000006e7: R16 := R16 + 0x38 +000006ec: call R17 with noreturn + +00000828: sub call_weak_fn(call_weak_fn_result) +0000086e: call_weak_fn_result :: out u32 = low:32[R0] + +0000027c: +0000027f: R0 := 0x1F000 +00000286: R0 := mem[R0 + 0xFD0, el]:u64 +0000028c: when R0 = 0 goto %0000028a +0000085e: goto %0000053e 0000028a: -0000028e: R0 := 0x1F000 -00000296: R0 := mem[R0 + 0xFD0, el]:u64 -000002a2: #12 := R0 = 0 -0000029c: when #12 goto %0000029a -000008fd: goto %000005b8 - -0000029a: -000002a7: call R30 with noreturn - -000005b8: -000005bb: goto @__gmon_start__ - -000005b9: -00000755: R16 := 0x20000 -0000075d: R17 := mem[R16 + 0x30, el]:u64 -00000764: R16 := R16 + 0x30 -00000769: call R17 with noreturn - -000008c9: sub deregister_tm_clones(deregister_tm_clones_result) -0000090e: deregister_tm_clones_result :: out u32 = low:32[R0] - -000002ad: -000002b1: R0 := 0x20000 -000002b8: R0 := R0 + 0x78 -000002be: R1 := 0x20000 -000002c5: R1 := R1 + 0x78 -000002cd: #16 := 1 + ~R0 + R1 -000002d1: NF := 63:63[#16] -000002d4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002d7: ZF := #16 = 0 -000002da: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002e8: #21 := ZF -000002e2: when #21 goto %000002e0 -000008fe: goto %00000591 - -00000591: -00000595: R1 := 0x1F000 -0000059d: R1 := mem[R1 + 0xFC0, el]:u64 -000005a8: #76 := R1 = 0 -000005a2: when #76 goto %000002e0 -000008ff: goto %000005ab - -000002e0: -000002ed: call R30 with noreturn - -000005ab: -000005b1: R16 := R1 -000005b6: call R16 with noreturn - -000008cc: sub frame_dummy(frame_dummy_result) -0000090f: frame_dummy_result :: out u32 = low:32[R0] - -0000039d: -0000039f: call @register_tm_clones with noreturn - -000008cd: sub free(free_ptr) -00000910: free_ptr :: in out u64 = R0 - -000004fb: -000007a0: R16 := 0x20000 -000007a8: R17 := mem[R16 + 0x48, el]:u64 -000007af: R16 := R16 + 0x48 -000007b4: call R17 with noreturn - -000008ce: sub main(main_argc, main_argv, main_result) -00000911: main_argc :: in u32 = low:32[R0] -00000912: main_argv :: in out u64 = R1 -00000913: main_result :: out u32 = low:32[R0] - -000003a1: -000003a8: #42 := R31 - 0x30 -000003ad: mem := mem with [#42, el]:u64 <- R29 -000003b2: mem := mem with [#42 + 8, el]:u64 <- R30 -000003b6: R31 := #42 -000003bd: R29 := R31 -000003c5: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000003cd: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003d5: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003db: R0 := 0xB -000003e0: R30 := 0x8F0 -000003e3: call @malloc with return %000003e5 - -000003e5: -000003eb: R1 := R0 -000003f1: R0 := 0x20000 -000003f8: R0 := R0 + 0x80 -00000400: mem := mem with [R0, el]:u64 <- R1 -00000406: R0 := 0x20000 -0000040d: R0 := R0 + 0x80 -00000415: R19 := mem[R0, el]:u64 -0000041b: R0 := 0x20000 -00000422: R0 := R0 + 0x68 -00000427: R30 := 0x918 -0000042a: call @strlen with return %0000042c - -0000042c: -00000432: R2 := R0 -00000438: R0 := 0x20000 -0000043f: R1 := R0 + 0x68 -00000447: R0 := R19 -0000044c: R30 := 0x92C -0000044f: call @memcpy with return %00000451 - -00000451: -00000455: R0 := 0x20000 -0000045c: R0 := R0 + 0x80 -00000464: R0 := mem[R0, el]:u64 -00000469: R30 := 0x93C -0000046c: call @puts with return %0000046e - -0000046e: -00000472: R0 := 0x20000 -00000479: R0 := R0 + 0x80 -00000481: R0 := mem[R0, el]:u64 -00000488: R0 := R0 + 4 -00000490: mem := mem with [R31 + 0x28, el]:u64 <- R0 -00000496: R0 := 0x20000 -0000049d: R0 := R0 + 0x80 -000004a5: R19 := mem[R0, el]:u64 -000004ab: R0 := 0x20000 -000004b2: R0 := R0 + 0x80 -000004ba: R0 := mem[R0, el]:u64 -000004bf: R30 := 0x96C -000004c1: call @strlen with return %000004c3 - -000004c3: -000004c9: R2 := R0 -000004d0: R1 := 1 -000004d8: R0 := R19 -000004dd: R30 := 0x97C -000004e0: call @memset with return %000004e2 - -000004e2: -000004e6: R0 := 0x20000 -000004ed: R0 := R0 + 0x80 -000004f5: R0 := mem[R0, el]:u64 -000004fa: R30 := 0x98C -000004fd: call @free with return %000004ff - -000004ff: -00000504: R0 := 0 -0000050c: R19 := mem[R31 + 0x10, el]:u64 -00000516: R29 := mem[R31, el]:u64 -0000051a: R30 := mem[R31 + 8, el]:u64 -0000051d: R31 := R31 + 0x30 -00000522: call R30 with noreturn - -000008cf: sub malloc(malloc_size, malloc_result) -00000914: malloc_size :: in u64 = R0 -00000915: malloc_result :: out u64 = R0 - -000003e1: -00000723: R16 := 0x20000 -0000072b: R17 := mem[R16 + 0x20, el]:u64 -00000732: R16 := R16 + 0x20 -00000737: call R17 with noreturn - -000008d0: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000916: memcpy_dst :: in out u64 = R0 -00000917: memcpy_src :: in out u64 = R1 -00000918: memcpy_n :: in u64 = R2 -00000919: memcpy_result :: out u64 = R0 - -0000044d: -000006bf: R16 := 0x20000 -000006c7: R17 := mem[R16, el]:u64 -000006ce: R16 := R16 -000006d3: call R17 with noreturn - -000008d1: sub memset(memset_buf, memset_c, memset_n, memset_result) -0000091a: memset_buf :: in out u64 = R0 -0000091b: memset_c :: in u32 = low:32[R1] -0000091c: memset_n :: in u64 = R2 -0000091d: memset_result :: out u64 = R0 - -000004de: -0000073c: R16 := 0x20000 -00000744: R17 := mem[R16 + 0x28, el]:u64 -0000074b: R16 := R16 + 0x28 -00000750: call R17 with noreturn - -000008d2: sub puts(puts_s, puts_result) -0000091e: puts_s :: in u64 = R0 -0000091f: puts_result :: out u32 = low:32[R0] - -0000046a: -00000787: R16 := 0x20000 -0000078f: R17 := mem[R16 + 0x40, el]:u64 -00000796: R16 := R16 + 0x40 -0000079b: call R17 with noreturn - -000008d3: sub register_tm_clones(register_tm_clones_result) -00000920: register_tm_clones_result :: out u32 = low:32[R0] - -000002ef: -000002f3: R0 := 0x20000 -000002fa: R0 := R0 + 0x78 -00000300: R1 := 0x20000 -00000307: R1 := R1 + 0x78 -0000030f: R1 := R1 - R0 -00000316: R2 := R1 >> 0x3F -0000031e: R1 := R2 + (R1 ~>> 3) -00000325: R1 := R1 >> 1 -00000331: #30 := R1 = 0 -0000032b: when #30 goto %00000329 -00000900: goto %0000056a - -0000056a: -0000056e: R2 := 0x1F000 -00000576: R2 := mem[R2 + 0xFE0, el]:u64 -00000581: #71 := R2 = 0 -0000057b: when #71 goto %00000329 -00000901: goto %00000584 - -00000329: -00000336: call R30 with noreturn - -00000584: -0000058a: R16 := R2 -0000058f: call R16 with noreturn - -000008d6: sub strlen(strlen_s, strlen_result) -00000921: strlen_s :: in u64 = R0 -00000922: strlen_result :: out u64 = R0 +00000292: call R30 with noreturn + +0000053e: +00000541: goto @__gmon_start__ + +0000053f: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x30, el]:u64 +000006d1: R16 := R16 + 0x30 +000006d6: call R17 with noreturn + +0000082a: sub deregister_tm_clones(deregister_tm_clones_result) +0000086f: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000298: +0000029b: R0 := 0x20000 +000002a1: R0 := R0 + 0x78 +000002a6: R1 := 0x20000 +000002ac: R1 := R1 + 0x78 +000002b2: #1 := ~R0 +000002b7: #2 := R1 + ~R0 +000002bd: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002c3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002c7: ZF := #2 + 1 = 0 +000002cb: NF := 63:63[#2 + 1] +000002d1: when ZF goto %000002cf +0000085f: goto %00000520 + +00000520: +00000523: R1 := 0x1F000 +0000052a: R1 := mem[R1 + 0xFC0, el]:u64 +0000052f: when R1 = 0 goto %000002cf +00000860: goto %00000533 + +000002cf: +000002d7: call R30 with noreturn + +00000533: +00000537: R16 := R1 +0000053c: call R16 with noreturn + +0000082d: sub frame_dummy(frame_dummy_result) +00000870: frame_dummy_result :: out u32 = low:32[R0] + +0000036e: +00000370: call @register_tm_clones with noreturn + +0000082e: sub free(free_ptr) +00000871: free_ptr :: in out u64 = R0 + +000004a2: +00000706: R16 := 0x20000 +0000070d: R17 := mem[R16 + 0x48, el]:u64 +00000713: R16 := R16 + 0x48 +00000718: call R17 with noreturn + +0000082f: sub main(main_argc, main_argv, main_result) +00000872: main_argc :: in u32 = low:32[R0] +00000873: main_argv :: in out u64 = R1 +00000874: main_result :: out u32 = low:32[R0] + +00000372: +00000376: #4 := R31 - 0x30 +0000037c: mem := mem with [#4, el]:u64 <- R29 +00000382: mem := mem with [#4 + 8, el]:u64 <- R30 +00000386: R31 := #4 +0000038c: R29 := R31 +00000394: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000039b: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003a2: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003a7: R0 := 0xB +000003ac: R30 := 0x8F0 +000003af: call @malloc with return %000003b1 + +000003b1: +000003b5: R1 := R0 +000003ba: R0 := 0x20000 +000003c0: R0 := R0 + 0x80 +000003c8: mem := mem with [R0, el]:u64 <- R1 +000003cd: R0 := 0x20000 +000003d3: R0 := R0 + 0x80 +000003da: R19 := mem[R0, el]:u64 +000003df: R0 := 0x20000 +000003e5: R0 := R0 + 0x68 +000003ea: R30 := 0x918 +000003ed: call @strlen with return %000003ef + +000003ef: +000003f3: R2 := R0 +000003f8: R0 := 0x20000 +000003fe: R1 := R0 + 0x68 +00000404: R0 := R19 +00000409: R30 := 0x92C +0000040c: call @memcpy with return %0000040e + +0000040e: +00000411: R0 := 0x20000 +00000417: R0 := R0 + 0x80 +0000041e: R0 := mem[R0, el]:u64 +00000423: R30 := 0x93C +00000426: call @puts with return %00000428 00000428: -000006d8: R16 := 0x20000 -000006e0: R17 := mem[R16 + 8, el]:u64 -000006e7: R16 := R16 + 8 -000006ec: call R17 with noreturn +0000042b: R0 := 0x20000 +00000431: R0 := R0 + 0x80 +00000438: R0 := mem[R0, el]:u64 +0000043e: R0 := R0 + 4 +00000446: mem := mem with [R31 + 0x28, el]:u64 <- R0 +0000044b: R0 := 0x20000 +00000451: R0 := R0 + 0x80 +00000458: R19 := mem[R0, el]:u64 +0000045d: R0 := 0x20000 +00000463: R0 := R0 + 0x80 +0000046a: R0 := mem[R0, el]:u64 +0000046f: R30 := 0x96C +00000471: call @strlen with return %00000473 + +00000473: +00000477: R2 := R0 +0000047c: R1 := 1 +00000482: R0 := R19 +00000487: R30 := 0x97C +0000048a: call @memset with return %0000048c + +0000048c: +0000048f: R0 := 0x20000 +00000495: R0 := R0 + 0x80 +0000049c: R0 := mem[R0, el]:u64 +000004a1: R30 := 0x98C +000004a4: call @free with return %000004a6 + +000004a6: +000004a9: R0 := 0 +000004b0: R19 := mem[R31 + 0x10, el]:u64 +000004b7: R29 := mem[R31, el]:u64 +000004bc: R30 := mem[R31 + 8, el]:u64 +000004c0: R31 := R31 + 0x30 +000004c5: call R30 with noreturn + +00000830: sub malloc(malloc_size, malloc_result) +00000875: malloc_size :: in u64 = R0 +00000876: malloc_result :: out u64 = R0 + +000003ad: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x20, el]:u64 +000006a5: R16 := R16 + 0x20 +000006aa: call R17 with noreturn + +00000831: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000877: memcpy_dst :: in out u64 = R0 +00000878: memcpy_src :: in out u64 = R1 +00000879: memcpy_n :: in u64 = R2 +0000087a: memcpy_result :: out u64 = R0 + +0000040a: +00000640: R16 := 0x20000 +00000647: R17 := mem[R16, el]:u64 +0000064d: R16 := R16 +00000652: call R17 with noreturn + +00000832: sub memset(memset_buf, memset_c, memset_n, memset_result) +0000087b: memset_buf :: in out u64 = R0 +0000087c: memset_c :: in u32 = low:32[R1] +0000087d: memset_n :: in u64 = R2 +0000087e: memset_result :: out u64 = R0 + +00000488: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x28, el]:u64 +000006bb: R16 := R16 + 0x28 +000006c0: call R17 with noreturn + +00000833: sub puts(puts_s, puts_result) +0000087f: puts_s :: in u64 = R0 +00000880: puts_result :: out u32 = low:32[R0] + +00000424: +000006f0: R16 := 0x20000 +000006f7: R17 := mem[R16 + 0x40, el]:u64 +000006fd: R16 := R16 + 0x40 +00000702: call R17 with noreturn + +00000834: sub register_tm_clones(register_tm_clones_result) +00000881: register_tm_clones_result :: out u32 = low:32[R0] + +000002d9: +000002dc: R0 := 0x20000 +000002e2: R0 := R0 + 0x78 +000002e7: R1 := 0x20000 +000002ed: R1 := R1 + 0x78 +000002f4: R1 := R1 + ~R0 + 1 +000002fa: R2 := 0.63:63[R1] +00000301: R1 := R2 + (R1 ~>> 3) +00000307: R1 := extend:64[63:1[R1]] +0000030d: when R1 = 0 goto %0000030b +00000861: goto %00000502 + +00000502: +00000505: R2 := 0x1F000 +0000050c: R2 := mem[R2 + 0xFE0, el]:u64 +00000511: when R2 = 0 goto %0000030b +00000862: goto %00000515 + +0000030b: +00000313: call R30 with noreturn + +00000515: +00000519: R16 := R2 +0000051e: call R16 with noreturn + +00000837: sub strlen(strlen_s, strlen_result) +00000882: strlen_s :: in u64 = R0 +00000883: strlen_result :: out u64 = R0 + +000003eb: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16 + 8, el]:u64 +00000663: R16 := R16 + 8 +00000668: call R17 with noreturn 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 index fc5a22c09..31a71ad9a 100644 --- 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 @@ -67,689 +67,675 @@ 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_228, "%000008b4"), Attrs([]), - Subs([Sub(Tid(2_157, "@__cxa_finalize"), +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_229, "%000008b5"), +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_306, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_219, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_726, "%000006be"), Attrs([Attr("address","0x740"), +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_734, "%000006c6"), Attrs([Attr("address","0x744"), +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_741, "%000006cd"), Attrs([Attr("address","0x748"), +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_746, "%000006d2"), +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_158, "@__do_global_dtors_aux"), +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_230, "%000008b6"), + "__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_137, "@__do_global_dtors_aux"), +Blks([Blk(Tid(1_073, "@__do_global_dtors_aux"), Attrs([Attr("address","0x940")]), Phis([]), -Defs([Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x940"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#76",Imm(64)), +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_149, "%0000047d"), Attrs([Attr("address","0x940"), +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("#76",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_154, "%00000482"), Attrs([Attr("address","0x940"), +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("#76",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_158, "%00000486"), Attrs([Attr("address","0x940"), +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("#76",Imm(64))), Def(Tid(1_165, "%0000048d"), +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_173, "%00000495"), + 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_179, "%0000049b"), Attrs([Attr("address","0x94C"), +Def(Tid(1_112, "%00000458"), Attrs([Attr("address","0x94C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x950"), +Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x950"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x954"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#78",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x954"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#78",Imm(1)), -Direct(Tid(1_192, "%000004a8"))), Goto(Tid(2_218, "%000008aa"), Attrs([]), - Int(1,1), Direct(Tid(1_240, "%000004d8")))])), Blk(Tid(1_240, "%000004d8"), +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_244, "%000004dc"), Attrs([Attr("address","0x958"), +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_252, "%000004e4"), Attrs([Attr("address","0x95C"), +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)), -Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x960"), -Attr("insn","cbz x0, #0x10")]), Var("#82",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_258, "%000004ea"), - Attrs([Attr("address","0x960"), Attr("insn","cbz x0, #0x10")]), - Var("#82",Imm(1)), Direct(Tid(1_256, "%000004e8"))), -Goto(Tid(2_219, "%000008ab"), Attrs([]), Int(1,1), -Direct(Tid(1_288, "%00000508")))])), Blk(Tid(1_288, "%00000508"), +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_292, "%0000050c"), Attrs([Attr("address","0x964"), +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_300, "%00000514"), Attrs([Attr("address","0x968"), +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_305, "%00000519"), Attrs([Attr("address","0x96C"), +Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x22c")]), Var("R30",Imm(64)), Int(2416,64))]), -Jmps([Call(Tid(1_308, "%0000051c"), Attrs([Attr("address","0x96C"), +Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x22c")]), Int(1,1), -(Direct(Tid(2_157, "@__cxa_finalize")),Direct(Tid(1_256, "%000004e8"))))])), -Blk(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x970")]), Phis([]), -Defs([Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x970"), +(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_271, "%000004f7"), Attrs([Attr("address","0x970"), +Jmps([Call(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x970"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_171, "@deregister_tm_clones")),Direct(Tid(1_273, "%000004f9"))))])), -Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x974")]), Phis([]), -Defs([Def(Tid(1_278, "%000004fe"), Attrs([Attr("address","0x974"), +(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_286, "%00000506"), Attrs([Attr("address","0x978"), +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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_220, "%000008ac"), Attrs([]), Int(1,1), -Direct(Tid(1_192, "%000004a8")))])), Blk(Tid(1_192, "%000004a8"), +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_208, "%000004b8"), Attrs([Attr("address","0x97C"), +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_218, "%000004c2"), Attrs([Attr("address","0x980"), +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_222, "%000004c6"), Attrs([Attr("address","0x980"), +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_225, "%000004c9"), Attrs([Attr("address","0x980"), +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_230, "%000004ce"), +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_162, "@__libc_start_main"), +(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_231, "%000008b7"), + 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_232, "%000008b8"), Attrs([Attr("c.layout","[signed : 32]"), +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_233, "%000008b9"), Attrs([Attr("c.layout","**[char : 8]"), +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_234, "%000008ba"), Attrs([Attr("c.layout","*[ : 8]"), +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_235, "%000008bb"), Attrs([Attr("c.layout","[signed : 32]"), +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(949, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(906, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_701, "%000006a5"), Attrs([Attr("address","0x730"), +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_709, "%000006ad"), Attrs([Attr("address","0x734"), +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_716, "%000006b4"), Attrs([Attr("address","0x738"), +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_721, "%000006b9"), +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_163, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_021, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x994")]), - "_fini", Args([Arg(Tid(2_236, "%000008bc"), + "_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(41, "%00000029"), + Attrs([Attr("address","0x994")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x998"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x998"), +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("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x998"), +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("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(55, "%00000037"), Attrs([Attr("address","0x998"), +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("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x99C"), +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(72, "%00000048"), Attrs([Attr("address","0x9A0"), +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(76, "%0000004c"), Attrs([Attr("address","0x9A0"), +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(79, "%0000004f"), Attrs([Attr("address","0x9A0"), +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(84, "%00000054"), +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_164, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_022, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_237, "%000008bd"), + "_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_924, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_785, "@_init"), Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_933, "%0000078d"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#113",Imm(64)), +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_938, "%00000792"), Attrs([Attr("address","0x6DC"), +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("#113",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_943, "%00000797"), Attrs([Attr("address","0x6DC"), +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("#113",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_947, "%0000079b"), Attrs([Attr("address","0x6DC"), +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("#113",Imm(64))), Def(Tid(1_954, "%000007a2"), +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_959, "%000007a7"), + 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_961, "%000007a9"), + 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_169, "@call_weak_fn")),Direct(Tid(1_963, "%000007ab"))))])), -Blk(Tid(1_963, "%000007ab"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_971, "%000007b3"), Attrs([Attr("address","0x6E8"), +(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_975, "%000007b7"), Attrs([Attr("address","0x6E8"), +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_978, "%000007ba"), Attrs([Attr("address","0x6E8"), +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_983, "%000007bf"), +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_165, "@_start"), +(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_238, "%000008be"), +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(875, "@_start"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(881, "%00000371"), +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(887, "%00000377"), + 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(895, "%0000037f"), + 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(903, "%00000387"), + 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(910, "%0000038e"), Attrs([Attr("address","0x894"), +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(917, "%00000395"), +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(923, "%0000039b"), + 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(931, "%000003a3"), + 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(937, "%000003a9"), Attrs([Attr("address","0x8A4"), +Def(Tid(895, "%0000037f"), Attrs([Attr("address","0x8A4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(943, "%000003af"), Attrs([Attr("address","0x8A8"), +Def(Tid(900, "%00000384"), Attrs([Attr("address","0x8A8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x8AC"), +Def(Tid(905, "%00000389"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(951, "%000003b7"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(908, "%0000038c"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x17c")]), Int(1,1), -(Direct(Tid(2_162, "@__libc_start_main")),Direct(Tid(953, "%000003b9"))))])), -Blk(Tid(953, "%000003b9"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(956, "%000003bc"), Attrs([Attr("address","0x8B0"), +(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(959, "%000003bf"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(916, "%00000394"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0x130")]), Int(1,1), -(Direct(Tid(2_168, "@abort")),Direct(Tid(2_221, "%000008ad"))))])), -Blk(Tid(2_221, "%000008ad"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_222, "%000008ae"), Attrs([]), Int(1,1), -(Direct(Tid(2_169, "@call_weak_fn")),))]))])), Sub(Tid(2_168, "@abort"), +(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(957, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x780"), +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_834, "%0000072a"), Attrs([Attr("address","0x784"), +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_841, "%00000731"), Attrs([Attr("address","0x788"), +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_846, "%00000736"), +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_169, "@call_weak_fn"), +(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_239, "%000008bf"), + "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(961, "@call_weak_fn"), - Attrs([Attr("address","0x8B4")]), Phis([]), Defs([Def(Tid(965, "%000003c5"), +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(973, "%000003cd"), + 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)), -Def(Tid(985, "%000003d9"), Attrs([Attr("address","0x8BC"), -Attr("insn","cbz x0, #0x8")]), Var("#54",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(979, "%000003d3"), - Attrs([Attr("address","0x8BC"), Attr("insn","cbz x0, #0x8")]), - Var("#54",Imm(1)), Direct(Tid(977, "%000003d1"))), -Goto(Tid(2_223, "%000008af"), Attrs([]), Int(1,1), -Direct(Tid(1_388, "%0000056c")))])), Blk(Tid(977, "%000003d1"), +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(990, "%000003de"), Attrs([Attr("address","0x8C4"), +Jmps([Call(Tid(940, "%000003ac"), Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_388, "%0000056c"), Attrs([Attr("address","0x8C0")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_391, "%0000056f"), Attrs([Attr("address","0x8C0"), +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_389, "@__gmon_start__")))])), Blk(Tid(1_389, "@__gmon_start__"), +Direct(Tid(1_284, "@__gmon_start__")))])), Blk(Tid(1_284, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x770"), +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_809, "%00000711"), Attrs([Attr("address","0x774"), +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_816, "%00000718"), Attrs([Attr("address","0x778"), +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_821, "%0000071d"), +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_171, "@deregister_tm_clones"), +Sub(Tid(2_029, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8D0")]), - "deregister_tm_clones", Args([Arg(Tid(2_240, "%000008c0"), + "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(996, "@deregister_tm_clones"), - Attrs([Attr("address","0x8D0")]), Phis([]), -Defs([Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x8D0"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x8D4"), -Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(1_013, "%000003f5"), - Attrs([Attr("address","0x8D8"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(1_020, "%000003fc"), - Attrs([Attr("address","0x8DC"), Attr("insn","add x1, x1, #0x70")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(1_028, "%00000404"), Attrs([Attr("address","0x8E0"), -Attr("insn","cmp x1, x0")]), Var("#58",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x8E0"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#58",Imm(64)))), Def(Tid(1_035, "%0000040b"), +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("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#58",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#58",Imm(64)))))), -Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x8E0"), + 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(Var("#58",Imm(64)),Int(0,64))), Def(Tid(1_041, "%00000411"), +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("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#58",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#58",Imm(64))))))), -Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x8E4"), -Attr("insn","b.eq #0x18")]), Var("#63",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(1_049, "%00000419"), Attrs([Attr("address","0x8E4"), -Attr("insn","b.eq #0x18")]), Var("#63",Imm(1)), -Direct(Tid(1_047, "%00000417"))), Goto(Tid(2_224, "%000008b0"), Attrs([]), - Int(1,1), Direct(Tid(1_349, "%00000545")))])), Blk(Tid(1_349, "%00000545"), + 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_353, "%00000549"), Attrs([Attr("address","0x8E8"), +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_361, "%00000551"), Attrs([Attr("address","0x8EC"), +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)), -Def(Tid(1_372, "%0000055c"), Attrs([Attr("address","0x8F0"), -Attr("insn","cbz x1, #0xc")]), Var("#90",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_366, "%00000556"), - Attrs([Attr("address","0x8F0"), Attr("insn","cbz x1, #0xc")]), - Var("#90",Imm(1)), Direct(Tid(1_047, "%00000417"))), -Goto(Tid(2_225, "%000008b1"), Attrs([]), Int(1,1), -Direct(Tid(1_375, "%0000055f")))])), Blk(Tid(1_047, "%00000417"), +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_060, "%00000424"), Attrs([Attr("address","0x8FC"), +Jmps([Call(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x8FC"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_375, "%0000055f"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_381, "%00000565"), Attrs([Attr("address","0x8F4"), +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_386, "%0000056a"), Attrs([Attr("address","0x8F8"), +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_174, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x990")]), "frame_dummy", Args([Arg(Tid(2_241, "%000008c1"), +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_236, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_160, "@frame_dummy"), Attrs([Attr("address","0x990")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_238, "%000004d6"), Attrs([Attr("address","0x990"), +Jmps([Call(Tid(1_162, "%0000048a"), Attrs([Attr("address","0x990"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_181, "@register_tm_clones")),))]))])), Sub(Tid(2_175, "@free"), +(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_242, "%000008c2"), +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(791, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x7A0"), +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_884, "%0000075c"), Attrs([Attr("address","0x7A4"), +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_891, "%00000763"), Attrs([Attr("address","0x7A8"), +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_896, "%00000768"), +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_176, "@main"), +(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_243, "%000008c3"), +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_244, "%000008c4"), +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_245, "%000008c5"), +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(556, "@main"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(563, "%00000233"), +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("#9",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#1",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(568, "%00000238"), Attrs([Attr("address","0x7C0"), +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("#9",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(573, "%0000023d"), Attrs([Attr("address","0x7C0"), +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("#9",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(577, "%00000241"), Attrs([Attr("address","0x7C0"), +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("#9",Imm(64))), Def(Tid(583, "%00000247"), +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(590, "%0000024e"), + 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(598, "%00000256"), + 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(604, "%0000025c"), Attrs([Attr("address","0x7D0"), +Def(Tid(597, "%00000255"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), -Def(Tid(612, "%00000264"), Attrs([Attr("address","0x7D4"), -Attr("insn","stp x19, x20, [sp, #0x10]")]), Var("#14",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64))), Def(Tid(617, "%00000269"), +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("#14",Imm(64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(622, "%0000026e"), Attrs([Attr("address","0x7D4"), +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("#14",Imm(64)),Int(8,64)),Var("R20",Imm(64)),LittleEndian(),64)), -Def(Tid(627, "%00000273"), Attrs([Attr("address","0x7D8"), +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(630, "%00000276"), Attrs([Attr("address","0x7D8"), +Jmps([Call(Tid(623, "%0000026f"), Attrs([Attr("address","0x7D8"), Attr("insn","bl #-0x88")]), Int(1,1), -(Direct(Tid(2_177, "@malloc")),Direct(Tid(632, "%00000278"))))])), -Blk(Tid(632, "%00000278"), Attrs([Attr("address","0x7DC")]), Phis([]), -Defs([Def(Tid(636, "%0000027c"), Attrs([Attr("address","0x7DC"), +(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(643, "%00000283"), Attrs([Attr("address","0x7E0"), +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(651, "%0000028b"), +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(659, "%00000293"), + 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(667, "%0000029b"), + 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(672, "%000002a0"), Attrs([Attr("address","0x7F0"), +Def(Tid(659, "%00000293"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0xd0")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(675, "%000002a3"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(662, "%00000296"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0xd0")]), Int(1,1), -(Direct(Tid(2_184, "@strlen")),Direct(Tid(677, "%000002a5"))))])), -Blk(Tid(677, "%000002a5"), Attrs([Attr("address","0x7F4")]), Phis([]), -Defs([Def(Tid(683, "%000002ab"), Attrs([Attr("address","0x7F4"), +(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(691, "%000002b3"), Attrs([Attr("address","0x7F8"), +Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x7F8"), Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), -Def(Tid(699, "%000002bb"), Attrs([Attr("address","0x7FC"), +Def(Tid(680, "%000002a8"), Attrs([Attr("address","0x7FC"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(704, "%000002c0"), Attrs([Attr("address","0x800"), +Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x800"), Attr("insn","bl #-0xf0")]), Var("R30",Imm(64)), Int(2052,64))]), -Jmps([Call(Tid(707, "%000002c3"), Attrs([Attr("address","0x800"), +Jmps([Call(Tid(688, "%000002b0"), Attrs([Attr("address","0x800"), Attr("insn","bl #-0xf0")]), Int(1,1), -(Direct(Tid(2_178, "@memcpy")),Direct(Tid(709, "%000002c5"))))])), -Blk(Tid(709, "%000002c5"), Attrs([Attr("address","0x804")]), Phis([]), -Defs([Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x804"), +(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(720, "%000002d0"), Attrs([Attr("address","0x808"), +Def(Tid(699, "%000002bb"), Attrs([Attr("address","0x808"), Attr("insn","bl #-0x78")]), Var("R30",Imm(64)), Int(2060,64))]), -Jmps([Call(Tid(723, "%000002d3"), Attrs([Attr("address","0x808"), +Jmps([Call(Tid(702, "%000002be"), Attrs([Attr("address","0x808"), Attr("insn","bl #-0x78")]), Int(1,1), -(Direct(Tid(2_180, "@puts")),Direct(Tid(725, "%000002d5"))))])), -Blk(Tid(725, "%000002d5"), Attrs([Attr("address","0x80C")]), Phis([]), -Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x80C"), +(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(739, "%000002e3"), Attrs([Attr("address","0x810"), +Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x810"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(744, "%000002e8"), Attrs([Attr("address","0x814"), +Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x814"), Attr("insn","bl #-0xf4")]), Var("R30",Imm(64)), Int(2072,64))]), -Jmps([Call(Tid(746, "%000002ea"), Attrs([Attr("address","0x814"), +Jmps([Call(Tid(722, "%000002d2"), Attrs([Attr("address","0x814"), Attr("insn","bl #-0xf4")]), Int(1,1), -(Direct(Tid(2_184, "@strlen")),Direct(Tid(748, "%000002ec"))))])), -Blk(Tid(748, "%000002ec"), Attrs([Attr("address","0x818")]), Phis([]), -Defs([Def(Tid(753, "%000002f1"), Attrs([Attr("address","0x818"), +(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(761, "%000002f9"), Attrs([Attr("address","0x81C"), +Def(Tid(733, "%000002dd"), Attrs([Attr("address","0x81C"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(769, "%00000301"), Attrs([Attr("address","0x820"), +Def(Tid(739, "%000002e3"), Attrs([Attr("address","0x820"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(774, "%00000306"), Attrs([Attr("address","0x824"), +Def(Tid(744, "%000002e8"), Attrs([Attr("address","0x824"), Attr("insn","bl #-0xc4")]), Var("R30",Imm(64)), Int(2088,64))]), -Jmps([Call(Tid(777, "%00000309"), Attrs([Attr("address","0x824"), +Jmps([Call(Tid(747, "%000002eb"), Attrs([Attr("address","0x824"), Attr("insn","bl #-0xc4")]), Int(1,1), -(Direct(Tid(2_179, "@memset")),Direct(Tid(779, "%0000030b"))))])), -Blk(Tid(779, "%0000030b"), Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(785, "%00000311"), Attrs([Attr("address","0x828"), +(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(790, "%00000316"), Attrs([Attr("address","0x82C"), +Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0x8c")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(793, "%00000319"), Attrs([Attr("address","0x82C"), +Jmps([Call(Tid(762, "%000002fa"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0x8c")]), Int(1,1), -(Direct(Tid(2_175, "@free")),Direct(Tid(795, "%0000031b"))))])), -Blk(Tid(795, "%0000031b"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(802, "%00000322"), Attrs([Attr("address","0x830"), -Attr("insn","ldp x19, x20, [sp, #0x10]")]), Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(806, "%00000326"), Attrs([Attr("address","0x830"), +(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("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x834"), +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(821, "%00000335"), Attrs([Attr("address","0x838"), +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(831, "%0000033f"), Attrs([Attr("address","0x83C"), +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(835, "%00000343"), Attrs([Attr("address","0x83C"), +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(838, "%00000346"), Attrs([Attr("address","0x83C"), +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(843, "%0000034b"), +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_177, "@malloc"), +(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_246, "%000008c6"), Attrs([Attr("alloc-size","()"), + 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_247, "%000008c7"), +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(628, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x750"), +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_759, "%000006df"), Attrs([Attr("address","0x754"), +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_766, "%000006e6"), Attrs([Attr("address","0x758"), +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_771, "%000006eb"), +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_178, "@memcpy"), +(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_248, "%000008c8"), Attrs([Attr("nonnull","()"), + 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_249, "%000008c9"), +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_250, "%000008ca"), Attrs([Attr("c.layout","[unsigned long : 64]"), +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_251, "%000008cb"), Attrs([Attr("c.layout","*[ : 8]"), +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(705, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_651, "%00000673"), Attrs([Attr("address","0x710"), +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_659, "%0000067b"), Attrs([Attr("address","0x714"), +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_666, "%00000682"), Attrs([Attr("address","0x718"), +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_671, "%00000687"), +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_179, "@memset"), +(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_252, "%000008cc"), Attrs([Attr("nonnull","()"), + 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_253, "%000008cd"), +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_254, "%000008ce"), +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_255, "%000008cf"), Attrs([Attr("c.layout","*[ : 8]"), +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(775, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x760"), +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_784, "%000006f8"), Attrs([Attr("address","0x764"), +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_791, "%000006ff"), Attrs([Attr("address","0x768"), +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_796, "%00000704"), +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_180, "@puts"), +(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_256, "%000008d0"), Attrs([Attr("c.layout","*[char : 8]"), + 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_257, "%000008d1"), Attrs([Attr("c.layout","[signed : 32]"), +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(721, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x790"), +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_859, "%00000743"), Attrs([Attr("address","0x794"), +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_866, "%0000074a"), Attrs([Attr("address","0x798"), +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_871, "%0000074f"), +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_181, "@register_tm_clones"), +Sub(Tid(2_039, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), - "register_tm_clones", Args([Arg(Tid(2_258, "%000008d2"), + "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_062, "@register_tm_clones"), +Blks([Blk(Tid(1_011, "@register_tm_clones"), Attrs([Attr("address","0x900")]), Phis([]), -Defs([Def(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x900"), +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_073, "%00000431"), Attrs([Attr("address","0x904"), +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_079, "%00000437"), +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_086, "%0000043e"), + 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_094, "%00000446"), Attrs([Attr("address","0x910"), +Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x910"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(1_101, "%0000044d"), - Attrs([Attr("address","0x914"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x918"), +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,64)))), -Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x91C"), +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)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(1_128, "%00000468"), - Attrs([Attr("address","0x920"), Attr("insn","cbz x1, #0x18")]), - Var("#72",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(1_122, "%00000462"), Attrs([Attr("address","0x920"), -Attr("insn","cbz x1, #0x18")]), Var("#72",Imm(1)), -Direct(Tid(1_120, "%00000460"))), Goto(Tid(2_226, "%000008b2"), Attrs([]), - Int(1,1), Direct(Tid(1_310, "%0000051e")))])), Blk(Tid(1_310, "%0000051e"), +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_314, "%00000522"), Attrs([Attr("address","0x924"), +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_322, "%0000052a"), Attrs([Attr("address","0x928"), +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)), -Def(Tid(1_333, "%00000535"), Attrs([Attr("address","0x92C"), -Attr("insn","cbz x2, #0xc")]), Var("#85",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_327, "%0000052f"), - Attrs([Attr("address","0x92C"), Attr("insn","cbz x2, #0xc")]), - Var("#85",Imm(1)), Direct(Tid(1_120, "%00000460"))), -Goto(Tid(2_227, "%000008b3"), Attrs([]), Int(1,1), -Direct(Tid(1_336, "%00000538")))])), Blk(Tid(1_120, "%00000460"), +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_133, "%0000046d"), Attrs([Attr("address","0x938"), +Jmps([Call(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x938"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_336, "%00000538"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_342, "%0000053e"), Attrs([Attr("address","0x930"), +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_347, "%00000543"), Attrs([Attr("address","0x934"), +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_184, "@strlen"), +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_259, "%000008d3"), Attrs([Attr("nonnull","()"), + 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_260, "%000008d4"), +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(673, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(660, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_676, "%0000068c"), Attrs([Attr("address","0x720"), +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_684, "%00000694"), Attrs([Attr("address","0x724"), +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_691, "%0000069b"), Attrs([Attr("address","0x728"), +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_696, "%000006a0"), +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 index 66bc6cebb..c5b4e5f34 100644 --- 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 @@ -1,355 +1,348 @@ -000008b4: program -0000086d: sub __cxa_finalize(__cxa_finalize_result) -000008b5: __cxa_finalize_result :: out u32 = low:32[R0] - -0000051a: -000006be: R16 := 0x20000 -000006c6: R17 := mem[R16 + 0x18, el]:u64 -000006cd: R16 := R16 + 0x18 -000006d2: call R17 with noreturn - -0000086e: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008b6: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000471: -00000478: #76 := R31 - 0x20 -0000047d: mem := mem with [#76, el]:u64 <- R29 -00000482: mem := mem with [#76 + 8, el]:u64 <- R30 -00000486: R31 := #76 -0000048d: R29 := R31 -00000495: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000049b: R19 := 0x20000 -000004a4: R0 := pad:32[mem[R19 + 0x70]] -000004b0: #78 := ~~0:0[R0] -000004aa: when #78 goto %000004a8 -000008aa: goto %000004d8 - -000004d8: -000004dc: R0 := 0x1F000 -000004e4: R0 := mem[R0 + 0xFC8, el]:u64 -000004f0: #82 := R0 = 0 -000004ea: when #82 goto %000004e8 -000008ab: goto %00000508 - -00000508: -0000050c: R0 := 0x20000 -00000514: R0 := mem[R0 + 0x58, el]:u64 -00000519: R30 := 0x970 -0000051c: call @__cxa_finalize with return %000004e8 - -000004e8: -000004f5: R30 := 0x974 -000004f7: call @deregister_tm_clones with return %000004f9 - -000004f9: -000004fe: R0 := 1 -00000506: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -000008ac: goto %000004a8 - -000004a8: -000004b8: R19 := mem[R31 + 0x10, el]:u64 -000004c2: R29 := mem[R31, el]:u64 -000004c6: R30 := mem[R31 + 8, el]:u64 -000004c9: R31 := R31 + 0x20 -000004ce: call R30 with noreturn - -00000872: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008b7: __libc_start_main_main :: in u64 = R0 -000008b8: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008b9: __libc_start_main_arg3 :: in out u64 = R2 -000008ba: __libc_start_main_auxv :: in out u64 = R3 -000008bb: __libc_start_main_result :: out u32 = low:32[R0] - -000003b5: -000006a5: R16 := 0x20000 -000006ad: R17 := mem[R16 + 0x10, el]:u64 -000006b4: R16 := R16 + 0x10 -000006b9: call R17 with noreturn - -00000873: sub _fini(_fini_result) -000008bc: _fini_result :: out u32 = low:32[R0] +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: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -00000874: sub _init(_init_result) -000008bd: _init_result :: out u32 = low:32[R0] - -00000784: -0000078d: #113 := R31 - 0x10 -00000792: mem := mem with [#113, el]:u64 <- R29 -00000797: mem := mem with [#113 + 8, el]:u64 <- R30 -0000079b: R31 := #113 -000007a2: R29 := R31 -000007a7: R30 := 0x6E8 -000007a9: call @call_weak_fn with return %000007ab - -000007ab: -000007b3: R29 := mem[R31, el]:u64 -000007b7: R30 := mem[R31 + 8, el]:u64 -000007ba: R31 := R31 + 0x10 -000007bf: call R30 with noreturn - -00000875: sub _start(_start_result) -000008be: _start_result :: out u32 = low:32[R0] - -0000036b: -00000371: R29 := 0 -00000377: R30 := 0 -0000037f: R5 := R0 -00000387: R1 := mem[R31, el]:u64 -0000038e: R2 := R31 + 8 -00000395: R6 := R31 -0000039b: R0 := 0x1F000 -000003a3: R0 := mem[R0 + 0xFD8, el]:u64 -000003a9: R3 := 0 -000003af: R4 := 0 -000003b4: R30 := 0x8B0 -000003b7: call @__libc_start_main with return %000003b9 - -000003b9: -000003bc: R30 := 0x8B4 -000003bf: call @abort with return %000008ad - -000008ad: -000008ae: call @call_weak_fn with noreturn - -00000878: sub abort() - - -000003bd: -00000722: R16 := 0x20000 -0000072a: R17 := mem[R16 + 0x38, el]:u64 -00000731: R16 := R16 + 0x38 -00000736: call R17 with noreturn - -00000879: sub call_weak_fn(call_weak_fn_result) -000008bf: call_weak_fn_result :: out u32 = low:32[R0] - -000003c1: -000003c5: R0 := 0x1F000 -000003cd: R0 := mem[R0 + 0xFD0, el]:u64 -000003d9: #54 := R0 = 0 -000003d3: when #54 goto %000003d1 -000008af: goto %0000056c - -000003d1: -000003de: call R30 with noreturn - -0000056c: -0000056f: goto @__gmon_start__ - -0000056d: -00000709: R16 := 0x20000 -00000711: R17 := mem[R16 + 0x30, el]:u64 -00000718: R16 := R16 + 0x30 -0000071d: call R17 with noreturn - -0000087b: sub deregister_tm_clones(deregister_tm_clones_result) -000008c0: deregister_tm_clones_result :: out u32 = low:32[R0] - -000003e4: -000003e8: R0 := 0x20000 -000003ef: R0 := R0 + 0x70 -000003f5: R1 := 0x20000 -000003fc: R1 := R1 + 0x70 -00000404: #58 := 1 + ~R0 + R1 -00000408: NF := 63:63[#58] -0000040b: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#58] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#58] -0000040e: ZF := #58 = 0 -00000411: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#58] | 63:63[R1] - & ~63:63[#58] -0000041f: #63 := ZF -00000419: when #63 goto %00000417 -000008b0: goto %00000545 - -00000545: -00000549: R1 := 0x1F000 -00000551: R1 := mem[R1 + 0xFC0, el]:u64 -0000055c: #90 := R1 = 0 -00000556: when #90 goto %00000417 -000008b1: goto %0000055f - -00000417: -00000424: call R30 with noreturn - -0000055f: -00000565: R16 := R1 -0000056a: call R16 with noreturn - -0000087e: sub frame_dummy(frame_dummy_result) -000008c1: frame_dummy_result :: out u32 = low:32[R0] - -000004d4: -000004d6: call @register_tm_clones with noreturn - -0000087f: sub free(free_ptr) -000008c2: free_ptr :: in out u64 = R0 - -00000317: -00000754: R16 := 0x20000 -0000075c: R17 := mem[R16 + 0x48, el]:u64 -00000763: R16 := R16 + 0x48 -00000768: call R17 with noreturn - -00000880: sub main(main_argc, main_argv, main_result) -000008c3: main_argc :: in u32 = low:32[R0] -000008c4: main_argv :: in out u64 = R1 -000008c5: main_result :: out u32 = low:32[R0] - -0000022c: -00000233: #9 := R31 - 0x30 -00000238: mem := mem with [#9, el]:u64 <- R29 -0000023d: mem := mem with [#9 + 8, el]:u64 <- R30 -00000241: R31 := #9 -00000247: R0 := 0xB -0000024e: R29 := R31 -00000256: mem := mem with [R31 + 0x20, el]:u64 <- R21 -0000025c: R21 := 0x20000 -00000264: #14 := R31 + 0x10 -00000269: mem := mem with [#14, el]:u64 <- R19 -0000026e: mem := mem with [#14 + 8, el]:u64 <- R20 -00000273: R30 := 0x7DC -00000276: call @malloc with return %00000278 - -00000278: -0000027c: R20 := 0x20000 -00000283: R20 := R20 + 0x60 -0000028b: R19 := R0 -00000293: R0 := R20 -0000029b: mem := mem with [R21 + 0x78, el]:u64 <- R19 -000002a0: R30 := 0x7F4 -000002a3: call @strlen with return %000002a5 - -000002a5: -000002ab: R2 := R0 -000002b3: R1 := R20 -000002bb: R0 := R19 -000002c0: R30 := 0x804 -000002c3: call @memcpy with return %000002c5 - -000002c5: +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 := 0x80C -000002d3: call @puts with return %000002d5 +000002d0: R30 := 0x818 +000002d2: call @strlen with return %000002d4 -000002d5: -000002db: R19 := mem[R21 + 0x78, el]:u64 +000002d4: +000002d7: R1 := 1 +000002dd: R2 := R0 000002e3: R0 := R19 -000002e8: R30 := 0x818 -000002ea: call @strlen with return %000002ec - -000002ec: -000002f1: R1 := 1 -000002f9: R2 := R0 -00000301: R0 := R19 -00000306: R30 := 0x828 -00000309: call @memset with return %0000030b - -0000030b: -00000311: R0 := mem[R21 + 0x78, el]:u64 -00000316: R30 := 0x830 -00000319: call @free with return %0000031b - -0000031b: -00000322: R19 := mem[R31 + 0x10, el]:u64 -00000326: R20 := mem[R31 + 0x18, el]:u64 -0000032d: R0 := 0 -00000335: R21 := mem[R31 + 0x20, el]:u64 -0000033f: R29 := mem[R31, el]:u64 -00000343: R30 := mem[R31 + 8, el]:u64 -00000346: R31 := R31 + 0x30 -0000034b: call R30 with noreturn - -00000881: sub malloc(malloc_size, malloc_result) -000008c6: malloc_size :: in u64 = R0 -000008c7: malloc_result :: out u64 = R0 - -00000274: -000006d7: R16 := 0x20000 -000006df: R17 := mem[R16 + 0x20, el]:u64 -000006e6: R16 := R16 + 0x20 -000006eb: call R17 with noreturn - -00000882: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008c8: memcpy_dst :: in out u64 = R0 -000008c9: memcpy_src :: in out u64 = R1 -000008ca: memcpy_n :: in u64 = R2 -000008cb: memcpy_result :: out u64 = R0 - -000002c1: +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 -0000067b: R17 := mem[R16, el]:u64 -00000682: R16 := R16 -00000687: call R17 with noreturn - -00000883: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008cc: memset_buf :: in out u64 = R0 -000008cd: memset_c :: in u32 = low:32[R1] -000008ce: memset_n :: in u64 = R2 -000008cf: memset_result :: out u64 = R0 - -00000307: -000006f0: R16 := 0x20000 -000006f8: R17 := mem[R16 + 0x28, el]:u64 -000006ff: R16 := R16 + 0x28 -00000704: call R17 with noreturn - -00000884: sub puts(puts_s, puts_result) -000008d0: puts_s :: in u64 = R0 -000008d1: puts_result :: out u32 = low:32[R0] - -000002d1: -0000073b: R16 := 0x20000 -00000743: R17 := mem[R16 + 0x40, el]:u64 -0000074a: R16 := R16 + 0x40 -0000074f: call R17 with noreturn - -00000885: sub register_tm_clones(register_tm_clones_result) -000008d2: register_tm_clones_result :: out u32 = low:32[R0] - -00000426: -0000042a: R0 := 0x20000 -00000431: R0 := R0 + 0x70 -00000437: R1 := 0x20000 -0000043e: R1 := R1 + 0x70 -00000446: R1 := R1 - R0 -0000044d: R2 := R1 >> 0x3F -00000455: R1 := R2 + (R1 ~>> 3) -0000045c: R1 := R1 >> 1 -00000468: #72 := R1 = 0 -00000462: when #72 goto %00000460 -000008b2: goto %0000051e - -0000051e: -00000522: R2 := 0x1F000 -0000052a: R2 := mem[R2 + 0xFE0, el]:u64 -00000535: #85 := R2 = 0 -0000052f: when #85 goto %00000460 -000008b3: goto %00000538 - -00000460: -0000046d: call R30 with noreturn - -00000538: -0000053e: R16 := R2 -00000543: call R16 with noreturn - -00000888: sub strlen(strlen_s, strlen_result) -000008d3: strlen_s :: in u64 = R0 -000008d4: strlen_result :: out u64 = R0 - -000002a1: -0000068c: R16 := 0x20000 -00000694: R17 := mem[R16 + 8, el]:u64 -0000069b: R16 := R16 + 8 -000006a0: call R17 with noreturn +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/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt index 4ce6993bd..58e85e225 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt @@ -69,713 +69,699 @@ Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), Annotation(Region(0x800,0x9C3), Attr("section","\".text\"")), Annotation(Region(0x800,0x9C3), Attr("code-region","()")), Annotation(Region(0x9C4,0x9D7), Attr("code-region","()"))]), -Program(Tid(2_361, "%00000939"), Attrs([]), - Subs([Sub(Tid(2_290, "@__cxa_finalize"), +Program(Tid(2_217, "%000008a9"), Attrs([]), + Subs([Sub(Tid(2_146, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_362, "%0000093a"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_218, "%000008aa"), 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_323, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_234, "@__cxa_finalize"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_743, "%000006cf"), Attrs([Attr("address","0x790"), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x794"), +Def(Tid(1_629, "%0000065d"), 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_758, "%000006de"), Attrs([Attr("address","0x798"), +Def(Tid(1_635, "%00000663"), 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_763, "%000006e3"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_640, "%00000668"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_291, "@__do_global_dtors_aux"), +Sub(Tid(2_147, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_363, "%0000093b"), + "__do_global_dtors_aux", Args([Arg(Tid(2_219, "%000008ab"), 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(802, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(809, "%00000329"), +Blks([Blk(Tid(767, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(771, "%00000303"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x8C0"), +Def(Tid(777, "%00000309"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(819, "%00000333"), Attrs([Attr("address","0x8C0"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(823, "%00000337"), Attrs([Attr("address","0x8C0"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(787, "%00000313"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(830, "%0000033e"), +Var("#3",Imm(64))), Def(Tid(793, "%00000319"), Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(838, "%00000346"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(801, "%00000321"), 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(844, "%0000034c"), Attrs([Attr("address","0x8CC"), +Def(Tid(806, "%00000326"), Attrs([Attr("address","0x8CC"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(853, "%00000355"), Attrs([Attr("address","0x8D0"), +Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x8D0"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(865, "%00000361"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(859, "%0000035b"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(857, "%00000359"))), Goto(Tid(2_351, "%0000092f"), Attrs([]), - Int(1,1), Direct(Tid(1_257, "%000004e9")))])), Blk(Tid(1_257, "%000004e9"), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(819, "%00000333"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(817, "%00000331"))), +Goto(Tid(2_207, "%0000089f"), Attrs([]), Int(1,1), +Direct(Tid(1_179, "%0000049b")))])), Blk(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8D8"), +Defs([Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x8D8"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x8DC"), +Def(Tid(1_189, "%000004a5"), 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)), -Def(Tid(1_281, "%00000501"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_275, "%000004fb"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), - Var("#67",Imm(1)), Direct(Tid(1_273, "%000004f9"))), -Goto(Tid(2_352, "%00000930"), Attrs([]), Int(1,1), -Direct(Tid(1_305, "%00000519")))])), Blk(Tid(1_305, "%00000519"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_193, "%000004a9"))), Goto(Tid(2_208, "%000008a0"), Attrs([]), + Int(1,1), Direct(Tid(1_218, "%000004c2")))])), Blk(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x8E4"), +Defs([Def(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_317, "%00000525"), Attrs([Attr("address","0x8E8"), +Def(Tid(1_228, "%000004cc"), 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_322, "%0000052a"), Attrs([Attr("address","0x8EC"), +Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(1_236, "%000004d4"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_290, "@__cxa_finalize")),Direct(Tid(1_273, "%000004f9"))))])), -Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x8F0"), +(Direct(Tid(2_146, "@__cxa_finalize")),Direct(Tid(1_193, "%000004a9"))))])), +Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_201, "%000004b1"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_288, "%00000508"), Attrs([Attr("address","0x8F0"), +Jmps([Call(Tid(1_203, "%000004b3"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_304, "@deregister_tm_clones")),Direct(Tid(1_290, "%0000050a"))))])), -Blk(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_295, "%0000050f"), Attrs([Attr("address","0x8F4"), +(Direct(Tid(2_160, "@deregister_tm_clones")),Direct(Tid(1_205, "%000004b5"))))])), +Blk(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_208, "%000004b8"), Attrs([Attr("address","0x8F4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_303, "%00000517"), Attrs([Attr("address","0x8F8"), +Def(Tid(1_216, "%000004c0"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_353, "%00000931"), Attrs([]), Int(1,1), -Direct(Tid(857, "%00000359")))])), Blk(Tid(857, "%00000359"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(873, "%00000369"), +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_209, "%000008a1"), Attrs([]), Int(1,1), +Direct(Tid(817, "%00000331")))])), Blk(Tid(817, "%00000331"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(827, "%0000033b"), 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(883, "%00000373"), Attrs([Attr("address","0x900"), +Def(Tid(834, "%00000342"), 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(887, "%00000377"), Attrs([Attr("address","0x900"), +Def(Tid(839, "%00000347"), 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(890, "%0000037a"), Attrs([Attr("address","0x900"), +Def(Tid(843, "%0000034b"), 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(895, "%0000037f"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_295, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_151, "@__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_364, "%0000093c"), + Args([Arg(Tid(2_220, "%000008ac"), 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_365, "%0000093d"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_221, "%000008ad"), 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_366, "%0000093e"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_222, "%000008ae"), 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_367, "%0000093f"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_223, "%000008af"), 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_368, "%00000940"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_224, "%000008b0"), 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(614, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(600, "@__libc_start_main"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x780"), +Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_726, "%000006be"), Attrs([Attr("address","0x784"), +Def(Tid(1_607, "%00000647"), 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_733, "%000006c5"), Attrs([Attr("address","0x788"), +Def(Tid(1_613, "%0000064d"), 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_738, "%000006ca"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_618, "%00000652"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_296, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_152, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9C4")]), - "_fini", Args([Arg(Tid(2_369, "%00000941"), + "_fini", Args([Arg(Tid(2_225, "%000008b1"), 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","0x9C4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9C4")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x9C8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9C8"), +Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x9C8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9C8"), +Store(Var("mem",Mem(64,8)),Var("#0",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(50, "%00000032"), Attrs([Attr("address","0x9C8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9C8"), +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","0x9C8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9CC"), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9CC"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9D0"), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9D0"), 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(76, "%0000004c"), Attrs([Attr("address","0x9D0"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9D0"), 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(79, "%0000004f"), Attrs([Attr("address","0x9D0"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x9D0"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), Attrs([Attr("address","0x9D4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_297, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_153, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), - "_init", Args([Arg(Tid(2_370, "%00000942"), + "_init", Args([Arg(Tid(2_226, "%000008b2"), 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(2_061, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_920, "@_init"), Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(2_070, "%00000816"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#98",Imm(64)), +Defs([Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(2_075, "%0000081b"), Attrs([Attr("address","0x72C"), +Def(Tid(1_932, "%0000078c"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#98",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(2_080, "%00000820"), Attrs([Attr("address","0x72C"), +Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_938, "%00000792"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#98",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(2_084, "%00000824"), Attrs([Attr("address","0x72C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_942, "%00000796"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#98",Imm(64))), Def(Tid(2_091, "%0000082b"), +Var("#7",Imm(64))), Def(Tid(1_948, "%0000079c"), Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_096, "%00000830"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_953, "%000007a1"), Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), - Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(2_098, "%00000832"), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_955, "%000007a3"), Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), -(Direct(Tid(2_302, "@call_weak_fn")),Direct(Tid(2_100, "%00000834"))))])), -Blk(Tid(2_100, "%00000834"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(2_108, "%0000083c"), Attrs([Attr("address","0x738"), +(Direct(Tid(2_158, "@call_weak_fn")),Direct(Tid(1_957, "%000007a5"))))])), +Blk(Tid(1_957, "%000007a5"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(1_962, "%000007aa"), 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(2_112, "%00000840"), Attrs([Attr("address","0x738"), +Def(Tid(1_967, "%000007af"), 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(2_115, "%00000843"), Attrs([Attr("address","0x738"), +Def(Tid(1_971, "%000007b3"), 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(2_120, "%00000848"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_976, "%000007b8"), Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_298, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_154, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), Attr("stub","()"), Attr("entry-point","()")]), "_start", - Args([Arg(Tid(2_371, "%00000943"), Attrs([Attr("c.layout","[signed : 32]"), + Args([Arg(Tid(2_227, "%000008b3"), 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(540, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(546, "%00000222"), Attrs([Attr("address","0x804"), +Blks([Blk(Tid(537, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(542, "%0000021e"), Attrs([Attr("address","0x804"), Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), -Def(Tid(552, "%00000228"), Attrs([Attr("address","0x808"), +Def(Tid(547, "%00000223"), Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(560, "%00000230"), Attrs([Attr("address","0x80C"), +Def(Tid(553, "%00000229"), Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), -Def(Tid(568, "%00000238"), Attrs([Attr("address","0x810"), +Def(Tid(560, "%00000230"), 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(575, "%0000023f"), Attrs([Attr("address","0x814"), +Def(Tid(566, "%00000236"), Attrs([Attr("address","0x814"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(582, "%00000246"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(572, "%0000023c"), Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(588, "%0000024c"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(577, "%00000241"), Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(596, "%00000254"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(584, "%00000248"), 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(602, "%0000025a"), Attrs([Attr("address","0x824"), +Def(Tid(589, "%0000024d"), Attrs([Attr("address","0x824"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(608, "%00000260"), Attrs([Attr("address","0x828"), +Def(Tid(594, "%00000252"), Attrs([Attr("address","0x828"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(613, "%00000265"), Attrs([Attr("address","0x82C"), +Def(Tid(599, "%00000257"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x82C"), +Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_295, "@__libc_start_main")),Direct(Tid(618, "%0000026a"))))])), -Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x830"), +(Direct(Tid(2_151, "@__libc_start_main")),Direct(Tid(604, "%0000025c"))))])), +Blk(Tid(604, "%0000025c"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x830"), Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x830"), +Jmps([Call(Tid(610, "%00000262"), Attrs([Attr("address","0x830"), Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_301, "@abort")),Direct(Tid(2_354, "%00000932"))))])), -Blk(Tid(2_354, "%00000932"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_355, "%00000933"), Attrs([]), Int(1,1), -(Direct(Tid(2_302, "@call_weak_fn")),))]))])), Sub(Tid(2_301, "@abort"), +(Direct(Tid(2_157, "@abort")),Direct(Tid(2_210, "%000008a2"))))])), +Blk(Tid(2_210, "%000008a2"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_211, "%000008a3"), Attrs([]), Int(1,1), +(Direct(Tid(2_158, "@call_weak_fn")),))]))])), Sub(Tid(2_157, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(622, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x7D0"), +Blks([Blk(Tid(608, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x7D4"), +Def(Tid(1_717, "%000006b5"), 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_858, "%00000742"), Attrs([Attr("address","0x7D8"), +Def(Tid(1_723, "%000006bb"), 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_863, "%00000747"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_728, "%000006c0"), Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_302, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_158, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), - "call_weak_fn", Args([Arg(Tid(2_372, "%00000944"), + "call_weak_fn", Args([Arg(Tid(2_228, "%000008b4"), 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(626, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(630, "%00000276"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(612, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(615, "%00000267"), Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(638, "%0000027e"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(622, "%0000026e"), 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)), -Def(Tid(650, "%0000028a"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(644, "%00000284"), - Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(642, "%00000282"))), -Goto(Tid(2_356, "%00000934"), Attrs([]), Int(1,1), -Direct(Tid(1_405, "%0000057d")))])), Blk(Tid(642, "%00000282"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(628, "%00000274"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(626, "%00000272"))), Goto(Tid(2_212, "%000008a4"), Attrs([]), + Int(1,1), Direct(Tid(1_298, "%00000512")))])), Blk(Tid(626, "%00000272"), Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(655, "%0000028f"), Attrs([Attr("address","0x844"), +Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x844"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_405, "%0000057d"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_408, "%00000580"), Attrs([Attr("address","0x840"), +Blk(Tid(1_298, "%00000512"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_301, "%00000515"), Attrs([Attr("address","0x840"), Attr("insn","b #-0x80")]), Int(1,1), -Direct(Tid(1_406, "@__gmon_start__")))])), Blk(Tid(1_406, "@__gmon_start__"), +Direct(Tid(1_299, "@__gmon_start__")))])), Blk(Tid(1_299, "@__gmon_start__"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_818, "%0000071a"), Attrs([Attr("address","0x7C0"), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x7C4"), +Def(Tid(1_695, "%0000069f"), 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_833, "%00000729"), Attrs([Attr("address","0x7C8"), +Def(Tid(1_701, "%000006a5"), 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_838, "%0000072e"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_706, "%000006aa"), Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_304, "@deregister_tm_clones"), +Sub(Tid(2_160, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_373, "%00000945"), + "deregister_tm_clones", Args([Arg(Tid(2_229, "%000008b5"), 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(661, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(665, "%00000299"), +Blks([Blk(Tid(640, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(643, "%00000283"), Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(672, "%000002a0"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(649, "%00000289"), Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x858"), +Def(Tid(654, "%0000028e"), Attrs([Attr("address","0x858"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x85C"), +Def(Tid(660, "%00000294"), Attrs([Attr("address","0x85C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(693, "%000002b5"), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(666, "%0000029a"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(700, "%000002bc"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(671, "%0000029f"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x860"), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(677, "%000002a5"), 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(683, "%000002ab"), 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(687, "%000002af"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(706, "%000002c2"), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(691, "%000002b3"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(714, "%000002ca"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(712, "%000002c8"))), Goto(Tid(2_357, "%00000935"), Attrs([]), - Int(1,1), Direct(Tid(1_366, "%00000556")))])), Blk(Tid(1_366, "%00000556"), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(697, "%000002b9"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(695, "%000002b7"))), Goto(Tid(2_213, "%000008a5"), Attrs([]), + Int(1,1), Direct(Tid(1_268, "%000004f4")))])), Blk(Tid(1_268, "%000004f4"), Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_370, "%0000055a"), Attrs([Attr("address","0x868"), +Defs([Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x868"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_378, "%00000562"), Attrs([Attr("address","0x86C"), +Def(Tid(1_278, "%000004fe"), 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)), -Def(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_383, "%00000567"), - Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), - Var("#75",Imm(1)), Direct(Tid(712, "%000002c8"))), -Goto(Tid(2_358, "%00000936"), Attrs([]), Int(1,1), -Direct(Tid(1_392, "%00000570")))])), Blk(Tid(712, "%000002c8"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_283, "%00000503"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(695, "%000002b7"))), Goto(Tid(2_214, "%000008a6"), Attrs([]), + Int(1,1), Direct(Tid(1_287, "%00000507")))])), Blk(Tid(695, "%000002b7"), Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(725, "%000002d5"), Attrs([Attr("address","0x87C"), +Jmps([Call(Tid(703, "%000002bf"), Attrs([Attr("address","0x87C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_392, "%00000570"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_398, "%00000576"), Attrs([Attr("address","0x874"), +Blk(Tid(1_287, "%00000507"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x874"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(1_296, "%00000510"), Attrs([Attr("address","0x878"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_307, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_374, "%00000946"), +Sub(Tid(2_163, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_230, "%000008b6"), 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(901, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(854, "@frame_dummy"), Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(903, "%00000387"), Attrs([Attr("address","0x910"), +Jmps([Call(Tid(856, "%00000358"), Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_314, "@register_tm_clones")),))]))])), Sub(Tid(2_308, "@free"), +(Direct(Tid(2_170, "@register_tm_clones")),))]))])), Sub(Tid(2_164, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_375, "%00000947"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_231, "%000008b7"), 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_219, "@free"), Attrs([Attr("address","0x7F0")]), - Phis([]), Defs([Def(Tid(1_893, "%00000765"), Attrs([Attr("address","0x7F0"), +Both())]), Blks([Blk(Tid(1_143, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x7F4"), +Def(Tid(1_761, "%000006e1"), 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_908, "%00000774"), Attrs([Attr("address","0x7F8"), +Def(Tid(1_767, "%000006e7"), 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_913, "%00000779"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_772, "%000006ec"), Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_309, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_165, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_376, "%00000948"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_232, "%000008b8"), 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_377, "%00000949"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_233, "%000008b9"), 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_378, "%0000094a"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_234, "%000008ba"), 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(905, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(910, "%0000038e"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(858, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(862, "%0000035e"), Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), -Def(Tid(918, "%00000396"), Attrs([Attr("address","0x918"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(923, "%0000039b"), + Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), +Def(Tid(868, "%00000364"), Attrs([Attr("address","0x918"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(874, "%0000036a"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x918"), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(880, "%00000370"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x91C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(886, "%00000376"), Attrs([Attr("address","0x91C"), Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(943, "%000003af"), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(893, "%0000037d"), Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(951, "%000003b7"), Attrs([Attr("address","0x924"), +Def(Tid(900, "%00000384"), Attrs([Attr("address","0x924"), Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x928"), +Def(Tid(905, "%00000389"), Attrs([Attr("address","0x928"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x92C"), +Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(965, "%000003c5"), Attrs([Attr("address","0x92C"), +Jmps([Call(Tid(913, "%00000391"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_310, "@malloc")),Direct(Tid(967, "%000003c7"))))])), -Blk(Tid(967, "%000003c7"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x930"), +(Direct(Tid(2_166, "@malloc")),Direct(Tid(915, "%00000393"))))])), +Blk(Tid(915, "%00000393"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(918, "%00000396"), Attrs([Attr("address","0x930"), Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x934"), +Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x934"), Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x938"), +Def(Tid(934, "%000003a6"), Attrs([Attr("address","0x938"), Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x93C"), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x93C"), Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x940"), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x940"), Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x944"), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x944"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x948"), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(1_024, "%00000400"), +PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x950"), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x950"), Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), -Jmps([Call(Tid(1_032, "%00000408"), Attrs([Attr("address","0x950"), +Jmps([Call(Tid(976, "%000003d0"), Attrs([Attr("address","0x950"), Attr("insn","bl #-0x1e0")]), Int(1,1), -(Direct(Tid(2_317, "@strlen")),Direct(Tid(1_034, "%0000040a"))))])), -Blk(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x954")]), Phis([]), -Defs([Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x954"), +(Direct(Tid(2_173, "@strlen")),Direct(Tid(978, "%000003d2"))))])), +Blk(Tid(978, "%000003d2"), Attrs([Attr("address","0x954")]), Phis([]), +Defs([Def(Tid(983, "%000003d7"), Attrs([Attr("address","0x954"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x958"), +Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x958"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_056, "%00000420"), Attrs([Attr("address","0x95C"), +Def(Tid(996, "%000003e4"), Attrs([Attr("address","0x95C"), Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x960"), +Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x960"), Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), -Jmps([Call(Tid(1_064, "%00000428"), Attrs([Attr("address","0x960"), +Jmps([Call(Tid(1_004, "%000003ec"), Attrs([Attr("address","0x960"), Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_311, "@memcpy")),Direct(Tid(1_066, "%0000042a"))))])), -Blk(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x964"), +(Direct(Tid(2_167, "@memcpy")),Direct(Tid(1_006, "%000003ee"))))])), +Blk(Tid(1_006, "%000003ee"), Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x968"), +Def(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x968"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x96C"), +Def(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), -Jmps([Call(Tid(1_088, "%00000440"), Attrs([Attr("address","0x96C"), +Jmps([Call(Tid(1_026, "%00000402"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_313, "@puts")),Direct(Tid(1_090, "%00000442"))))])), -Blk(Tid(1_090, "%00000442"), Attrs([Attr("address","0x970")]), Phis([]), -Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x970"), +(Direct(Tid(2_169, "@puts")),Direct(Tid(1_028, "%00000404"))))])), +Blk(Tid(1_028, "%00000404"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x970"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x974"), +Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x974"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x978"), +Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x978"), Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_119, "%0000045f"), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_054, "%0000041e"), Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x980"), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x980"), Attr("insn","ldur x9, [x29, #-0x8]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), -Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x984"), +Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x984"), Attr("insn","strb wzr, [x9]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),BigEndian(),8)), -Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x988"), +Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),LittleEndian(),8)), +Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x988"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x98C"), +Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x98C"), Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x990"), +Def(Tid(1_090, "%00000442"), Attrs([Attr("address","0x990"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x994"), +Def(Tid(1_095, "%00000447"), Attrs([Attr("address","0x994"), Attr("insn","bl #-0x224")]), Var("R30",Imm(64)), Int(2456,64))]), -Jmps([Call(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x994"), +Jmps([Call(Tid(1_097, "%00000449"), Attrs([Attr("address","0x994"), Attr("insn","bl #-0x224")]), Int(1,1), -(Direct(Tid(2_317, "@strlen")),Direct(Tid(1_168, "%00000490"))))])), -Blk(Tid(1_168, "%00000490"), Attrs([Attr("address","0x998")]), Phis([]), -Defs([Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x998"), +(Direct(Tid(2_173, "@strlen")),Direct(Tid(1_099, "%0000044b"))))])), +Blk(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x998")]), Phis([]), +Defs([Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x998"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x99C"), +Def(Tid(1_110, "%00000456"), Attrs([Attr("address","0x99C"), Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x9A0"), +Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x9A0"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x9A4"), +Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x9A4"), Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2472,64))]), -Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x9A4"), +Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x9A4"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_312, "@memset")),Direct(Tid(1_199, "%000004af"))))])), -Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x9A8")]), Phis([]), -Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x9A8"), +(Direct(Tid(2_168, "@memset")),Direct(Tid(1_125, "%00000465"))))])), +Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x9A8")]), Phis([]), +Defs([Def(Tid(1_130, "%0000046a"), Attrs([Attr("address","0x9A8"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x9AC"), +Def(Tid(1_137, "%00000471"), Attrs([Attr("address","0x9AC"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x9B0"), +Def(Tid(1_142, "%00000476"), Attrs([Attr("address","0x9B0"), Attr("insn","bl #-0x1c0")]), Var("R30",Imm(64)), Int(2484,64))]), -Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x9B0"), +Jmps([Call(Tid(1_145, "%00000479"), Attrs([Attr("address","0x9B0"), Attr("insn","bl #-0x1c0")]), Int(1,1), -(Direct(Tid(2_308, "@free")),Direct(Tid(1_223, "%000004c7"))))])), -Blk(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x9B4")]), Phis([]), -Defs([Def(Tid(1_230, "%000004ce"), Attrs([Attr("address","0x9B4"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x9B8"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), -Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x9B8"), +(Direct(Tid(2_164, "@free")),Direct(Tid(1_147, "%0000047b"))))])), +Blk(Tid(1_147, "%0000047b"), Attrs([Attr("address","0x9B4")]), Phis([]), +Defs([Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x9B4"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x9B8"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_161, "%00000489"), + Attrs([Attr("address","0x9B8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), + Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), +Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x9B8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), -Def(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x9BC"), +Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_172, "%00000494"), Attrs([Attr("address","0x9BC"), Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_255, "%000004e7"), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_177, "%00000499"), Attrs([Attr("address","0x9C0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_310, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_166, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_379, "%0000094b"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_235, "%000008bb"), 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_380, "%0000094c"), +Var("R0",Imm(64)), In()), Arg(Tid(2_236, "%000008bc"), 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(963, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x7A0"), +Blks([Blk(Tid(911, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_651, "%00000673"), 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_783, "%000006f7"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_657, "%00000679"), 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_788, "%000006fc"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_662, "%0000067e"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_311, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_167, "@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_381, "%0000094d"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_237, "%000008bd"), 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_382, "%0000094e"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_238, "%000008be"), 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_383, "%0000094f"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_239, "%000008bf"), 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_384, "%00000950"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_240, "%000008c0"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_062, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_668, "%00000684"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_002, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_676, "%0000068c"), Attrs([Attr("address","0x764"), +Def(Tid(1_563, "%0000061b"), 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_683, "%00000693"), Attrs([Attr("address","0x768"), +Def(Tid(1_569, "%00000621"), Attrs([Attr("address","0x768"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_688, "%00000698"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_574, "%00000626"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_312, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_168, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x7B0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_385, "%00000951"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_241, "%000008c1"), 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_386, "%00000952"), +Both()), Arg(Tid(2_242, "%000008c2"), 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_387, "%00000953"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_243, "%000008c3"), 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_388, "%00000954"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_244, "%000008c4"), 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_195, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_793, "%00000701"), Attrs([Attr("address","0x7B0"), +Blks([Blk(Tid(1_121, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x7B4"), +Def(Tid(1_673, "%00000689"), 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_808, "%00000710"), Attrs([Attr("address","0x7B8"), +Def(Tid(1_679, "%0000068f"), 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_813, "%00000715"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_684, "%00000694"), Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_313, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_169, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x7E0"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_389, "%00000955"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_245, "%000008c5"), 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_390, "%00000956"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_246, "%000008c6"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_086, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_868, "%0000074c"), Attrs([Attr("address","0x7E0"), +Blks([Blk(Tid(1_024, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x7E4"), +Def(Tid(1_739, "%000006cb"), 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_883, "%0000075b"), Attrs([Attr("address","0x7E8"), +Def(Tid(1_745, "%000006d1"), 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_888, "%00000760"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_750, "%000006d6"), Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_314, "@register_tm_clones"), +Sub(Tid(2_170, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_391, "%00000957"), + "register_tm_clones", Args([Arg(Tid(2_247, "%000008c7"), 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(727, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x880"), +Blks([Blk(Tid(705, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(708, "%000002c4"), Attrs([Attr("address","0x880"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x884"), +Def(Tid(714, "%000002ca"), Attrs([Attr("address","0x884"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(744, "%000002e8"), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(719, "%000002cf"), Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(751, "%000002ef"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(725, "%000002d5"), Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x890"), +Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x890"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(766, "%000002fe"), - Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(774, "%00000306"), Attrs([Attr("address","0x898"), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(738, "%000002e2"), 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(745, "%000002e9"), 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,64)))), -Def(Tid(781, "%0000030d"), Attrs([Attr("address","0x89C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x89C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(793, "%00000319"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(787, "%00000313"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(785, "%00000311"))), Goto(Tid(2_359, "%00000937"), Attrs([]), - Int(1,1), Direct(Tid(1_327, "%0000052f")))])), Blk(Tid(1_327, "%0000052f"), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(757, "%000002f5"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(755, "%000002f3"))), Goto(Tid(2_215, "%000008a7"), Attrs([]), + Int(1,1), Direct(Tid(1_238, "%000004d6")))])), Blk(Tid(1_238, "%000004d6"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_331, "%00000533"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_339, "%0000053b"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_248, "%000004e0"), 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)), -Def(Tid(1_350, "%00000546"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_344, "%00000540"), - Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), - Var("#70",Imm(1)), Direct(Tid(785, "%00000311"))), -Goto(Tid(2_360, "%00000938"), Attrs([]), Int(1,1), -Direct(Tid(1_353, "%00000549")))])), Blk(Tid(785, "%00000311"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_253, "%000004e5"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(755, "%000002f3"))), Goto(Tid(2_216, "%000008a8"), Attrs([]), + Int(1,1), Direct(Tid(1_257, "%000004e9")))])), Blk(Tid(755, "%000002f3"), Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(798, "%0000031e"), Attrs([Attr("address","0x8B8"), +Jmps([Call(Tid(763, "%000002fb"), Attrs([Attr("address","0x8B8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x8B0"), +Blk(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8B0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8B4"), +Jmps([Call(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8B4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_317, "@strlen"), +Sub(Tid(2_173, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_392, "%00000958"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_248, "%000008c8"), 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_393, "%00000959"), +In()), Arg(Tid(2_249, "%000008c9"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_030, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(974, "@strlen"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_693, "%0000069d"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_578, "%0000062a"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_701, "%000006a5"), Attrs([Attr("address","0x774"), +Def(Tid(1_585, "%00000631"), 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_708, "%000006ac"), Attrs([Attr("address","0x778"), +Def(Tid(1_591, "%00000637"), 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_713, "%000006b1"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_596, "%0000063c"), 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/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir index ed93b38a3..6b5f3b499 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir @@ -1,361 +1,354 @@ -00000939: program -000008f2: sub __cxa_finalize(__cxa_finalize_result) -0000093a: __cxa_finalize_result :: out u32 = low:32[R0] - -0000052b: -000006cf: R16 := 0x20000 -000006d7: R17 := mem[R16 + 0x18, el]:u64 -000006de: R16 := R16 + 0x18 -000006e3: call R17 with noreturn - -000008f3: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000093b: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000322: -00000329: #34 := R31 - 0x20 -0000032e: mem := mem with [#34, el]:u64 <- R29 -00000333: mem := mem with [#34 + 8, el]:u64 <- R30 -00000337: R31 := #34 -0000033e: R29 := R31 -00000346: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000034c: R19 := 0x20000 -00000355: R0 := pad:32[mem[R19 + 0x70]] -00000361: #36 := ~~0:0[R0] -0000035b: when #36 goto %00000359 -0000092f: goto %000004e9 - -000004e9: -000004ed: R0 := 0x1F000 -000004f5: R0 := mem[R0 + 0xFC8, el]:u64 -00000501: #67 := R0 = 0 -000004fb: when #67 goto %000004f9 -00000930: goto %00000519 - -00000519: -0000051d: R0 := 0x20000 -00000525: R0 := mem[R0 + 0x58, el]:u64 -0000052a: R30 := 0x8F0 -0000052d: call @__cxa_finalize with return %000004f9 - -000004f9: -00000506: R30 := 0x8F4 -00000508: call @deregister_tm_clones with return %0000050a - -0000050a: -0000050f: R0 := 1 -00000517: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -00000931: goto %00000359 - -00000359: -00000369: R19 := mem[R31 + 0x10, el]:u64 -00000373: R29 := mem[R31, el]:u64 -00000377: R30 := mem[R31 + 8, el]:u64 -0000037a: R31 := R31 + 0x20 -0000037f: call R30 with noreturn - -000008f7: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -0000093c: __libc_start_main_main :: in u64 = R0 -0000093d: __libc_start_main_arg2 :: in u32 = low:32[R1] -0000093e: __libc_start_main_arg3 :: in out u64 = R2 -0000093f: __libc_start_main_auxv :: in out u64 = R3 -00000940: __libc_start_main_result :: out u32 = low:32[R0] - -00000266: -000006b6: R16 := 0x20000 -000006be: R17 := mem[R16 + 0x10, el]:u64 -000006c5: R16 := R16 + 0x10 -000006ca: call R17 with noreturn - -000008f8: sub _fini(_fini_result) -00000941: _fini_result :: out u32 = low:32[R0] +000008a9: program +00000862: sub __cxa_finalize(__cxa_finalize_result) +000008aa: __cxa_finalize_result :: out u32 = low:32[R0] + +000004d2: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16 + 0x18, el]:u64 +00000663: R16 := R16 + 0x18 +00000668: call R17 with noreturn + +00000863: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008ab: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002ff: +00000303: #3 := R31 - 0x20 +00000309: mem := mem with [#3, el]:u64 <- R29 +0000030f: mem := mem with [#3 + 8, el]:u64 <- R30 +00000313: R31 := #3 +00000319: R29 := R31 +00000321: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000326: R19 := 0x20000 +0000032d: R0 := pad:64[mem[R19 + 0x70]] +00000333: when 0:0[R0] goto %00000331 +0000089f: goto %0000049b + +0000049b: +0000049e: R0 := 0x1F000 +000004a5: R0 := mem[R0 + 0xFC8, el]:u64 +000004ab: when R0 = 0 goto %000004a9 +000008a0: goto %000004c2 + +000004c2: +000004c5: R0 := 0x20000 +000004cc: R0 := mem[R0 + 0x58, el]:u64 +000004d1: R30 := 0x8F0 +000004d4: call @__cxa_finalize with return %000004a9 + +000004a9: +000004b1: R30 := 0x8F4 +000004b3: call @deregister_tm_clones with return %000004b5 + +000004b5: +000004b8: R0 := 1 +000004c0: mem := mem with [R19 + 0x70] <- 7:0[R0] +000008a1: goto %00000331 + +00000331: +0000033b: R19 := mem[R31 + 0x10, el]:u64 +00000342: R29 := mem[R31, el]:u64 +00000347: R30 := mem[R31 + 8, el]:u64 +0000034b: R31 := R31 + 0x20 +00000350: call R30 with noreturn + +00000867: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008ac: __libc_start_main_main :: in u64 = R0 +000008ad: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008ae: __libc_start_main_arg3 :: in out u64 = R2 +000008af: __libc_start_main_auxv :: in out u64 = R3 +000008b0: __libc_start_main_result :: out u32 = low:32[R0] + +00000258: +00000640: R16 := 0x20000 +00000647: R17 := mem[R16 + 0x10, el]:u64 +0000064d: R16 := R16 + 0x10 +00000652: call R17 with noreturn + +00000868: sub _fini(_fini_result) +000008b1: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -000008f9: sub _init(_init_result) -00000942: _init_result :: out u32 = low:32[R0] - -0000080d: -00000816: #98 := R31 - 0x10 -0000081b: mem := mem with [#98, el]:u64 <- R29 -00000820: mem := mem with [#98 + 8, el]:u64 <- R30 -00000824: R31 := #98 -0000082b: R29 := R31 -00000830: R30 := 0x738 -00000832: call @call_weak_fn with return %00000834 - -00000834: -0000083c: R29 := mem[R31, el]:u64 -00000840: R30 := mem[R31 + 8, el]:u64 -00000843: R31 := R31 + 0x10 -00000848: call R30 with noreturn - -000008fa: sub _start(_start_result) -00000943: _start_result :: out u32 = low:32[R0] - -0000021c: -00000222: R29 := 0 -00000228: R30 := 0 -00000230: R5 := R0 -00000238: R1 := mem[R31, el]:u64 -0000023f: R2 := R31 + 8 -00000246: R6 := R31 -0000024c: R0 := 0x1F000 -00000254: R0 := mem[R0 + 0xFD8, el]:u64 -0000025a: R3 := 0 -00000260: R4 := 0 -00000265: R30 := 0x830 -00000268: call @__libc_start_main with return %0000026a - -0000026a: -0000026d: R30 := 0x834 -00000270: call @abort with return %00000932 - -00000932: -00000933: call @call_weak_fn with noreturn - -000008fd: sub abort() - - -0000026e: -00000733: R16 := 0x20000 -0000073b: R17 := mem[R16 + 0x38, el]:u64 -00000742: R16 := R16 + 0x38 -00000747: call R17 with noreturn - -000008fe: sub call_weak_fn(call_weak_fn_result) -00000944: call_weak_fn_result :: out u32 = low:32[R0] +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 + +00000869: sub _init(_init_result) +000008b2: _init_result :: out u32 = low:32[R0] + +00000780: +00000786: #7 := R31 - 0x10 +0000078c: mem := mem with [#7, el]:u64 <- R29 +00000792: mem := mem with [#7 + 8, el]:u64 <- R30 +00000796: R31 := #7 +0000079c: R29 := R31 +000007a1: R30 := 0x738 +000007a3: call @call_weak_fn with return %000007a5 + +000007a5: +000007aa: R29 := mem[R31, el]:u64 +000007af: R30 := mem[R31 + 8, el]:u64 +000007b3: R31 := R31 + 0x10 +000007b8: call R30 with noreturn + +0000086a: sub _start(_start_result) +000008b3: _start_result :: out u32 = low:32[R0] + +00000219: +0000021e: R29 := 0 +00000223: R30 := 0 +00000229: R5 := R0 +00000230: R1 := mem[R31, el]:u64 +00000236: R2 := R31 + 8 +0000023c: R6 := R31 +00000241: R0 := 0x1F000 +00000248: R0 := mem[R0 + 0xFD8, el]:u64 +0000024d: R3 := 0 +00000252: R4 := 0 +00000257: R30 := 0x830 +0000025a: call @__libc_start_main with return %0000025c + +0000025c: +0000025f: R30 := 0x834 +00000262: call @abort with return %000008a2 + +000008a2: +000008a3: call @call_weak_fn with noreturn + +0000086d: sub abort() + + +00000260: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x38, el]:u64 +000006bb: R16 := R16 + 0x38 +000006c0: call R17 with noreturn + +0000086e: sub call_weak_fn(call_weak_fn_result) +000008b4: call_weak_fn_result :: out u32 = low:32[R0] + +00000264: +00000267: R0 := 0x1F000 +0000026e: R0 := mem[R0 + 0xFD0, el]:u64 +00000274: when R0 = 0 goto %00000272 +000008a4: goto %00000512 00000272: -00000276: R0 := 0x1F000 -0000027e: R0 := mem[R0 + 0xFD0, el]:u64 -0000028a: #12 := R0 = 0 -00000284: when #12 goto %00000282 -00000934: goto %0000057d - -00000282: -0000028f: call R30 with noreturn - -0000057d: -00000580: goto @__gmon_start__ - -0000057e: -0000071a: R16 := 0x20000 -00000722: R17 := mem[R16 + 0x30, el]:u64 -00000729: R16 := R16 + 0x30 -0000072e: call R17 with noreturn - -00000900: sub deregister_tm_clones(deregister_tm_clones_result) -00000945: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000295: -00000299: R0 := 0x20000 -000002a0: R0 := R0 + 0x70 -000002a6: R1 := 0x20000 -000002ad: R1 := R1 + 0x70 -000002b5: #16 := 1 + ~R0 + R1 -000002b9: NF := 63:63[#16] -000002bc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002bf: ZF := #16 = 0 -000002c2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002d0: #21 := ZF -000002ca: when #21 goto %000002c8 -00000935: goto %00000556 - -00000556: -0000055a: R1 := 0x1F000 -00000562: R1 := mem[R1 + 0xFC0, el]:u64 -0000056d: #75 := R1 = 0 -00000567: when #75 goto %000002c8 -00000936: goto %00000570 - -000002c8: -000002d5: call R30 with noreturn - -00000570: -00000576: R16 := R1 -0000057b: call R16 with noreturn - -00000903: sub frame_dummy(frame_dummy_result) -00000946: frame_dummy_result :: out u32 = low:32[R0] - -00000385: -00000387: call @register_tm_clones with noreturn - -00000904: sub free(free_ptr) -00000947: free_ptr :: in out u64 = R0 - -000004c3: -00000765: R16 := 0x20000 -0000076d: R17 := mem[R16 + 0x48, el]:u64 -00000774: R16 := R16 + 0x48 -00000779: call R17 with noreturn - -00000905: sub main(main_argc, main_argv, main_result) -00000948: main_argc :: in u32 = low:32[R0] -00000949: main_argv :: in out u64 = R1 -0000094a: main_result :: out u32 = low:32[R0] - -00000389: -0000038e: R31 := R31 - 0x40 -00000396: #42 := R31 + 0x30 -0000039b: mem := mem with [#42, el]:u64 <- R29 -000003a0: mem := mem with [#42 + 8, el]:u64 <- R30 -000003a7: R29 := R31 + 0x30 -000003af: mem := mem with [R29 - 8, el]:u64 <- 0 -000003b7: mem := mem with [R29 - 0x10, el]:u64 <- 0 -000003bd: R0 := 0xB -000003c2: R30 := 0x930 -000003c5: call @malloc with return %000003c7 - -000003c7: -000003cb: R8 := 0x20000 -000003d3: mem := mem with [R31 + 0x18, el]:u64 <- R8 -000003db: mem := mem with [R8 + 0x78, el]:u64 <- R0 -000003e3: R8 := mem[R8 + 0x78, el]:u64 -000003eb: mem := mem with [R31 + 8, el]:u64 <- R8 -000003f1: R0 := 0x20000 -000003f8: R0 := R0 + 0x61 -00000400: mem := mem with [R31, el]:u64 <- R0 -00000405: R30 := 0x954 -00000408: call @strlen with return %0000040a - -0000040a: -00000410: R1 := mem[R31, el]:u64 -00000418: R2 := R0 -00000420: R0 := mem[R31 + 8, el]:u64 -00000425: R30 := 0x964 -00000428: call @memcpy with return %0000042a - -0000042a: -00000430: R8 := mem[R31 + 0x18, el]:u64 -00000438: R0 := mem[R8 + 0x78, el]:u64 -0000043d: R30 := 0x970 -00000440: call @puts with return %00000442 - -00000442: -00000448: R8 := mem[R31 + 0x18, el]:u64 -00000450: R9 := mem[R8 + 0x78, el]:u64 -00000457: R9 := R9 + 4 -0000045f: mem := mem with [R29 - 8, el]:u64 <- R9 -00000467: R9 := mem[R29 - 8, el]:u64 -0000046f: mem := mem with [R9] <- 0 -00000477: R9 := mem[R8 + 0x78, el]:u64 -0000047f: mem := mem with [R31 + 0x10, el]:u64 <- R9 -00000487: R0 := mem[R8 + 0x78, el]:u64 -0000048c: R30 := 0x998 -0000048e: call @strlen with return %00000490 - -00000490: -00000496: R2 := R0 -0000049e: R0 := mem[R31 + 0x10, el]:u64 -000004a5: R1 := 1 -000004aa: R30 := 0x9A8 -000004ad: call @memset with return %000004af - -000004af: -000004b5: R8 := mem[R31 + 0x18, el]:u64 -000004bd: R0 := mem[R8 + 0x78, el]:u64 -000004c2: R30 := 0x9B4 -000004c5: call @free with return %000004c7 - -000004c7: -000004ce: R0 := 0 -000004d7: R29 := mem[R31 + 0x30, el]:u64 -000004db: R30 := mem[R31 + 0x38, el]:u64 -000004e2: R31 := R31 + 0x40 -000004e7: call R30 with noreturn - -00000906: sub malloc(malloc_size, malloc_result) -0000094b: malloc_size :: in u64 = R0 -0000094c: malloc_result :: out u64 = R0 - -000003c3: -000006e8: R16 := 0x20000 -000006f0: R17 := mem[R16 + 0x20, el]:u64 -000006f7: R16 := R16 + 0x20 -000006fc: call R17 with noreturn - -00000907: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -0000094d: memcpy_dst :: in out u64 = R0 -0000094e: memcpy_src :: in out u64 = R1 -0000094f: memcpy_n :: in u64 = R2 -00000950: memcpy_result :: out u64 = R0 - -00000426: -00000684: R16 := 0x20000 -0000068c: R17 := mem[R16, el]:u64 -00000693: R16 := R16 -00000698: call R17 with noreturn - -00000908: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000951: memset_buf :: in out u64 = R0 -00000952: memset_c :: in u32 = low:32[R1] -00000953: memset_n :: in u64 = R2 -00000954: memset_result :: out u64 = R0 - -000004ab: -00000701: R16 := 0x20000 -00000709: R17 := mem[R16 + 0x28, el]:u64 -00000710: R16 := R16 + 0x28 -00000715: call R17 with noreturn - -00000909: sub puts(puts_s, puts_result) -00000955: puts_s :: in u64 = R0 -00000956: puts_result :: out u32 = low:32[R0] - -0000043e: -0000074c: R16 := 0x20000 -00000754: R17 := mem[R16 + 0x40, el]:u64 -0000075b: R16 := R16 + 0x40 -00000760: call R17 with noreturn - -0000090a: sub register_tm_clones(register_tm_clones_result) -00000957: register_tm_clones_result :: out u32 = low:32[R0] - -000002d7: -000002db: R0 := 0x20000 -000002e2: R0 := R0 + 0x70 -000002e8: R1 := 0x20000 -000002ef: R1 := R1 + 0x70 -000002f7: R1 := R1 - R0 -000002fe: R2 := R1 >> 0x3F -00000306: R1 := R2 + (R1 ~>> 3) -0000030d: R1 := R1 >> 1 -00000319: #30 := R1 = 0 -00000313: when #30 goto %00000311 -00000937: goto %0000052f - -0000052f: -00000533: R2 := 0x1F000 -0000053b: R2 := mem[R2 + 0xFE0, el]:u64 -00000546: #70 := R2 = 0 -00000540: when #70 goto %00000311 -00000938: goto %00000549 - -00000311: -0000031e: call R30 with noreturn - -00000549: -0000054f: R16 := R2 -00000554: call R16 with noreturn - -0000090d: sub strlen(strlen_s, strlen_result) -00000958: strlen_s :: in u64 = R0 -00000959: strlen_result :: out u64 = R0 - -00000406: -0000069d: R16 := 0x20000 -000006a5: R17 := mem[R16 + 8, el]:u64 -000006ac: R16 := R16 + 8 -000006b1: call R17 with noreturn +0000027a: call R30 with noreturn + +00000512: +00000515: goto @__gmon_start__ + +00000513: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x30, el]:u64 +000006a5: R16 := R16 + 0x30 +000006aa: call R17 with noreturn + +00000870: sub deregister_tm_clones(deregister_tm_clones_result) +000008b5: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000280: +00000283: R0 := 0x20000 +00000289: R0 := R0 + 0x70 +0000028e: R1 := 0x20000 +00000294: R1 := R1 + 0x70 +0000029a: #1 := ~R0 +0000029f: #2 := R1 + ~R0 +000002a5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002ab: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002af: ZF := #2 + 1 = 0 +000002b3: NF := 63:63[#2 + 1] +000002b9: when ZF goto %000002b7 +000008a5: goto %000004f4 + +000004f4: +000004f7: R1 := 0x1F000 +000004fe: R1 := mem[R1 + 0xFC0, el]:u64 +00000503: when R1 = 0 goto %000002b7 +000008a6: goto %00000507 + +000002b7: +000002bf: call R30 with noreturn + +00000507: +0000050b: R16 := R1 +00000510: call R16 with noreturn + +00000873: sub frame_dummy(frame_dummy_result) +000008b6: frame_dummy_result :: out u32 = low:32[R0] + +00000356: +00000358: call @register_tm_clones with noreturn + +00000874: sub free(free_ptr) +000008b7: free_ptr :: in out u64 = R0 + +00000477: +000006da: R16 := 0x20000 +000006e1: R17 := mem[R16 + 0x48, el]:u64 +000006e7: R16 := R16 + 0x48 +000006ec: call R17 with noreturn + +00000875: sub main(main_argc, main_argv, main_result) +000008b8: main_argc :: in u32 = low:32[R0] +000008b9: main_argv :: in out u64 = R1 +000008ba: main_result :: out u32 = low:32[R0] + +0000035a: +0000035e: R31 := R31 - 0x40 +00000364: #4 := R31 + 0x30 +0000036a: mem := mem with [#4, el]:u64 <- R29 +00000370: mem := mem with [#4 + 8, el]:u64 <- R30 +00000376: R29 := R31 + 0x30 +0000037d: mem := mem with [R29 - 8, el]:u64 <- 0 +00000384: mem := mem with [R29 - 0x10, el]:u64 <- 0 +00000389: R0 := 0xB +0000038e: R30 := 0x930 +00000391: call @malloc with return %00000393 + +00000393: +00000396: R8 := 0x20000 +0000039e: mem := mem with [R31 + 0x18, el]:u64 <- R8 +000003a6: mem := mem with [R8 + 0x78, el]:u64 <- R0 +000003ad: R8 := mem[R8 + 0x78, el]:u64 +000003b5: mem := mem with [R31 + 8, el]:u64 <- R8 +000003ba: R0 := 0x20000 +000003c0: R0 := R0 + 0x61 +000003c8: mem := mem with [R31, el]:u64 <- R0 +000003cd: R30 := 0x954 +000003d0: call @strlen with return %000003d2 + +000003d2: +000003d7: R1 := mem[R31, el]:u64 +000003dd: R2 := R0 +000003e4: R0 := mem[R31 + 8, el]:u64 +000003e9: R30 := 0x964 +000003ec: call @memcpy with return %000003ee + +000003ee: +000003f3: R8 := mem[R31 + 0x18, el]:u64 +000003fa: R0 := mem[R8 + 0x78, el]:u64 +000003ff: R30 := 0x970 +00000402: call @puts with return %00000404 + +00000404: +00000409: R8 := mem[R31 + 0x18, el]:u64 +00000410: R9 := mem[R8 + 0x78, el]:u64 +00000416: R9 := R9 + 4 +0000041e: mem := mem with [R29 - 8, el]:u64 <- R9 +00000425: R9 := mem[R29 - 8, el]:u64 +0000042c: mem := mem with [R9] <- 0 +00000433: R9 := mem[R8 + 0x78, el]:u64 +0000043b: mem := mem with [R31 + 0x10, el]:u64 <- R9 +00000442: R0 := mem[R8 + 0x78, el]:u64 +00000447: R30 := 0x998 +00000449: call @strlen with return %0000044b + +0000044b: +0000044f: R2 := R0 +00000456: R0 := mem[R31 + 0x10, el]:u64 +0000045b: R1 := 1 +00000460: R30 := 0x9A8 +00000463: call @memset with return %00000465 + +00000465: +0000046a: R8 := mem[R31 + 0x18, el]:u64 +00000471: R0 := mem[R8 + 0x78, el]:u64 +00000476: R30 := 0x9B4 +00000479: call @free with return %0000047b + +0000047b: +0000047e: R0 := 0 +00000484: #5 := R31 + 0x30 +00000489: R29 := mem[#5, el]:u64 +0000048e: R30 := mem[#5 + 8, el]:u64 +00000494: R31 := R31 + 0x40 +00000499: call R30 with noreturn + +00000876: sub malloc(malloc_size, malloc_result) +000008bb: malloc_size :: in u64 = R0 +000008bc: malloc_result :: out u64 = R0 + +0000038f: +0000066c: R16 := 0x20000 +00000673: R17 := mem[R16 + 0x20, el]:u64 +00000679: R16 := R16 + 0x20 +0000067e: call R17 with noreturn + +00000877: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008bd: memcpy_dst :: in out u64 = R0 +000008be: memcpy_src :: in out u64 = R1 +000008bf: memcpy_n :: in u64 = R2 +000008c0: memcpy_result :: out u64 = R0 + +000003ea: +00000614: R16 := 0x20000 +0000061b: R17 := mem[R16, el]:u64 +00000621: R16 := R16 +00000626: call R17 with noreturn + +00000878: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008c1: memset_buf :: in out u64 = R0 +000008c2: memset_c :: in u32 = low:32[R1] +000008c3: memset_n :: in u64 = R2 +000008c4: memset_result :: out u64 = R0 + +00000461: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x28, el]:u64 +0000068f: R16 := R16 + 0x28 +00000694: call R17 with noreturn + +00000879: sub puts(puts_s, puts_result) +000008c5: puts_s :: in u64 = R0 +000008c6: puts_result :: out u32 = low:32[R0] + +00000400: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x40, el]:u64 +000006d1: R16 := R16 + 0x40 +000006d6: call R17 with noreturn + +0000087a: sub register_tm_clones(register_tm_clones_result) +000008c7: register_tm_clones_result :: out u32 = low:32[R0] + +000002c1: +000002c4: R0 := 0x20000 +000002ca: R0 := R0 + 0x70 +000002cf: R1 := 0x20000 +000002d5: R1 := R1 + 0x70 +000002dc: R1 := R1 + ~R0 + 1 +000002e2: R2 := 0.63:63[R1] +000002e9: R1 := R2 + (R1 ~>> 3) +000002ef: R1 := extend:64[63:1[R1]] +000002f5: when R1 = 0 goto %000002f3 +000008a7: goto %000004d6 + +000004d6: +000004d9: R2 := 0x1F000 +000004e0: R2 := mem[R2 + 0xFE0, el]:u64 +000004e5: when R2 = 0 goto %000002f3 +000008a8: goto %000004e9 + +000002f3: +000002fb: call R30 with noreturn + +000004e9: +000004ed: R16 := R2 +000004f2: call R16 with noreturn + +0000087d: sub strlen(strlen_s, strlen_result) +000008c8: strlen_s :: in u64 = R0 +000008c9: strlen_result :: out u64 = R0 + +000003ce: +0000062a: R16 := 0x20000 +00000631: R17 := mem[R16 + 8, el]:u64 +00000637: R16 := R16 + 8 +0000063c: call R17 with noreturn 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 index beec69be2..8388e88b1 100644 --- 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 @@ -69,694 +69,680 @@ 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_263, "%000008d7"), Attrs([]), - Subs([Sub(Tid(2_192, "@__cxa_finalize"), +Program(Tid(2_073, "%00000819"), 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_264, "%000008d8"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_074, "%0000081a"), 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_243, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_151, "@__cxa_finalize"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_663, "%0000067f"), Attrs([Attr("address","0x790"), +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_671, "%00000687"), Attrs([Attr("address","0x794"), +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_678, "%0000068e"), Attrs([Attr("address","0x798"), +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_683, "%00000693"), +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_193, "@__do_global_dtors_aux"), +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_265, "%000008d9"), + "__do_global_dtors_aux", Args([Arg(Tid(2_075, "%0000081b"), 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(766, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(773, "%00000305"), +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("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(778, "%0000030a"), Attrs([Attr("address","0x8C0"), +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("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x8C0"), +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("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(787, "%00000313"), Attrs([Attr("address","0x8C0"), +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("#34",Imm(64))), Def(Tid(794, "%0000031a"), +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(802, "%00000322"), + 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(808, "%00000328"), Attrs([Attr("address","0x8CC"), +Def(Tid(770, "%00000302"), Attrs([Attr("address","0x8CC"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(817, "%00000331"), Attrs([Attr("address","0x8D0"), +Def(Tid(777, "%00000309"), Attrs([Attr("address","0x8D0"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(829, "%0000033d"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(823, "%00000337"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(821, "%00000335"))), Goto(Tid(2_253, "%000008cd"), Attrs([]), - Int(1,1), Direct(Tid(1_177, "%00000499")))])), Blk(Tid(1_177, "%00000499"), +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_047, "%000007ff"), Attrs([]), Int(1,1), +Direct(Tid(1_096, "%00000448")))])), Blk(Tid(1_096, "%00000448"), Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x8D8"), +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_189, "%000004a5"), Attrs([Attr("address","0x8DC"), +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)), -Def(Tid(1_201, "%000004b1"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), Var("#86",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_195, "%000004ab"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), - Var("#86",Imm(1)), Direct(Tid(1_193, "%000004a9"))), -Goto(Tid(2_254, "%000008ce"), Attrs([]), Int(1,1), -Direct(Tid(1_225, "%000004c9")))])), Blk(Tid(1_225, "%000004c9"), +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_048, "%00000800"), Attrs([]), + Int(1,1), Direct(Tid(1_135, "%0000046f")))])), Blk(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_229, "%000004cd"), Attrs([Attr("address","0x8E4"), +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_237, "%000004d5"), Attrs([Attr("address","0x8E8"), +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_242, "%000004da"), Attrs([Attr("address","0x8EC"), +Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(1_153, "%00000481"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_192, "@__cxa_finalize")),Direct(Tid(1_193, "%000004a9"))))])), -Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x8F0"), +(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_208, "%000004b8"), Attrs([Attr("address","0x8F0"), +Jmps([Call(Tid(1_120, "%00000460"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_206, "@deregister_tm_clones")),Direct(Tid(1_210, "%000004ba"))))])), -Blk(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x8F4"), +(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_223, "%000004c7"), Attrs([Attr("address","0x8F8"), +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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_255, "%000008cf"), Attrs([]), Int(1,1), -Direct(Tid(821, "%00000335")))])), Blk(Tid(821, "%00000335"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(837, "%00000345"), +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_049, "%00000801"), 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(847, "%0000034f"), Attrs([Attr("address","0x900"), +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(851, "%00000353"), Attrs([Attr("address","0x900"), +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(854, "%00000356"), Attrs([Attr("address","0x900"), +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(859, "%0000035b"), +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_197, "@__libc_start_main"), +(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_266, "%000008da"), + Args([Arg(Tid(2_076, "%0000081c"), 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_267, "%000008db"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_077, "%0000081d"), 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_268, "%000008dc"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_078, "%0000081e"), 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_269, "%000008dd"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_079, "%0000081f"), 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_270, "%000008de"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_080, "%00000820"), 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(578, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(564, "@__libc_start_main"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_638, "%00000666"), Attrs([Attr("address","0x780"), +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_646, "%0000066e"), Attrs([Attr("address","0x784"), +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_653, "%00000675"), Attrs([Attr("address","0x788"), +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_658, "%0000067a"), +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_198, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_051, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A0")]), - "_fini", Args([Arg(Tid(2_271, "%000008df"), + "_fini", Args([Arg(Tid(2_081, "%00000821"), 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(41, "%00000029"), + Attrs([Attr("address","0x9A0")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x9A4"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9A4"), +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("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9A4"), +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("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(55, "%00000037"), Attrs([Attr("address","0x9A4"), +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("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9A8"), +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(72, "%00000048"), Attrs([Attr("address","0x9AC"), +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(76, "%0000004c"), Attrs([Attr("address","0x9AC"), +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(79, "%0000004f"), Attrs([Attr("address","0x9AC"), +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(84, "%00000054"), +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_199, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_052, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), - "_init", Args([Arg(Tid(2_272, "%000008e0"), + "_init", Args([Arg(Tid(2_082, "%00000822"), 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_972, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_828, "@_init"), Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(1_981, "%000007bd"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#117",Imm(64)), +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_986, "%000007c2"), Attrs([Attr("address","0x72C"), +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("#117",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_991, "%000007c7"), Attrs([Attr("address","0x72C"), +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("#117",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_995, "%000007cb"), Attrs([Attr("address","0x72C"), +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("#117",Imm(64))), Def(Tid(2_002, "%000007d2"), +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(2_007, "%000007d7"), + 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(2_009, "%000007d9"), + 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_204, "@call_weak_fn")),Direct(Tid(2_011, "%000007db"))))])), -Blk(Tid(2_011, "%000007db"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(2_019, "%000007e3"), Attrs([Attr("address","0x738"), +(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(2_023, "%000007e7"), Attrs([Attr("address","0x738"), +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(2_026, "%000007ea"), Attrs([Attr("address","0x738"), +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(2_031, "%000007ef"), +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_200, "@_start"), +(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_273, "%000008e1"), Attrs([Attr("c.layout","[signed : 32]"), + Args([Arg(Tid(2_083, "%00000823"), 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(504, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(510, "%000001fe"), Attrs([Attr("address","0x804"), +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(516, "%00000204"), Attrs([Attr("address","0x808"), +Def(Tid(511, "%000001ff"), Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(524, "%0000020c"), Attrs([Attr("address","0x80C"), +Def(Tid(517, "%00000205"), Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), -Def(Tid(532, "%00000214"), Attrs([Attr("address","0x810"), +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(539, "%0000021b"), Attrs([Attr("address","0x814"), +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(546, "%00000222"), +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(552, "%00000228"), + 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(560, "%00000230"), + 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(566, "%00000236"), Attrs([Attr("address","0x824"), +Def(Tid(553, "%00000229"), Attrs([Attr("address","0x824"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(572, "%0000023c"), Attrs([Attr("address","0x828"), +Def(Tid(558, "%0000022e"), Attrs([Attr("address","0x828"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(577, "%00000241"), Attrs([Attr("address","0x82C"), +Def(Tid(563, "%00000233"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(580, "%00000244"), Attrs([Attr("address","0x82C"), +Jmps([Call(Tid(566, "%00000236"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_197, "@__libc_start_main")),Direct(Tid(582, "%00000246"))))])), -Blk(Tid(582, "%00000246"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(585, "%00000249"), Attrs([Attr("address","0x830"), +(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(588, "%0000024c"), Attrs([Attr("address","0x830"), +Jmps([Call(Tid(574, "%0000023e"), Attrs([Attr("address","0x830"), Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_203, "@abort")),Direct(Tid(2_256, "%000008d0"))))])), -Blk(Tid(2_256, "%000008d0"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_257, "%000008d1"), Attrs([]), Int(1,1), -(Direct(Tid(2_204, "@call_weak_fn")),))]))])), Sub(Tid(2_203, "@abort"), +(Direct(Tid(2_056, "@abort")),Direct(Tid(2_054, "%00000806"))))])), +Blk(Tid(2_054, "%00000806"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_055, "%00000807"), 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(586, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_763, "%000006e3"), Attrs([Attr("address","0x7D0"), +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_771, "%000006eb"), Attrs([Attr("address","0x7D4"), +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_778, "%000006f2"), Attrs([Attr("address","0x7D8"), +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_783, "%000006f7"), +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_204, "@call_weak_fn"), +(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_274, "%000008e2"), + "call_weak_fn", Args([Arg(Tid(2_084, "%00000824"), 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(590, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(594, "%00000252"), +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(602, "%0000025a"), + 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)), -Def(Tid(614, "%00000266"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(608, "%00000260"), - Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(606, "%0000025e"))), -Goto(Tid(2_258, "%000008d2"), Attrs([]), Int(1,1), -Direct(Tid(1_325, "%0000052d")))])), Blk(Tid(606, "%0000025e"), +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_058, "%0000080a"), Attrs([]), + Int(1,1), Direct(Tid(1_215, "%000004bf")))])), Blk(Tid(590, "%0000024e"), Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(619, "%0000026b"), Attrs([Attr("address","0x844"), +Jmps([Call(Tid(598, "%00000256"), Attrs([Attr("address","0x844"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_328, "%00000530"), Attrs([Attr("address","0x840"), +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_326, "@__gmon_start__")))])), Blk(Tid(1_326, "@__gmon_start__"), +Direct(Tid(1_216, "@__gmon_start__")))])), Blk(Tid(1_216, "@__gmon_start__"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_738, "%000006ca"), Attrs([Attr("address","0x7C0"), +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_746, "%000006d2"), Attrs([Attr("address","0x7C4"), +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_753, "%000006d9"), Attrs([Attr("address","0x7C8"), +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_758, "%000006de"), +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_206, "@deregister_tm_clones"), +Sub(Tid(2_059, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_275, "%000008e3"), + "deregister_tm_clones", Args([Arg(Tid(2_085, "%00000825"), 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(625, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(629, "%00000275"), +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(636, "%0000027c"), + 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(642, "%00000282"), Attrs([Attr("address","0x858"), +Def(Tid(618, "%0000026a"), Attrs([Attr("address","0x858"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(649, "%00000289"), Attrs([Attr("address","0x85C"), +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(657, "%00000291"), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(630, "%00000276"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(661, "%00000295"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(664, "%00000298"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(635, "%0000027b"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(667, "%0000029b"), Attrs([Attr("address","0x860"), + 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(Var("#16",Imm(64)),Int(0,64))), Def(Tid(670, "%0000029e"), +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("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(684, "%000002ac"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(678, "%000002a6"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(676, "%000002a4"))), Goto(Tid(2_259, "%000008d3"), Attrs([]), - Int(1,1), Direct(Tid(1_286, "%00000506")))])), Blk(Tid(1_286, "%00000506"), + 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_060, "%0000080c"), Attrs([]), + Int(1,1), Direct(Tid(1_185, "%000004a1")))])), Blk(Tid(1_185, "%000004a1"), Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x868"), +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_298, "%00000512"), Attrs([Attr("address","0x86C"), +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)), -Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), Var("#94",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_303, "%00000517"), - Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), - Var("#94",Imm(1)), Direct(Tid(676, "%000002a4"))), -Goto(Tid(2_260, "%000008d4"), Attrs([]), Int(1,1), -Direct(Tid(1_312, "%00000520")))])), Blk(Tid(676, "%000002a4"), +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_061, "%0000080d"), Attrs([]), + Int(1,1), Direct(Tid(1_204, "%000004b4")))])), Blk(Tid(659, "%00000293"), Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(689, "%000002b1"), Attrs([Attr("address","0x87C"), +Jmps([Call(Tid(667, "%0000029b"), Attrs([Attr("address","0x87C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_312, "%00000520"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_318, "%00000526"), Attrs([Attr("address","0x874"), +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_323, "%0000052b"), Attrs([Attr("address","0x878"), +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_209, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_276, "%000008e4"), +Sub(Tid(2_062, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_086, "%00000826"), 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(865, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(818, "@frame_dummy"), Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(867, "%00000363"), Attrs([Attr("address","0x910"), +Jmps([Call(Tid(820, "%00000334"), Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_216, "@register_tm_clones")),))]))])), Sub(Tid(2_210, "@free"), +(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_277, "%000008e5"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_087, "%00000827"), 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_121, "@free"), Attrs([Attr("address","0x7F0")]), - Phis([]), Defs([Def(Tid(1_813, "%00000715"), Attrs([Attr("address","0x7F0"), +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_821, "%0000071d"), Attrs([Attr("address","0x7F4"), +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_828, "%00000724"), Attrs([Attr("address","0x7F8"), +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_833, "%00000729"), +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_211, "@main"), +(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_278, "%000008e6"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_088, "%00000828"), 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_279, "%000008e7"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_089, "%00000829"), 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_280, "%000008e8"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_090, "%0000082a"), 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(869, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(876, "%0000036c"), +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("#42",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(881, "%00000371"), Attrs([Attr("address","0x914"), +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("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(886, "%00000376"), Attrs([Attr("address","0x914"), +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("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(890, "%0000037a"), Attrs([Attr("address","0x914"), +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("#42",Imm(64))), Def(Tid(898, "%00000382"), +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(906, "%0000038a"), Attrs([Attr("address","0x91C"), -Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#47",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(911, "%0000038f"), +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("#47",Imm(64)),Var("R20",Imm(64)),LittleEndian(),64)), -Def(Tid(916, "%00000394"), Attrs([Attr("address","0x91C"), +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("#47",Imm(64)),Int(8,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x920"), +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(930, "%000003a2"), Attrs([Attr("address","0x924"), +Def(Tid(879, "%0000036f"), Attrs([Attr("address","0x924"), Attr("insn","mov w0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x928"), +Def(Tid(884, "%00000374"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x188")]), Var("R30",Imm(64)), Int(2348,64))]), -Jmps([Call(Tid(938, "%000003aa"), Attrs([Attr("address","0x928"), +Jmps([Call(Tid(887, "%00000377"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x188")]), Int(1,1), -(Direct(Tid(2_212, "@malloc")),Direct(Tid(940, "%000003ac"))))])), -Blk(Tid(940, "%000003ac"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(944, "%000003b0"), Attrs([Attr("address","0x92C"), +(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(950, "%000003b6"), Attrs([Attr("address","0x930"), +Def(Tid(897, "%00000381"), Attrs([Attr("address","0x930"), Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), -Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x934"), +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(965, "%000003c5"), +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(973, "%000003cd"), + 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(981, "%000003d5"), Attrs([Attr("address","0x940"), +Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x940"), Attr("insn","mov x0, x20")]), Var("R0",Imm(64)), Var("R20",Imm(64))), -Def(Tid(986, "%000003da"), Attrs([Attr("address","0x944"), +Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x944"), Attr("insn","bl #-0x1d4")]), Var("R30",Imm(64)), Int(2376,64))]), -Jmps([Call(Tid(989, "%000003dd"), Attrs([Attr("address","0x944"), +Jmps([Call(Tid(931, "%000003a3"), Attrs([Attr("address","0x944"), Attr("insn","bl #-0x1d4")]), Int(1,1), -(Direct(Tid(2_219, "@strlen")),Direct(Tid(991, "%000003df"))))])), -Blk(Tid(991, "%000003df"), Attrs([Attr("address","0x948")]), Phis([]), -Defs([Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x948"), +(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(1_005, "%000003ed"), Attrs([Attr("address","0x94C"), +Def(Tid(943, "%000003af"), Attrs([Attr("address","0x94C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x950"), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x950"), Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), -Def(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x954"), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x954"), Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2392,64))]), -Jmps([Call(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x954"), +Jmps([Call(Tid(957, "%000003bd"), Attrs([Attr("address","0x954"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_213, "@memcpy")),Direct(Tid(1_023, "%000003ff"))))])), -Blk(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x958")]), Phis([]), -Defs([Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x958"), +(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(1_034, "%0000040a"), Attrs([Attr("address","0x95C"), +Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x95C"), Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2400,64))]), -Jmps([Call(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x95C"), +Jmps([Call(Tid(971, "%000003cb"), Attrs([Attr("address","0x95C"), Attr("insn","bl #-0x17c")]), Int(1,1), -(Direct(Tid(2_215, "@puts")),Direct(Tid(1_039, "%0000040f"))))])), -Blk(Tid(1_039, "%0000040f"), Attrs([Attr("address","0x960")]), Phis([]), -Defs([Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x960"), +(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(1_053, "%0000041d"), Attrs([Attr("address","0x964"), +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),BigEndian(),8)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x968"), +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(1_069, "%0000042d"), Attrs([Attr("address","0x96C"), +Def(Tid(998, "%000003e6"), Attrs([Attr("address","0x96C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x970"), +Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x970"), Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2420,64))]), -Jmps([Call(Tid(1_076, "%00000434"), Attrs([Attr("address","0x970"), +Jmps([Call(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x970"), Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_219, "@strlen")),Direct(Tid(1_078, "%00000436"))))])), -Blk(Tid(1_078, "%00000436"), Attrs([Attr("address","0x974")]), Phis([]), -Defs([Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x974"), +(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_092, "%00000444"), Attrs([Attr("address","0x978"), +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_099, "%0000044b"), Attrs([Attr("address","0x97C"), +Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x97C"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x980"), +Def(Tid(1_027, "%00000403"), Attrs([Attr("address","0x980"), Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2436,64))]), -Jmps([Call(Tid(1_107, "%00000453"), Attrs([Attr("address","0x980"), +Jmps([Call(Tid(1_030, "%00000406"), Attrs([Attr("address","0x980"), Attr("insn","bl #-0x1d0")]), Int(1,1), -(Direct(Tid(2_214, "@memset")),Direct(Tid(1_109, "%00000455"))))])), -Blk(Tid(1_109, "%00000455"), Attrs([Attr("address","0x984")]), Phis([]), -Defs([Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x984"), +(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_120, "%00000460"), Attrs([Attr("address","0x988"), +Def(Tid(1_042, "%00000412"), Attrs([Attr("address","0x988"), Attr("insn","bl #-0x198")]), Var("R30",Imm(64)), Int(2444,64))]), -Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x988"), +Jmps([Call(Tid(1_045, "%00000415"), Attrs([Attr("address","0x988"), Attr("insn","bl #-0x198")]), Int(1,1), -(Direct(Tid(2_210, "@free")),Direct(Tid(1_125, "%00000465"))))])), -Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x98C")]), Phis([]), -Defs([Def(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x98C"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_141, "%00000475"), Attrs([Attr("address","0x990"), -Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R20",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),LittleEndian(),64)), -Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x990"), +(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("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), -Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x994"), +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_163, "%0000048b"), Attrs([Attr("address","0x998"), +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_167, "%0000048f"), Attrs([Attr("address","0x998"), +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_170, "%00000492"), Attrs([Attr("address","0x998"), +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_175, "%00000497"), +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_212, "@malloc"), +(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_281, "%000008e9"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_091, "%0000082b"), 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_282, "%000008ea"), +Var("R0",Imm(64)), In()), Arg(Tid(2_092, "%0000082c"), 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(936, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x7A0"), +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_696, "%000006a0"), Attrs([Attr("address","0x7A4"), +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_703, "%000006a7"), Attrs([Attr("address","0x7A8"), +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_708, "%000006ac"), +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_213, "@memcpy"), +(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_283, "%000008eb"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_093, "%0000082d"), 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_284, "%000008ec"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_094, "%0000082e"), 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_285, "%000008ed"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_095, "%0000082f"), 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_286, "%000008ee"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_096, "%00000830"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_019, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_588, "%00000634"), Attrs([Attr("address","0x760"), +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_596, "%0000063c"), Attrs([Attr("address","0x764"), +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_603, "%00000643"), Attrs([Attr("address","0x768"), +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_608, "%00000648"), +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_214, "@memset"), +(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_287, "%000008ef"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_097, "%00000831"), 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_288, "%000008f0"), +Both()), Arg(Tid(2_098, "%00000832"), 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_289, "%000008f1"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_099, "%00000833"), 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_290, "%000008f2"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_100, "%00000834"), 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_105, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_713, "%000006b1"), Attrs([Attr("address","0x7B0"), +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_721, "%000006b9"), Attrs([Attr("address","0x7B4"), +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_728, "%000006c0"), Attrs([Attr("address","0x7B8"), +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_733, "%000006c5"), +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_215, "@puts"), +(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_291, "%000008f3"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_101, "%00000835"), 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_292, "%000008f4"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_102, "%00000836"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_035, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_788, "%000006fc"), Attrs([Attr("address","0x7E0"), +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_796, "%00000704"), Attrs([Attr("address","0x7E4"), +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_803, "%0000070b"), Attrs([Attr("address","0x7E8"), +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_808, "%00000710"), +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_216, "@register_tm_clones"), +Sub(Tid(2_069, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_293, "%000008f5"), + "register_tm_clones", Args([Arg(Tid(2_103, "%00000837"), 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(691, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(695, "%000002b7"), Attrs([Attr("address","0x880"), +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(702, "%000002be"), Attrs([Attr("address","0x884"), +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(708, "%000002c4"), +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(715, "%000002cb"), + 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(723, "%000002d3"), Attrs([Attr("address","0x890"), +Def(Tid(696, "%000002b8"), Attrs([Attr("address","0x890"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(730, "%000002da"), - Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x898"), +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,64)))), -Def(Tid(745, "%000002e9"), Attrs([Attr("address","0x89C"), +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)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(757, "%000002f5"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(751, "%000002ef"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(749, "%000002ed"))), Goto(Tid(2_261, "%000008d5"), Attrs([]), - Int(1,1), Direct(Tid(1_247, "%000004df")))])), Blk(Tid(1_247, "%000004df"), +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_070, "%00000816"), Attrs([]), + Int(1,1), Direct(Tid(1_155, "%00000483")))])), Blk(Tid(1_155, "%00000483"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x8A4"), +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_259, "%000004eb"), Attrs([Attr("address","0x8A8"), +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)), -Def(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), Var("#89",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_264, "%000004f0"), - Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), - Var("#89",Imm(1)), Direct(Tid(749, "%000002ed"))), -Goto(Tid(2_262, "%000008d6"), Attrs([]), Int(1,1), -Direct(Tid(1_273, "%000004f9")))])), Blk(Tid(749, "%000002ed"), +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_071, "%00000817"), Attrs([]), + Int(1,1), Direct(Tid(1_174, "%00000496")))])), Blk(Tid(719, "%000002cf"), Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(762, "%000002fa"), Attrs([Attr("address","0x8B8"), +Jmps([Call(Tid(727, "%000002d7"), Attrs([Attr("address","0x8B8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x8B0"), +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_284, "%00000504"), Attrs([Attr("address","0x8B4"), +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_219, "@strlen"), +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_294, "%000008f6"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_104, "%00000838"), 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_295, "%000008f7"), +In()), Arg(Tid(2_105, "%00000839"), 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(987, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(929, "@strlen"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_613, "%0000064d"), Attrs([Attr("address","0x770"), +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_621, "%00000655"), Attrs([Attr("address","0x774"), +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_628, "%0000065c"), Attrs([Attr("address","0x778"), +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_633, "%00000661"), +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 index 86a3d38de..fb185bd2b 100644 --- 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 @@ -1,357 +1,350 @@ -000008d7: program -00000890: sub __cxa_finalize(__cxa_finalize_result) -000008d8: __cxa_finalize_result :: out u32 = low:32[R0] - -000004db: -0000067f: R16 := 0x20000 -00000687: R17 := mem[R16 + 0x18, el]:u64 -0000068e: R16 := R16 + 0x18 -00000693: call R17 with noreturn - -00000891: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008d9: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -000002fe: -00000305: #34 := R31 - 0x20 -0000030a: mem := mem with [#34, el]:u64 <- R29 -0000030f: mem := mem with [#34 + 8, el]:u64 <- R30 -00000313: R31 := #34 -0000031a: R29 := R31 -00000322: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000328: R19 := 0x20000 -00000331: R0 := pad:32[mem[R19 + 0x70]] -0000033d: #36 := ~~0:0[R0] -00000337: when #36 goto %00000335 -000008cd: goto %00000499 - -00000499: -0000049d: R0 := 0x1F000 -000004a5: R0 := mem[R0 + 0xFC8, el]:u64 -000004b1: #86 := R0 = 0 -000004ab: when #86 goto %000004a9 -000008ce: goto %000004c9 - -000004c9: -000004cd: R0 := 0x20000 -000004d5: R0 := mem[R0 + 0x58, el]:u64 -000004da: R30 := 0x8F0 -000004dd: call @__cxa_finalize with return %000004a9 - -000004a9: -000004b6: R30 := 0x8F4 -000004b8: call @deregister_tm_clones with return %000004ba - -000004ba: -000004bf: R0 := 1 -000004c7: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -000008cf: goto %00000335 - -00000335: -00000345: R19 := mem[R31 + 0x10, el]:u64 -0000034f: R29 := mem[R31, el]:u64 -00000353: R30 := mem[R31 + 8, el]:u64 -00000356: R31 := R31 + 0x20 -0000035b: call R30 with noreturn - -00000895: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008da: __libc_start_main_main :: in u64 = R0 -000008db: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008dc: __libc_start_main_arg3 :: in out u64 = R2 -000008dd: __libc_start_main_auxv :: in out u64 = R3 -000008de: __libc_start_main_result :: out u32 = low:32[R0] - -00000242: -00000666: R16 := 0x20000 -0000066e: R17 := mem[R16 + 0x10, el]:u64 -00000675: R16 := R16 + 0x10 -0000067a: call R17 with noreturn - -00000896: sub _fini(_fini_result) -000008df: _fini_result :: out u32 = low:32[R0] +00000819: program +000007fd: sub __cxa_finalize(__cxa_finalize_result) +0000081a: __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) +0000081b: __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 +000007ff: goto %00000448 + +00000448: +0000044b: R0 := 0x1F000 +00000452: R0 := mem[R0 + 0xFC8, el]:u64 +00000458: when R0 = 0 goto %00000456 +00000800: 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] +00000801: 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) +0000081c: __libc_start_main_main :: in u64 = R0 +0000081d: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000081e: __libc_start_main_arg3 :: in out u64 = R2 +0000081f: __libc_start_main_auxv :: in out u64 = R3 +00000820: __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) +00000821: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -00000897: sub _init(_init_result) -000008e0: _init_result :: out u32 = low:32[R0] - -000007b4: -000007bd: #117 := R31 - 0x10 -000007c2: mem := mem with [#117, el]:u64 <- R29 -000007c7: mem := mem with [#117 + 8, el]:u64 <- R30 -000007cb: R31 := #117 -000007d2: R29 := R31 -000007d7: R30 := 0x738 -000007d9: call @call_weak_fn with return %000007db - -000007db: -000007e3: R29 := mem[R31, el]:u64 -000007e7: R30 := mem[R31 + 8, el]:u64 -000007ea: R31 := R31 + 0x10 -000007ef: call R30 with noreturn - -00000898: sub _start(_start_result) -000008e1: _start_result :: out u32 = low:32[R0] - -000001f8: -000001fe: R29 := 0 -00000204: R30 := 0 -0000020c: R5 := R0 -00000214: R1 := mem[R31, el]:u64 -0000021b: R2 := R31 + 8 -00000222: R6 := R31 -00000228: R0 := 0x1F000 -00000230: R0 := mem[R0 + 0xFD8, el]:u64 -00000236: R3 := 0 -0000023c: R4 := 0 -00000241: R30 := 0x830 -00000244: call @__libc_start_main with return %00000246 - -00000246: -00000249: R30 := 0x834 -0000024c: call @abort with return %000008d0 - -000008d0: -000008d1: call @call_weak_fn with noreturn - -0000089b: sub abort() - - -0000024a: -000006e3: R16 := 0x20000 -000006eb: R17 := mem[R16 + 0x38, el]:u64 -000006f2: R16 := R16 + 0x38 -000006f7: call R17 with noreturn - -0000089c: sub call_weak_fn(call_weak_fn_result) -000008e2: call_weak_fn_result :: out u32 = low:32[R0] +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) +00000822: _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) +00000823: _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 %00000806 + +00000806: +00000807: 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) +00000824: 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 +0000080a: goto %000004bf 0000024e: -00000252: R0 := 0x1F000 -0000025a: R0 := mem[R0 + 0xFD0, el]:u64 -00000266: #12 := R0 = 0 -00000260: when #12 goto %0000025e -000008d2: goto %0000052d - -0000025e: -0000026b: call R30 with noreturn - -0000052d: -00000530: goto @__gmon_start__ - -0000052e: -000006ca: R16 := 0x20000 -000006d2: R17 := mem[R16 + 0x30, el]:u64 -000006d9: R16 := R16 + 0x30 -000006de: call R17 with noreturn - -0000089e: sub deregister_tm_clones(deregister_tm_clones_result) -000008e3: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000271: -00000275: R0 := 0x20000 -0000027c: R0 := R0 + 0x70 -00000282: R1 := 0x20000 -00000289: R1 := R1 + 0x70 -00000291: #16 := 1 + ~R0 + R1 -00000295: NF := 63:63[#16] -00000298: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -0000029b: ZF := #16 = 0 -0000029e: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002ac: #21 := ZF -000002a6: when #21 goto %000002a4 -000008d3: goto %00000506 - -00000506: -0000050a: R1 := 0x1F000 -00000512: R1 := mem[R1 + 0xFC0, el]:u64 -0000051d: #94 := R1 = 0 -00000517: when #94 goto %000002a4 -000008d4: goto %00000520 - -000002a4: -000002b1: call R30 with noreturn - -00000520: -00000526: R16 := R1 -0000052b: call R16 with noreturn - -000008a1: sub frame_dummy(frame_dummy_result) -000008e4: frame_dummy_result :: out u32 = low:32[R0] - -00000361: -00000363: call @register_tm_clones with noreturn - -000008a2: sub free(free_ptr) -000008e5: free_ptr :: in out u64 = R0 - -00000461: -00000715: R16 := 0x20000 -0000071d: R17 := mem[R16 + 0x48, el]:u64 -00000724: R16 := R16 + 0x48 -00000729: call R17 with noreturn - -000008a3: sub main(main_argc, main_argv, main_result) -000008e6: main_argc :: in u32 = low:32[R0] -000008e7: main_argv :: in out u64 = R1 -000008e8: main_result :: out u32 = low:32[R0] - -00000365: -0000036c: #42 := R31 - 0x30 -00000371: mem := mem with [#42, el]:u64 <- R29 -00000376: mem := mem with [#42 + 8, el]:u64 <- R30 -0000037a: R31 := #42 -00000382: mem := mem with [R31 + 0x10, el]:u64 <- R21 -0000038a: #47 := R31 + 0x20 -0000038f: mem := mem with [#47, el]:u64 <- R20 -00000394: mem := mem with [#47 + 8, el]:u64 <- R19 -0000039b: R29 := R31 -000003a2: R0 := 0xB -000003a7: R30 := 0x92C -000003aa: call @malloc with return %000003ac - -000003ac: -000003b0: R21 := 0x20000 -000003b6: R20 := 0x20000 -000003bd: R20 := R20 + 0x61 -000003c5: R19 := R0 -000003cd: mem := mem with [R21 + 0x78, el]:u64 <- R0 -000003d5: R0 := R20 -000003da: R30 := 0x948 -000003dd: call @strlen with return %000003df - -000003df: -000003e5: R2 := R0 -000003ed: R0 := R19 -000003f5: R1 := R20 -000003fa: R30 := 0x958 -000003fd: call @memcpy with return %000003ff - -000003ff: -00000405: R0 := R19 -0000040a: R30 := 0x960 -0000040d: call @puts with return %0000040f - -0000040f: -00000415: R8 := mem[R21 + 0x78, el]:u64 -0000041d: mem := mem with [R8 + 4] <- 0 -00000425: R19 := mem[R21 + 0x78, el]:u64 -0000042d: R0 := R19 -00000432: R30 := 0x974 -00000434: call @strlen with return %00000436 - -00000436: -0000043c: R2 := R0 -00000444: R0 := R19 -0000044b: R1 := 1 -00000450: R30 := 0x984 -00000453: call @memset with return %00000455 - -00000455: -0000045b: R0 := mem[R21 + 0x78, el]:u64 -00000460: R30 := 0x98C -00000463: call @free with return %00000465 - -00000465: -0000046c: R0 := 0 -00000475: R20 := mem[R31 + 0x20, el]:u64 -00000479: R19 := mem[R31 + 0x28, el]:u64 -00000481: R21 := mem[R31 + 0x10, el]:u64 -0000048b: R29 := mem[R31, el]:u64 -0000048f: R30 := mem[R31 + 8, el]:u64 -00000492: R31 := R31 + 0x30 -00000497: call R30 with noreturn - -000008a4: sub malloc(malloc_size, malloc_result) -000008e9: malloc_size :: in u64 = R0 -000008ea: malloc_result :: out u64 = R0 - -000003a8: -00000698: R16 := 0x20000 -000006a0: R17 := mem[R16 + 0x20, el]:u64 -000006a7: R16 := R16 + 0x20 -000006ac: call R17 with noreturn - -000008a5: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008eb: memcpy_dst :: in out u64 = R0 -000008ec: memcpy_src :: in out u64 = R1 -000008ed: memcpy_n :: in u64 = R2 -000008ee: memcpy_result :: out u64 = R0 - -000003fb: -00000634: R16 := 0x20000 -0000063c: R17 := mem[R16, el]:u64 -00000643: R16 := R16 -00000648: call R17 with noreturn - -000008a6: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008ef: memset_buf :: in out u64 = R0 -000008f0: memset_c :: in u32 = low:32[R1] -000008f1: memset_n :: in u64 = R2 -000008f2: memset_result :: out u64 = R0 - -00000451: -000006b1: R16 := 0x20000 -000006b9: R17 := mem[R16 + 0x28, el]:u64 -000006c0: R16 := R16 + 0x28 -000006c5: call R17 with noreturn - -000008a7: sub puts(puts_s, puts_result) -000008f3: puts_s :: in u64 = R0 -000008f4: puts_result :: out u32 = low:32[R0] - -0000040b: -000006fc: R16 := 0x20000 -00000704: R17 := mem[R16 + 0x40, el]:u64 -0000070b: R16 := R16 + 0x40 -00000710: call R17 with noreturn - -000008a8: sub register_tm_clones(register_tm_clones_result) -000008f5: register_tm_clones_result :: out u32 = low:32[R0] - -000002b3: -000002b7: R0 := 0x20000 -000002be: R0 := R0 + 0x70 -000002c4: R1 := 0x20000 -000002cb: R1 := R1 + 0x70 -000002d3: R1 := R1 - R0 -000002da: R2 := R1 >> 0x3F -000002e2: R1 := R2 + (R1 ~>> 3) -000002e9: R1 := R1 >> 1 -000002f5: #30 := R1 = 0 -000002ef: when #30 goto %000002ed -000008d5: goto %000004df - -000004df: -000004e3: R2 := 0x1F000 -000004eb: R2 := mem[R2 + 0xFE0, el]:u64 -000004f6: #89 := R2 = 0 -000004f0: when #89 goto %000002ed -000008d6: goto %000004f9 - -000002ed: -000002fa: call R30 with noreturn - -000004f9: -000004ff: R16 := R2 -00000504: call R16 with noreturn - -000008ab: sub strlen(strlen_s, strlen_result) -000008f6: strlen_s :: in u64 = R0 -000008f7: strlen_result :: out u64 = R0 - -000003db: -0000064d: R16 := 0x20000 -00000655: R17 := mem[R16 + 8, el]:u64 -0000065c: R16 := R16 + 8 -00000661: call R17 with noreturn +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) +00000825: 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 +0000080c: goto %000004a1 + +000004a1: +000004a4: R1 := 0x1F000 +000004ab: R1 := mem[R1 + 0xFC0, el]:u64 +000004b0: when R1 = 0 goto %00000293 +0000080d: goto %000004b4 + +00000293: +0000029b: call R30 with noreturn + +000004b4: +000004b8: R16 := R1 +000004bd: call R16 with noreturn + +0000080e: sub frame_dummy(frame_dummy_result) +00000826: frame_dummy_result :: out u32 = low:32[R0] + +00000332: +00000334: call @register_tm_clones with noreturn + +0000080f: sub free(free_ptr) +00000827: 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) +00000828: main_argc :: in u32 = low:32[R0] +00000829: main_argv :: in out u64 = R1 +0000082a: 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) +0000082b: malloc_size :: in u64 = R0 +0000082c: 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) +0000082d: memcpy_dst :: in out u64 = R0 +0000082e: memcpy_src :: in out u64 = R1 +0000082f: memcpy_n :: in u64 = R2 +00000830: 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) +00000831: memset_buf :: in out u64 = R0 +00000832: memset_c :: in u32 = low:32[R1] +00000833: memset_n :: in u64 = R2 +00000834: 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) +00000835: puts_s :: in u64 = R0 +00000836: 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) +00000837: 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 +00000816: goto %00000483 + +00000483: +00000486: R2 := 0x1F000 +0000048d: R2 := mem[R2 + 0xFE0, el]:u64 +00000492: when R2 = 0 goto %000002cf +00000817: goto %00000496 + +000002cf: +000002d7: call R30 with noreturn + +00000496: +0000049a: R16 := R2 +0000049f: call R16 with noreturn + +00000818: sub strlen(strlen_s, strlen_result) +00000838: strlen_s :: in u64 = R0 +00000839: 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt index 4ce6993bd..58e85e225 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt @@ -69,713 +69,699 @@ Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), Annotation(Region(0x800,0x9C3), Attr("section","\".text\"")), Annotation(Region(0x800,0x9C3), Attr("code-region","()")), Annotation(Region(0x9C4,0x9D7), Attr("code-region","()"))]), -Program(Tid(2_361, "%00000939"), Attrs([]), - Subs([Sub(Tid(2_290, "@__cxa_finalize"), +Program(Tid(2_217, "%000008a9"), Attrs([]), + Subs([Sub(Tid(2_146, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_362, "%0000093a"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_218, "%000008aa"), 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_323, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_234, "@__cxa_finalize"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_743, "%000006cf"), Attrs([Attr("address","0x790"), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x794"), +Def(Tid(1_629, "%0000065d"), 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_758, "%000006de"), Attrs([Attr("address","0x798"), +Def(Tid(1_635, "%00000663"), 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_763, "%000006e3"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_640, "%00000668"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_291, "@__do_global_dtors_aux"), +Sub(Tid(2_147, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_363, "%0000093b"), + "__do_global_dtors_aux", Args([Arg(Tid(2_219, "%000008ab"), 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(802, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(809, "%00000329"), +Blks([Blk(Tid(767, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(771, "%00000303"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x8C0"), +Def(Tid(777, "%00000309"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(819, "%00000333"), Attrs([Attr("address","0x8C0"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(823, "%00000337"), Attrs([Attr("address","0x8C0"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(787, "%00000313"), Attrs([Attr("address","0x8C0"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(830, "%0000033e"), +Var("#3",Imm(64))), Def(Tid(793, "%00000319"), Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(838, "%00000346"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(801, "%00000321"), 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(844, "%0000034c"), Attrs([Attr("address","0x8CC"), +Def(Tid(806, "%00000326"), Attrs([Attr("address","0x8CC"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(853, "%00000355"), Attrs([Attr("address","0x8D0"), +Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x8D0"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(865, "%00000361"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(859, "%0000035b"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(857, "%00000359"))), Goto(Tid(2_351, "%0000092f"), Attrs([]), - Int(1,1), Direct(Tid(1_257, "%000004e9")))])), Blk(Tid(1_257, "%000004e9"), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(819, "%00000333"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(817, "%00000331"))), +Goto(Tid(2_207, "%0000089f"), Attrs([]), Int(1,1), +Direct(Tid(1_179, "%0000049b")))])), Blk(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8D8"), +Defs([Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x8D8"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x8DC"), +Def(Tid(1_189, "%000004a5"), 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)), -Def(Tid(1_281, "%00000501"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), Var("#67",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_275, "%000004fb"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), - Var("#67",Imm(1)), Direct(Tid(1_273, "%000004f9"))), -Goto(Tid(2_352, "%00000930"), Attrs([]), Int(1,1), -Direct(Tid(1_305, "%00000519")))])), Blk(Tid(1_305, "%00000519"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_193, "%000004a9"))), Goto(Tid(2_208, "%000008a0"), Attrs([]), + Int(1,1), Direct(Tid(1_218, "%000004c2")))])), Blk(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x8E4"), +Defs([Def(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_317, "%00000525"), Attrs([Attr("address","0x8E8"), +Def(Tid(1_228, "%000004cc"), 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_322, "%0000052a"), Attrs([Attr("address","0x8EC"), +Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(1_236, "%000004d4"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_290, "@__cxa_finalize")),Direct(Tid(1_273, "%000004f9"))))])), -Blk(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x8F0"), +(Direct(Tid(2_146, "@__cxa_finalize")),Direct(Tid(1_193, "%000004a9"))))])), +Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_201, "%000004b1"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_288, "%00000508"), Attrs([Attr("address","0x8F0"), +Jmps([Call(Tid(1_203, "%000004b3"), Attrs([Attr("address","0x8F0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_304, "@deregister_tm_clones")),Direct(Tid(1_290, "%0000050a"))))])), -Blk(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_295, "%0000050f"), Attrs([Attr("address","0x8F4"), +(Direct(Tid(2_160, "@deregister_tm_clones")),Direct(Tid(1_205, "%000004b5"))))])), +Blk(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_208, "%000004b8"), Attrs([Attr("address","0x8F4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_303, "%00000517"), Attrs([Attr("address","0x8F8"), +Def(Tid(1_216, "%000004c0"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_353, "%00000931"), Attrs([]), Int(1,1), -Direct(Tid(857, "%00000359")))])), Blk(Tid(857, "%00000359"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(873, "%00000369"), +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_209, "%000008a1"), Attrs([]), Int(1,1), +Direct(Tid(817, "%00000331")))])), Blk(Tid(817, "%00000331"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(827, "%0000033b"), 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(883, "%00000373"), Attrs([Attr("address","0x900"), +Def(Tid(834, "%00000342"), 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(887, "%00000377"), Attrs([Attr("address","0x900"), +Def(Tid(839, "%00000347"), 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(890, "%0000037a"), Attrs([Attr("address","0x900"), +Def(Tid(843, "%0000034b"), 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(895, "%0000037f"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_295, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_151, "@__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_364, "%0000093c"), + Args([Arg(Tid(2_220, "%000008ac"), 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_365, "%0000093d"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_221, "%000008ad"), 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_366, "%0000093e"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_222, "%000008ae"), 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_367, "%0000093f"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_223, "%000008af"), 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_368, "%00000940"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_224, "%000008b0"), 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(614, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(600, "@__libc_start_main"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x780"), +Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_726, "%000006be"), Attrs([Attr("address","0x784"), +Def(Tid(1_607, "%00000647"), 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_733, "%000006c5"), Attrs([Attr("address","0x788"), +Def(Tid(1_613, "%0000064d"), 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_738, "%000006ca"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_618, "%00000652"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_296, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_152, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9C4")]), - "_fini", Args([Arg(Tid(2_369, "%00000941"), + "_fini", Args([Arg(Tid(2_225, "%000008b1"), 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","0x9C4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9C4")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x9C8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9C8"), +Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x9C8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9C8"), +Store(Var("mem",Mem(64,8)),Var("#0",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(50, "%00000032"), Attrs([Attr("address","0x9C8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9C8"), +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","0x9C8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9CC"), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9CC"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9D0"), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9D0"), 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(76, "%0000004c"), Attrs([Attr("address","0x9D0"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9D0"), 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(79, "%0000004f"), Attrs([Attr("address","0x9D0"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x9D0"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), Attrs([Attr("address","0x9D4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_297, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_153, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), - "_init", Args([Arg(Tid(2_370, "%00000942"), + "_init", Args([Arg(Tid(2_226, "%000008b2"), 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(2_061, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_920, "@_init"), Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(2_070, "%00000816"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#98",Imm(64)), +Defs([Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(2_075, "%0000081b"), Attrs([Attr("address","0x72C"), +Def(Tid(1_932, "%0000078c"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#98",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(2_080, "%00000820"), Attrs([Attr("address","0x72C"), +Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_938, "%00000792"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#98",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(2_084, "%00000824"), Attrs([Attr("address","0x72C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_942, "%00000796"), Attrs([Attr("address","0x72C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#98",Imm(64))), Def(Tid(2_091, "%0000082b"), +Var("#7",Imm(64))), Def(Tid(1_948, "%0000079c"), Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_096, "%00000830"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_953, "%000007a1"), Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), - Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(2_098, "%00000832"), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_955, "%000007a3"), Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), -(Direct(Tid(2_302, "@call_weak_fn")),Direct(Tid(2_100, "%00000834"))))])), -Blk(Tid(2_100, "%00000834"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(2_108, "%0000083c"), Attrs([Attr("address","0x738"), +(Direct(Tid(2_158, "@call_weak_fn")),Direct(Tid(1_957, "%000007a5"))))])), +Blk(Tid(1_957, "%000007a5"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(1_962, "%000007aa"), 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(2_112, "%00000840"), Attrs([Attr("address","0x738"), +Def(Tid(1_967, "%000007af"), 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(2_115, "%00000843"), Attrs([Attr("address","0x738"), +Def(Tid(1_971, "%000007b3"), 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(2_120, "%00000848"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_976, "%000007b8"), Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_298, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_154, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), Attr("stub","()"), Attr("entry-point","()")]), "_start", - Args([Arg(Tid(2_371, "%00000943"), Attrs([Attr("c.layout","[signed : 32]"), + Args([Arg(Tid(2_227, "%000008b3"), 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(540, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(546, "%00000222"), Attrs([Attr("address","0x804"), +Blks([Blk(Tid(537, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(542, "%0000021e"), Attrs([Attr("address","0x804"), Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), -Def(Tid(552, "%00000228"), Attrs([Attr("address","0x808"), +Def(Tid(547, "%00000223"), Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(560, "%00000230"), Attrs([Attr("address","0x80C"), +Def(Tid(553, "%00000229"), Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), -Def(Tid(568, "%00000238"), Attrs([Attr("address","0x810"), +Def(Tid(560, "%00000230"), 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(575, "%0000023f"), Attrs([Attr("address","0x814"), +Def(Tid(566, "%00000236"), Attrs([Attr("address","0x814"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(582, "%00000246"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(572, "%0000023c"), Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(588, "%0000024c"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(577, "%00000241"), Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(596, "%00000254"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(584, "%00000248"), 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(602, "%0000025a"), Attrs([Attr("address","0x824"), +Def(Tid(589, "%0000024d"), Attrs([Attr("address","0x824"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(608, "%00000260"), Attrs([Attr("address","0x828"), +Def(Tid(594, "%00000252"), Attrs([Attr("address","0x828"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(613, "%00000265"), Attrs([Attr("address","0x82C"), +Def(Tid(599, "%00000257"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(616, "%00000268"), Attrs([Attr("address","0x82C"), +Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_295, "@__libc_start_main")),Direct(Tid(618, "%0000026a"))))])), -Blk(Tid(618, "%0000026a"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x830"), +(Direct(Tid(2_151, "@__libc_start_main")),Direct(Tid(604, "%0000025c"))))])), +Blk(Tid(604, "%0000025c"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x830"), Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x830"), +Jmps([Call(Tid(610, "%00000262"), Attrs([Attr("address","0x830"), Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_301, "@abort")),Direct(Tid(2_354, "%00000932"))))])), -Blk(Tid(2_354, "%00000932"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_355, "%00000933"), Attrs([]), Int(1,1), -(Direct(Tid(2_302, "@call_weak_fn")),))]))])), Sub(Tid(2_301, "@abort"), +(Direct(Tid(2_157, "@abort")),Direct(Tid(2_210, "%000008a2"))))])), +Blk(Tid(2_210, "%000008a2"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_211, "%000008a3"), Attrs([]), Int(1,1), +(Direct(Tid(2_158, "@call_weak_fn")),))]))])), Sub(Tid(2_157, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(622, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x7D0"), +Blks([Blk(Tid(608, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x7D4"), +Def(Tid(1_717, "%000006b5"), 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_858, "%00000742"), Attrs([Attr("address","0x7D8"), +Def(Tid(1_723, "%000006bb"), 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_863, "%00000747"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_728, "%000006c0"), Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_302, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_158, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), - "call_weak_fn", Args([Arg(Tid(2_372, "%00000944"), + "call_weak_fn", Args([Arg(Tid(2_228, "%000008b4"), 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(626, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(630, "%00000276"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(612, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(615, "%00000267"), Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(638, "%0000027e"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(622, "%0000026e"), 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)), -Def(Tid(650, "%0000028a"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(644, "%00000284"), - Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(642, "%00000282"))), -Goto(Tid(2_356, "%00000934"), Attrs([]), Int(1,1), -Direct(Tid(1_405, "%0000057d")))])), Blk(Tid(642, "%00000282"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(628, "%00000274"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(626, "%00000272"))), Goto(Tid(2_212, "%000008a4"), Attrs([]), + Int(1,1), Direct(Tid(1_298, "%00000512")))])), Blk(Tid(626, "%00000272"), Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(655, "%0000028f"), Attrs([Attr("address","0x844"), +Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x844"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_405, "%0000057d"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_408, "%00000580"), Attrs([Attr("address","0x840"), +Blk(Tid(1_298, "%00000512"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_301, "%00000515"), Attrs([Attr("address","0x840"), Attr("insn","b #-0x80")]), Int(1,1), -Direct(Tid(1_406, "@__gmon_start__")))])), Blk(Tid(1_406, "@__gmon_start__"), +Direct(Tid(1_299, "@__gmon_start__")))])), Blk(Tid(1_299, "@__gmon_start__"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_818, "%0000071a"), Attrs([Attr("address","0x7C0"), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x7C4"), +Def(Tid(1_695, "%0000069f"), 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_833, "%00000729"), Attrs([Attr("address","0x7C8"), +Def(Tid(1_701, "%000006a5"), 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_838, "%0000072e"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_706, "%000006aa"), Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_304, "@deregister_tm_clones"), +Sub(Tid(2_160, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_373, "%00000945"), + "deregister_tm_clones", Args([Arg(Tid(2_229, "%000008b5"), 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(661, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(665, "%00000299"), +Blks([Blk(Tid(640, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(643, "%00000283"), Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(672, "%000002a0"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(649, "%00000289"), Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x858"), +Def(Tid(654, "%0000028e"), Attrs([Attr("address","0x858"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x85C"), +Def(Tid(660, "%00000294"), Attrs([Attr("address","0x85C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(693, "%000002b5"), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(666, "%0000029a"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(697, "%000002b9"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(700, "%000002bc"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(671, "%0000029f"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x860"), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(677, "%000002a5"), 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(683, "%000002ab"), 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(687, "%000002af"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(706, "%000002c2"), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(691, "%000002b3"), Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(714, "%000002ca"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(712, "%000002c8"))), Goto(Tid(2_357, "%00000935"), Attrs([]), - Int(1,1), Direct(Tid(1_366, "%00000556")))])), Blk(Tid(1_366, "%00000556"), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(697, "%000002b9"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(695, "%000002b7"))), Goto(Tid(2_213, "%000008a5"), Attrs([]), + Int(1,1), Direct(Tid(1_268, "%000004f4")))])), Blk(Tid(1_268, "%000004f4"), Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_370, "%0000055a"), Attrs([Attr("address","0x868"), +Defs([Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x868"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_378, "%00000562"), Attrs([Attr("address","0x86C"), +Def(Tid(1_278, "%000004fe"), 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)), -Def(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), Var("#75",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_383, "%00000567"), - Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), - Var("#75",Imm(1)), Direct(Tid(712, "%000002c8"))), -Goto(Tid(2_358, "%00000936"), Attrs([]), Int(1,1), -Direct(Tid(1_392, "%00000570")))])), Blk(Tid(712, "%000002c8"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_283, "%00000503"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(695, "%000002b7"))), Goto(Tid(2_214, "%000008a6"), Attrs([]), + Int(1,1), Direct(Tid(1_287, "%00000507")))])), Blk(Tid(695, "%000002b7"), Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(725, "%000002d5"), Attrs([Attr("address","0x87C"), +Jmps([Call(Tid(703, "%000002bf"), Attrs([Attr("address","0x87C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_392, "%00000570"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_398, "%00000576"), Attrs([Attr("address","0x874"), +Blk(Tid(1_287, "%00000507"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x874"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(1_296, "%00000510"), Attrs([Attr("address","0x878"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_307, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_374, "%00000946"), +Sub(Tid(2_163, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_230, "%000008b6"), 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(901, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(854, "@frame_dummy"), Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(903, "%00000387"), Attrs([Attr("address","0x910"), +Jmps([Call(Tid(856, "%00000358"), Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_314, "@register_tm_clones")),))]))])), Sub(Tid(2_308, "@free"), +(Direct(Tid(2_170, "@register_tm_clones")),))]))])), Sub(Tid(2_164, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_375, "%00000947"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_231, "%000008b7"), 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_219, "@free"), Attrs([Attr("address","0x7F0")]), - Phis([]), Defs([Def(Tid(1_893, "%00000765"), Attrs([Attr("address","0x7F0"), +Both())]), Blks([Blk(Tid(1_143, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x7F4"), +Def(Tid(1_761, "%000006e1"), 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_908, "%00000774"), Attrs([Attr("address","0x7F8"), +Def(Tid(1_767, "%000006e7"), 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_913, "%00000779"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_772, "%000006ec"), Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_309, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_165, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_376, "%00000948"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_232, "%000008b8"), 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_377, "%00000949"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_233, "%000008b9"), 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_378, "%0000094a"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_234, "%000008ba"), 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(905, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(910, "%0000038e"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(858, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(862, "%0000035e"), Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), -Def(Tid(918, "%00000396"), Attrs([Attr("address","0x918"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(923, "%0000039b"), + Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), +Def(Tid(868, "%00000364"), Attrs([Attr("address","0x918"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(874, "%0000036a"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x918"), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(880, "%00000370"), Attrs([Attr("address","0x918"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x91C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(886, "%00000376"), Attrs([Attr("address","0x91C"), Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(943, "%000003af"), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(893, "%0000037d"), Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(951, "%000003b7"), Attrs([Attr("address","0x924"), +Def(Tid(900, "%00000384"), Attrs([Attr("address","0x924"), Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x928"), +Def(Tid(905, "%00000389"), Attrs([Attr("address","0x928"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x92C"), +Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(965, "%000003c5"), Attrs([Attr("address","0x92C"), +Jmps([Call(Tid(913, "%00000391"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_310, "@malloc")),Direct(Tid(967, "%000003c7"))))])), -Blk(Tid(967, "%000003c7"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x930"), +(Direct(Tid(2_166, "@malloc")),Direct(Tid(915, "%00000393"))))])), +Blk(Tid(915, "%00000393"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(918, "%00000396"), Attrs([Attr("address","0x930"), Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x934"), +Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x934"), Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x938"), +Def(Tid(934, "%000003a6"), Attrs([Attr("address","0x938"), Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x93C"), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x93C"), Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x940"), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x940"), Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x944"), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x944"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x948"), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(1_024, "%00000400"), +PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_029, "%00000405"), Attrs([Attr("address","0x950"), +Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x950"), Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), -Jmps([Call(Tid(1_032, "%00000408"), Attrs([Attr("address","0x950"), +Jmps([Call(Tid(976, "%000003d0"), Attrs([Attr("address","0x950"), Attr("insn","bl #-0x1e0")]), Int(1,1), -(Direct(Tid(2_317, "@strlen")),Direct(Tid(1_034, "%0000040a"))))])), -Blk(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x954")]), Phis([]), -Defs([Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x954"), +(Direct(Tid(2_173, "@strlen")),Direct(Tid(978, "%000003d2"))))])), +Blk(Tid(978, "%000003d2"), Attrs([Attr("address","0x954")]), Phis([]), +Defs([Def(Tid(983, "%000003d7"), Attrs([Attr("address","0x954"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x958"), +Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x958"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_056, "%00000420"), Attrs([Attr("address","0x95C"), +Def(Tid(996, "%000003e4"), Attrs([Attr("address","0x95C"), Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x960"), +Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x960"), Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), -Jmps([Call(Tid(1_064, "%00000428"), Attrs([Attr("address","0x960"), +Jmps([Call(Tid(1_004, "%000003ec"), Attrs([Attr("address","0x960"), Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_311, "@memcpy")),Direct(Tid(1_066, "%0000042a"))))])), -Blk(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_072, "%00000430"), Attrs([Attr("address","0x964"), +(Direct(Tid(2_167, "@memcpy")),Direct(Tid(1_006, "%000003ee"))))])), +Blk(Tid(1_006, "%000003ee"), Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x968"), +Def(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x968"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x96C"), +Def(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), -Jmps([Call(Tid(1_088, "%00000440"), Attrs([Attr("address","0x96C"), +Jmps([Call(Tid(1_026, "%00000402"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_313, "@puts")),Direct(Tid(1_090, "%00000442"))))])), -Blk(Tid(1_090, "%00000442"), Attrs([Attr("address","0x970")]), Phis([]), -Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x970"), +(Direct(Tid(2_169, "@puts")),Direct(Tid(1_028, "%00000404"))))])), +Blk(Tid(1_028, "%00000404"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x970"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x974"), +Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x974"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x978"), +Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x978"), Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_119, "%0000045f"), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_054, "%0000041e"), Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x980"), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x980"), Attr("insn","ldur x9, [x29, #-0x8]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), -Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x984"), +Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x984"), Attr("insn","strb wzr, [x9]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),BigEndian(),8)), -Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x988"), +Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),LittleEndian(),8)), +Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x988"), Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x98C"), +Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x98C"), Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x990"), +Def(Tid(1_090, "%00000442"), Attrs([Attr("address","0x990"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x994"), +Def(Tid(1_095, "%00000447"), Attrs([Attr("address","0x994"), Attr("insn","bl #-0x224")]), Var("R30",Imm(64)), Int(2456,64))]), -Jmps([Call(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x994"), +Jmps([Call(Tid(1_097, "%00000449"), Attrs([Attr("address","0x994"), Attr("insn","bl #-0x224")]), Int(1,1), -(Direct(Tid(2_317, "@strlen")),Direct(Tid(1_168, "%00000490"))))])), -Blk(Tid(1_168, "%00000490"), Attrs([Attr("address","0x998")]), Phis([]), -Defs([Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x998"), +(Direct(Tid(2_173, "@strlen")),Direct(Tid(1_099, "%0000044b"))))])), +Blk(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x998")]), Phis([]), +Defs([Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x998"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x99C"), +Def(Tid(1_110, "%00000456"), Attrs([Attr("address","0x99C"), Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x9A0"), +Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x9A0"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x9A4"), +Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x9A4"), Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2472,64))]), -Jmps([Call(Tid(1_197, "%000004ad"), Attrs([Attr("address","0x9A4"), +Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x9A4"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_312, "@memset")),Direct(Tid(1_199, "%000004af"))))])), -Blk(Tid(1_199, "%000004af"), Attrs([Attr("address","0x9A8")]), Phis([]), -Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x9A8"), +(Direct(Tid(2_168, "@memset")),Direct(Tid(1_125, "%00000465"))))])), +Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x9A8")]), Phis([]), +Defs([Def(Tid(1_130, "%0000046a"), Attrs([Attr("address","0x9A8"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x9AC"), +Def(Tid(1_137, "%00000471"), Attrs([Attr("address","0x9AC"), Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x9B0"), +Def(Tid(1_142, "%00000476"), Attrs([Attr("address","0x9B0"), Attr("insn","bl #-0x1c0")]), Var("R30",Imm(64)), Int(2484,64))]), -Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x9B0"), +Jmps([Call(Tid(1_145, "%00000479"), Attrs([Attr("address","0x9B0"), Attr("insn","bl #-0x1c0")]), Int(1,1), -(Direct(Tid(2_308, "@free")),Direct(Tid(1_223, "%000004c7"))))])), -Blk(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x9B4")]), Phis([]), -Defs([Def(Tid(1_230, "%000004ce"), Attrs([Attr("address","0x9B4"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x9B8"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), -Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x9B8"), +(Direct(Tid(2_164, "@free")),Direct(Tid(1_147, "%0000047b"))))])), +Blk(Tid(1_147, "%0000047b"), Attrs([Attr("address","0x9B4")]), Phis([]), +Defs([Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x9B4"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x9B8"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_161, "%00000489"), + Attrs([Attr("address","0x9B8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), + Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), +Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x9B8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), -Def(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x9BC"), +Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_172, "%00000494"), Attrs([Attr("address","0x9BC"), Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_255, "%000004e7"), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_177, "%00000499"), Attrs([Attr("address","0x9C0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_310, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_166, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_379, "%0000094b"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_235, "%000008bb"), 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_380, "%0000094c"), +Var("R0",Imm(64)), In()), Arg(Tid(2_236, "%000008bc"), 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(963, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x7A0"), +Blks([Blk(Tid(911, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_651, "%00000673"), 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_783, "%000006f7"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_657, "%00000679"), 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_788, "%000006fc"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_662, "%0000067e"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_311, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_167, "@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_381, "%0000094d"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_237, "%000008bd"), 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_382, "%0000094e"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_238, "%000008be"), 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_383, "%0000094f"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_239, "%000008bf"), 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_384, "%00000950"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_240, "%000008c0"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_062, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_668, "%00000684"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_002, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_676, "%0000068c"), Attrs([Attr("address","0x764"), +Def(Tid(1_563, "%0000061b"), 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_683, "%00000693"), Attrs([Attr("address","0x768"), +Def(Tid(1_569, "%00000621"), Attrs([Attr("address","0x768"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_688, "%00000698"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_574, "%00000626"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_312, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_168, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x7B0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_385, "%00000951"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_241, "%000008c1"), 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_386, "%00000952"), +Both()), Arg(Tid(2_242, "%000008c2"), 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_387, "%00000953"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_243, "%000008c3"), 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_388, "%00000954"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_244, "%000008c4"), 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_195, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_793, "%00000701"), Attrs([Attr("address","0x7B0"), +Blks([Blk(Tid(1_121, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x7B4"), +Def(Tid(1_673, "%00000689"), 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_808, "%00000710"), Attrs([Attr("address","0x7B8"), +Def(Tid(1_679, "%0000068f"), 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_813, "%00000715"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_684, "%00000694"), Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_313, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_169, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x7E0"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_389, "%00000955"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_245, "%000008c5"), 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_390, "%00000956"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_246, "%000008c6"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_086, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_868, "%0000074c"), Attrs([Attr("address","0x7E0"), +Blks([Blk(Tid(1_024, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x7E4"), +Def(Tid(1_739, "%000006cb"), 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_883, "%0000075b"), Attrs([Attr("address","0x7E8"), +Def(Tid(1_745, "%000006d1"), 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_888, "%00000760"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_750, "%000006d6"), Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_314, "@register_tm_clones"), +Sub(Tid(2_170, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_391, "%00000957"), + "register_tm_clones", Args([Arg(Tid(2_247, "%000008c7"), 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(727, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x880"), +Blks([Blk(Tid(705, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(708, "%000002c4"), Attrs([Attr("address","0x880"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x884"), +Def(Tid(714, "%000002ca"), Attrs([Attr("address","0x884"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(744, "%000002e8"), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(719, "%000002cf"), Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(751, "%000002ef"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(725, "%000002d5"), Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x890"), +Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x890"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(766, "%000002fe"), - Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(774, "%00000306"), Attrs([Attr("address","0x898"), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(738, "%000002e2"), 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(745, "%000002e9"), 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,64)))), -Def(Tid(781, "%0000030d"), Attrs([Attr("address","0x89C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x89C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(793, "%00000319"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(787, "%00000313"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(785, "%00000311"))), Goto(Tid(2_359, "%00000937"), Attrs([]), - Int(1,1), Direct(Tid(1_327, "%0000052f")))])), Blk(Tid(1_327, "%0000052f"), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(757, "%000002f5"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(755, "%000002f3"))), Goto(Tid(2_215, "%000008a7"), Attrs([]), + Int(1,1), Direct(Tid(1_238, "%000004d6")))])), Blk(Tid(1_238, "%000004d6"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_331, "%00000533"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_339, "%0000053b"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_248, "%000004e0"), 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)), -Def(Tid(1_350, "%00000546"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), Var("#70",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_344, "%00000540"), - Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), - Var("#70",Imm(1)), Direct(Tid(785, "%00000311"))), -Goto(Tid(2_360, "%00000938"), Attrs([]), Int(1,1), -Direct(Tid(1_353, "%00000549")))])), Blk(Tid(785, "%00000311"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_253, "%000004e5"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(755, "%000002f3"))), Goto(Tid(2_216, "%000008a8"), Attrs([]), + Int(1,1), Direct(Tid(1_257, "%000004e9")))])), Blk(Tid(755, "%000002f3"), Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(798, "%0000031e"), Attrs([Attr("address","0x8B8"), +Jmps([Call(Tid(763, "%000002fb"), Attrs([Attr("address","0x8B8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_359, "%0000054f"), Attrs([Attr("address","0x8B0"), +Blk(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8B0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8B4"), +Jmps([Call(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8B4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_317, "@strlen"), +Sub(Tid(2_173, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_392, "%00000958"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_248, "%000008c8"), 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_393, "%00000959"), +In()), Arg(Tid(2_249, "%000008c9"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_030, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(974, "@strlen"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_693, "%0000069d"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_578, "%0000062a"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_701, "%000006a5"), Attrs([Attr("address","0x774"), +Def(Tid(1_585, "%00000631"), 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_708, "%000006ac"), Attrs([Attr("address","0x778"), +Def(Tid(1_591, "%00000637"), 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_713, "%000006b1"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_596, "%0000063c"), 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir index ed93b38a3..6b5f3b499 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir @@ -1,361 +1,354 @@ -00000939: program -000008f2: sub __cxa_finalize(__cxa_finalize_result) -0000093a: __cxa_finalize_result :: out u32 = low:32[R0] - -0000052b: -000006cf: R16 := 0x20000 -000006d7: R17 := mem[R16 + 0x18, el]:u64 -000006de: R16 := R16 + 0x18 -000006e3: call R17 with noreturn - -000008f3: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000093b: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000322: -00000329: #34 := R31 - 0x20 -0000032e: mem := mem with [#34, el]:u64 <- R29 -00000333: mem := mem with [#34 + 8, el]:u64 <- R30 -00000337: R31 := #34 -0000033e: R29 := R31 -00000346: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000034c: R19 := 0x20000 -00000355: R0 := pad:32[mem[R19 + 0x70]] -00000361: #36 := ~~0:0[R0] -0000035b: when #36 goto %00000359 -0000092f: goto %000004e9 - -000004e9: -000004ed: R0 := 0x1F000 -000004f5: R0 := mem[R0 + 0xFC8, el]:u64 -00000501: #67 := R0 = 0 -000004fb: when #67 goto %000004f9 -00000930: goto %00000519 - -00000519: -0000051d: R0 := 0x20000 -00000525: R0 := mem[R0 + 0x58, el]:u64 -0000052a: R30 := 0x8F0 -0000052d: call @__cxa_finalize with return %000004f9 - -000004f9: -00000506: R30 := 0x8F4 -00000508: call @deregister_tm_clones with return %0000050a - -0000050a: -0000050f: R0 := 1 -00000517: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -00000931: goto %00000359 - -00000359: -00000369: R19 := mem[R31 + 0x10, el]:u64 -00000373: R29 := mem[R31, el]:u64 -00000377: R30 := mem[R31 + 8, el]:u64 -0000037a: R31 := R31 + 0x20 -0000037f: call R30 with noreturn - -000008f7: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -0000093c: __libc_start_main_main :: in u64 = R0 -0000093d: __libc_start_main_arg2 :: in u32 = low:32[R1] -0000093e: __libc_start_main_arg3 :: in out u64 = R2 -0000093f: __libc_start_main_auxv :: in out u64 = R3 -00000940: __libc_start_main_result :: out u32 = low:32[R0] - -00000266: -000006b6: R16 := 0x20000 -000006be: R17 := mem[R16 + 0x10, el]:u64 -000006c5: R16 := R16 + 0x10 -000006ca: call R17 with noreturn - -000008f8: sub _fini(_fini_result) -00000941: _fini_result :: out u32 = low:32[R0] +000008a9: program +00000862: sub __cxa_finalize(__cxa_finalize_result) +000008aa: __cxa_finalize_result :: out u32 = low:32[R0] + +000004d2: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16 + 0x18, el]:u64 +00000663: R16 := R16 + 0x18 +00000668: call R17 with noreturn + +00000863: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008ab: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002ff: +00000303: #3 := R31 - 0x20 +00000309: mem := mem with [#3, el]:u64 <- R29 +0000030f: mem := mem with [#3 + 8, el]:u64 <- R30 +00000313: R31 := #3 +00000319: R29 := R31 +00000321: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000326: R19 := 0x20000 +0000032d: R0 := pad:64[mem[R19 + 0x70]] +00000333: when 0:0[R0] goto %00000331 +0000089f: goto %0000049b + +0000049b: +0000049e: R0 := 0x1F000 +000004a5: R0 := mem[R0 + 0xFC8, el]:u64 +000004ab: when R0 = 0 goto %000004a9 +000008a0: goto %000004c2 + +000004c2: +000004c5: R0 := 0x20000 +000004cc: R0 := mem[R0 + 0x58, el]:u64 +000004d1: R30 := 0x8F0 +000004d4: call @__cxa_finalize with return %000004a9 + +000004a9: +000004b1: R30 := 0x8F4 +000004b3: call @deregister_tm_clones with return %000004b5 + +000004b5: +000004b8: R0 := 1 +000004c0: mem := mem with [R19 + 0x70] <- 7:0[R0] +000008a1: goto %00000331 + +00000331: +0000033b: R19 := mem[R31 + 0x10, el]:u64 +00000342: R29 := mem[R31, el]:u64 +00000347: R30 := mem[R31 + 8, el]:u64 +0000034b: R31 := R31 + 0x20 +00000350: call R30 with noreturn + +00000867: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008ac: __libc_start_main_main :: in u64 = R0 +000008ad: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008ae: __libc_start_main_arg3 :: in out u64 = R2 +000008af: __libc_start_main_auxv :: in out u64 = R3 +000008b0: __libc_start_main_result :: out u32 = low:32[R0] + +00000258: +00000640: R16 := 0x20000 +00000647: R17 := mem[R16 + 0x10, el]:u64 +0000064d: R16 := R16 + 0x10 +00000652: call R17 with noreturn + +00000868: sub _fini(_fini_result) +000008b1: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -000008f9: sub _init(_init_result) -00000942: _init_result :: out u32 = low:32[R0] - -0000080d: -00000816: #98 := R31 - 0x10 -0000081b: mem := mem with [#98, el]:u64 <- R29 -00000820: mem := mem with [#98 + 8, el]:u64 <- R30 -00000824: R31 := #98 -0000082b: R29 := R31 -00000830: R30 := 0x738 -00000832: call @call_weak_fn with return %00000834 - -00000834: -0000083c: R29 := mem[R31, el]:u64 -00000840: R30 := mem[R31 + 8, el]:u64 -00000843: R31 := R31 + 0x10 -00000848: call R30 with noreturn - -000008fa: sub _start(_start_result) -00000943: _start_result :: out u32 = low:32[R0] - -0000021c: -00000222: R29 := 0 -00000228: R30 := 0 -00000230: R5 := R0 -00000238: R1 := mem[R31, el]:u64 -0000023f: R2 := R31 + 8 -00000246: R6 := R31 -0000024c: R0 := 0x1F000 -00000254: R0 := mem[R0 + 0xFD8, el]:u64 -0000025a: R3 := 0 -00000260: R4 := 0 -00000265: R30 := 0x830 -00000268: call @__libc_start_main with return %0000026a - -0000026a: -0000026d: R30 := 0x834 -00000270: call @abort with return %00000932 - -00000932: -00000933: call @call_weak_fn with noreturn - -000008fd: sub abort() - - -0000026e: -00000733: R16 := 0x20000 -0000073b: R17 := mem[R16 + 0x38, el]:u64 -00000742: R16 := R16 + 0x38 -00000747: call R17 with noreturn - -000008fe: sub call_weak_fn(call_weak_fn_result) -00000944: call_weak_fn_result :: out u32 = low:32[R0] +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 + +00000869: sub _init(_init_result) +000008b2: _init_result :: out u32 = low:32[R0] + +00000780: +00000786: #7 := R31 - 0x10 +0000078c: mem := mem with [#7, el]:u64 <- R29 +00000792: mem := mem with [#7 + 8, el]:u64 <- R30 +00000796: R31 := #7 +0000079c: R29 := R31 +000007a1: R30 := 0x738 +000007a3: call @call_weak_fn with return %000007a5 + +000007a5: +000007aa: R29 := mem[R31, el]:u64 +000007af: R30 := mem[R31 + 8, el]:u64 +000007b3: R31 := R31 + 0x10 +000007b8: call R30 with noreturn + +0000086a: sub _start(_start_result) +000008b3: _start_result :: out u32 = low:32[R0] + +00000219: +0000021e: R29 := 0 +00000223: R30 := 0 +00000229: R5 := R0 +00000230: R1 := mem[R31, el]:u64 +00000236: R2 := R31 + 8 +0000023c: R6 := R31 +00000241: R0 := 0x1F000 +00000248: R0 := mem[R0 + 0xFD8, el]:u64 +0000024d: R3 := 0 +00000252: R4 := 0 +00000257: R30 := 0x830 +0000025a: call @__libc_start_main with return %0000025c + +0000025c: +0000025f: R30 := 0x834 +00000262: call @abort with return %000008a2 + +000008a2: +000008a3: call @call_weak_fn with noreturn + +0000086d: sub abort() + + +00000260: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x38, el]:u64 +000006bb: R16 := R16 + 0x38 +000006c0: call R17 with noreturn + +0000086e: sub call_weak_fn(call_weak_fn_result) +000008b4: call_weak_fn_result :: out u32 = low:32[R0] + +00000264: +00000267: R0 := 0x1F000 +0000026e: R0 := mem[R0 + 0xFD0, el]:u64 +00000274: when R0 = 0 goto %00000272 +000008a4: goto %00000512 00000272: -00000276: R0 := 0x1F000 -0000027e: R0 := mem[R0 + 0xFD0, el]:u64 -0000028a: #12 := R0 = 0 -00000284: when #12 goto %00000282 -00000934: goto %0000057d - -00000282: -0000028f: call R30 with noreturn - -0000057d: -00000580: goto @__gmon_start__ - -0000057e: -0000071a: R16 := 0x20000 -00000722: R17 := mem[R16 + 0x30, el]:u64 -00000729: R16 := R16 + 0x30 -0000072e: call R17 with noreturn - -00000900: sub deregister_tm_clones(deregister_tm_clones_result) -00000945: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000295: -00000299: R0 := 0x20000 -000002a0: R0 := R0 + 0x70 -000002a6: R1 := 0x20000 -000002ad: R1 := R1 + 0x70 -000002b5: #16 := 1 + ~R0 + R1 -000002b9: NF := 63:63[#16] -000002bc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002bf: ZF := #16 = 0 -000002c2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002d0: #21 := ZF -000002ca: when #21 goto %000002c8 -00000935: goto %00000556 - -00000556: -0000055a: R1 := 0x1F000 -00000562: R1 := mem[R1 + 0xFC0, el]:u64 -0000056d: #75 := R1 = 0 -00000567: when #75 goto %000002c8 -00000936: goto %00000570 - -000002c8: -000002d5: call R30 with noreturn - -00000570: -00000576: R16 := R1 -0000057b: call R16 with noreturn - -00000903: sub frame_dummy(frame_dummy_result) -00000946: frame_dummy_result :: out u32 = low:32[R0] - -00000385: -00000387: call @register_tm_clones with noreturn - -00000904: sub free(free_ptr) -00000947: free_ptr :: in out u64 = R0 - -000004c3: -00000765: R16 := 0x20000 -0000076d: R17 := mem[R16 + 0x48, el]:u64 -00000774: R16 := R16 + 0x48 -00000779: call R17 with noreturn - -00000905: sub main(main_argc, main_argv, main_result) -00000948: main_argc :: in u32 = low:32[R0] -00000949: main_argv :: in out u64 = R1 -0000094a: main_result :: out u32 = low:32[R0] - -00000389: -0000038e: R31 := R31 - 0x40 -00000396: #42 := R31 + 0x30 -0000039b: mem := mem with [#42, el]:u64 <- R29 -000003a0: mem := mem with [#42 + 8, el]:u64 <- R30 -000003a7: R29 := R31 + 0x30 -000003af: mem := mem with [R29 - 8, el]:u64 <- 0 -000003b7: mem := mem with [R29 - 0x10, el]:u64 <- 0 -000003bd: R0 := 0xB -000003c2: R30 := 0x930 -000003c5: call @malloc with return %000003c7 - -000003c7: -000003cb: R8 := 0x20000 -000003d3: mem := mem with [R31 + 0x18, el]:u64 <- R8 -000003db: mem := mem with [R8 + 0x78, el]:u64 <- R0 -000003e3: R8 := mem[R8 + 0x78, el]:u64 -000003eb: mem := mem with [R31 + 8, el]:u64 <- R8 -000003f1: R0 := 0x20000 -000003f8: R0 := R0 + 0x61 -00000400: mem := mem with [R31, el]:u64 <- R0 -00000405: R30 := 0x954 -00000408: call @strlen with return %0000040a - -0000040a: -00000410: R1 := mem[R31, el]:u64 -00000418: R2 := R0 -00000420: R0 := mem[R31 + 8, el]:u64 -00000425: R30 := 0x964 -00000428: call @memcpy with return %0000042a - -0000042a: -00000430: R8 := mem[R31 + 0x18, el]:u64 -00000438: R0 := mem[R8 + 0x78, el]:u64 -0000043d: R30 := 0x970 -00000440: call @puts with return %00000442 - -00000442: -00000448: R8 := mem[R31 + 0x18, el]:u64 -00000450: R9 := mem[R8 + 0x78, el]:u64 -00000457: R9 := R9 + 4 -0000045f: mem := mem with [R29 - 8, el]:u64 <- R9 -00000467: R9 := mem[R29 - 8, el]:u64 -0000046f: mem := mem with [R9] <- 0 -00000477: R9 := mem[R8 + 0x78, el]:u64 -0000047f: mem := mem with [R31 + 0x10, el]:u64 <- R9 -00000487: R0 := mem[R8 + 0x78, el]:u64 -0000048c: R30 := 0x998 -0000048e: call @strlen with return %00000490 - -00000490: -00000496: R2 := R0 -0000049e: R0 := mem[R31 + 0x10, el]:u64 -000004a5: R1 := 1 -000004aa: R30 := 0x9A8 -000004ad: call @memset with return %000004af - -000004af: -000004b5: R8 := mem[R31 + 0x18, el]:u64 -000004bd: R0 := mem[R8 + 0x78, el]:u64 -000004c2: R30 := 0x9B4 -000004c5: call @free with return %000004c7 - -000004c7: -000004ce: R0 := 0 -000004d7: R29 := mem[R31 + 0x30, el]:u64 -000004db: R30 := mem[R31 + 0x38, el]:u64 -000004e2: R31 := R31 + 0x40 -000004e7: call R30 with noreturn - -00000906: sub malloc(malloc_size, malloc_result) -0000094b: malloc_size :: in u64 = R0 -0000094c: malloc_result :: out u64 = R0 - -000003c3: -000006e8: R16 := 0x20000 -000006f0: R17 := mem[R16 + 0x20, el]:u64 -000006f7: R16 := R16 + 0x20 -000006fc: call R17 with noreturn - -00000907: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -0000094d: memcpy_dst :: in out u64 = R0 -0000094e: memcpy_src :: in out u64 = R1 -0000094f: memcpy_n :: in u64 = R2 -00000950: memcpy_result :: out u64 = R0 - -00000426: -00000684: R16 := 0x20000 -0000068c: R17 := mem[R16, el]:u64 -00000693: R16 := R16 -00000698: call R17 with noreturn - -00000908: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000951: memset_buf :: in out u64 = R0 -00000952: memset_c :: in u32 = low:32[R1] -00000953: memset_n :: in u64 = R2 -00000954: memset_result :: out u64 = R0 - -000004ab: -00000701: R16 := 0x20000 -00000709: R17 := mem[R16 + 0x28, el]:u64 -00000710: R16 := R16 + 0x28 -00000715: call R17 with noreturn - -00000909: sub puts(puts_s, puts_result) -00000955: puts_s :: in u64 = R0 -00000956: puts_result :: out u32 = low:32[R0] - -0000043e: -0000074c: R16 := 0x20000 -00000754: R17 := mem[R16 + 0x40, el]:u64 -0000075b: R16 := R16 + 0x40 -00000760: call R17 with noreturn - -0000090a: sub register_tm_clones(register_tm_clones_result) -00000957: register_tm_clones_result :: out u32 = low:32[R0] - -000002d7: -000002db: R0 := 0x20000 -000002e2: R0 := R0 + 0x70 -000002e8: R1 := 0x20000 -000002ef: R1 := R1 + 0x70 -000002f7: R1 := R1 - R0 -000002fe: R2 := R1 >> 0x3F -00000306: R1 := R2 + (R1 ~>> 3) -0000030d: R1 := R1 >> 1 -00000319: #30 := R1 = 0 -00000313: when #30 goto %00000311 -00000937: goto %0000052f - -0000052f: -00000533: R2 := 0x1F000 -0000053b: R2 := mem[R2 + 0xFE0, el]:u64 -00000546: #70 := R2 = 0 -00000540: when #70 goto %00000311 -00000938: goto %00000549 - -00000311: -0000031e: call R30 with noreturn - -00000549: -0000054f: R16 := R2 -00000554: call R16 with noreturn - -0000090d: sub strlen(strlen_s, strlen_result) -00000958: strlen_s :: in u64 = R0 -00000959: strlen_result :: out u64 = R0 - -00000406: -0000069d: R16 := 0x20000 -000006a5: R17 := mem[R16 + 8, el]:u64 -000006ac: R16 := R16 + 8 -000006b1: call R17 with noreturn +0000027a: call R30 with noreturn + +00000512: +00000515: goto @__gmon_start__ + +00000513: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x30, el]:u64 +000006a5: R16 := R16 + 0x30 +000006aa: call R17 with noreturn + +00000870: sub deregister_tm_clones(deregister_tm_clones_result) +000008b5: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000280: +00000283: R0 := 0x20000 +00000289: R0 := R0 + 0x70 +0000028e: R1 := 0x20000 +00000294: R1 := R1 + 0x70 +0000029a: #1 := ~R0 +0000029f: #2 := R1 + ~R0 +000002a5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002ab: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002af: ZF := #2 + 1 = 0 +000002b3: NF := 63:63[#2 + 1] +000002b9: when ZF goto %000002b7 +000008a5: goto %000004f4 + +000004f4: +000004f7: R1 := 0x1F000 +000004fe: R1 := mem[R1 + 0xFC0, el]:u64 +00000503: when R1 = 0 goto %000002b7 +000008a6: goto %00000507 + +000002b7: +000002bf: call R30 with noreturn + +00000507: +0000050b: R16 := R1 +00000510: call R16 with noreturn + +00000873: sub frame_dummy(frame_dummy_result) +000008b6: frame_dummy_result :: out u32 = low:32[R0] + +00000356: +00000358: call @register_tm_clones with noreturn + +00000874: sub free(free_ptr) +000008b7: free_ptr :: in out u64 = R0 + +00000477: +000006da: R16 := 0x20000 +000006e1: R17 := mem[R16 + 0x48, el]:u64 +000006e7: R16 := R16 + 0x48 +000006ec: call R17 with noreturn + +00000875: sub main(main_argc, main_argv, main_result) +000008b8: main_argc :: in u32 = low:32[R0] +000008b9: main_argv :: in out u64 = R1 +000008ba: main_result :: out u32 = low:32[R0] + +0000035a: +0000035e: R31 := R31 - 0x40 +00000364: #4 := R31 + 0x30 +0000036a: mem := mem with [#4, el]:u64 <- R29 +00000370: mem := mem with [#4 + 8, el]:u64 <- R30 +00000376: R29 := R31 + 0x30 +0000037d: mem := mem with [R29 - 8, el]:u64 <- 0 +00000384: mem := mem with [R29 - 0x10, el]:u64 <- 0 +00000389: R0 := 0xB +0000038e: R30 := 0x930 +00000391: call @malloc with return %00000393 + +00000393: +00000396: R8 := 0x20000 +0000039e: mem := mem with [R31 + 0x18, el]:u64 <- R8 +000003a6: mem := mem with [R8 + 0x78, el]:u64 <- R0 +000003ad: R8 := mem[R8 + 0x78, el]:u64 +000003b5: mem := mem with [R31 + 8, el]:u64 <- R8 +000003ba: R0 := 0x20000 +000003c0: R0 := R0 + 0x61 +000003c8: mem := mem with [R31, el]:u64 <- R0 +000003cd: R30 := 0x954 +000003d0: call @strlen with return %000003d2 + +000003d2: +000003d7: R1 := mem[R31, el]:u64 +000003dd: R2 := R0 +000003e4: R0 := mem[R31 + 8, el]:u64 +000003e9: R30 := 0x964 +000003ec: call @memcpy with return %000003ee + +000003ee: +000003f3: R8 := mem[R31 + 0x18, el]:u64 +000003fa: R0 := mem[R8 + 0x78, el]:u64 +000003ff: R30 := 0x970 +00000402: call @puts with return %00000404 + +00000404: +00000409: R8 := mem[R31 + 0x18, el]:u64 +00000410: R9 := mem[R8 + 0x78, el]:u64 +00000416: R9 := R9 + 4 +0000041e: mem := mem with [R29 - 8, el]:u64 <- R9 +00000425: R9 := mem[R29 - 8, el]:u64 +0000042c: mem := mem with [R9] <- 0 +00000433: R9 := mem[R8 + 0x78, el]:u64 +0000043b: mem := mem with [R31 + 0x10, el]:u64 <- R9 +00000442: R0 := mem[R8 + 0x78, el]:u64 +00000447: R30 := 0x998 +00000449: call @strlen with return %0000044b + +0000044b: +0000044f: R2 := R0 +00000456: R0 := mem[R31 + 0x10, el]:u64 +0000045b: R1 := 1 +00000460: R30 := 0x9A8 +00000463: call @memset with return %00000465 + +00000465: +0000046a: R8 := mem[R31 + 0x18, el]:u64 +00000471: R0 := mem[R8 + 0x78, el]:u64 +00000476: R30 := 0x9B4 +00000479: call @free with return %0000047b + +0000047b: +0000047e: R0 := 0 +00000484: #5 := R31 + 0x30 +00000489: R29 := mem[#5, el]:u64 +0000048e: R30 := mem[#5 + 8, el]:u64 +00000494: R31 := R31 + 0x40 +00000499: call R30 with noreturn + +00000876: sub malloc(malloc_size, malloc_result) +000008bb: malloc_size :: in u64 = R0 +000008bc: malloc_result :: out u64 = R0 + +0000038f: +0000066c: R16 := 0x20000 +00000673: R17 := mem[R16 + 0x20, el]:u64 +00000679: R16 := R16 + 0x20 +0000067e: call R17 with noreturn + +00000877: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008bd: memcpy_dst :: in out u64 = R0 +000008be: memcpy_src :: in out u64 = R1 +000008bf: memcpy_n :: in u64 = R2 +000008c0: memcpy_result :: out u64 = R0 + +000003ea: +00000614: R16 := 0x20000 +0000061b: R17 := mem[R16, el]:u64 +00000621: R16 := R16 +00000626: call R17 with noreturn + +00000878: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008c1: memset_buf :: in out u64 = R0 +000008c2: memset_c :: in u32 = low:32[R1] +000008c3: memset_n :: in u64 = R2 +000008c4: memset_result :: out u64 = R0 + +00000461: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x28, el]:u64 +0000068f: R16 := R16 + 0x28 +00000694: call R17 with noreturn + +00000879: sub puts(puts_s, puts_result) +000008c5: puts_s :: in u64 = R0 +000008c6: puts_result :: out u32 = low:32[R0] + +00000400: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x40, el]:u64 +000006d1: R16 := R16 + 0x40 +000006d6: call R17 with noreturn + +0000087a: sub register_tm_clones(register_tm_clones_result) +000008c7: register_tm_clones_result :: out u32 = low:32[R0] + +000002c1: +000002c4: R0 := 0x20000 +000002ca: R0 := R0 + 0x70 +000002cf: R1 := 0x20000 +000002d5: R1 := R1 + 0x70 +000002dc: R1 := R1 + ~R0 + 1 +000002e2: R2 := 0.63:63[R1] +000002e9: R1 := R2 + (R1 ~>> 3) +000002ef: R1 := extend:64[63:1[R1]] +000002f5: when R1 = 0 goto %000002f3 +000008a7: goto %000004d6 + +000004d6: +000004d9: R2 := 0x1F000 +000004e0: R2 := mem[R2 + 0xFE0, el]:u64 +000004e5: when R2 = 0 goto %000002f3 +000008a8: goto %000004e9 + +000002f3: +000002fb: call R30 with noreturn + +000004e9: +000004ed: R16 := R2 +000004f2: call R16 with noreturn + +0000087d: sub strlen(strlen_s, strlen_result) +000008c8: strlen_s :: in u64 = R0 +000008c9: strlen_result :: out u64 = R0 + +000003ce: +0000062a: R16 := 0x20000 +00000631: R17 := mem[R16 + 8, el]:u64 +00000637: R16 := R16 + 8 +0000063c: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt index ecd840932..655fa3e13 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt @@ -69,719 +69,705 @@ Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), Annotation(Region(0x840,0xA0B), Attr("section","\".text\"")), Annotation(Region(0x840,0xA0B), Attr("code-region","()")), Annotation(Region(0xA0C,0xA1F), Attr("code-region","()"))]), -Program(Tid(2_268, "%000008dc"), Attrs([]), - Subs([Sub(Tid(2_197, "@__cxa_finalize"), +Program(Tid(2_079, "%0000081f"), Attrs([]), + Subs([Sub(Tid(2_051, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_269, "%000008dd"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_080, "%00000820"), 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_348, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_257, "@__cxa_finalize"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x7C0"), +Defs([Def(Tid(1_645, "%0000066d"), Attrs([Attr("address","0x7C0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x7C4"), +Def(Tid(1_652, "%00000674"), Attrs([Attr("address","0x7C4"), 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_783, "%000006f7"), Attrs([Attr("address","0x7C8"), +Def(Tid(1_658, "%0000067a"), Attrs([Attr("address","0x7C8"), Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_788, "%000006fc"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_663, "%0000067f"), Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_198, "@__do_global_dtors_aux"), +Sub(Tid(2_052, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_270, "%000008de"), + "__do_global_dtors_aux", Args([Arg(Tid(2_081, "%00000821"), 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(810, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x900")]), Phis([]), Defs([Def(Tid(817, "%00000331"), +Blks([Blk(Tid(775, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x900")]), Phis([]), Defs([Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x900"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(822, "%00000336"), Attrs([Attr("address","0x900"), +Def(Tid(785, "%00000311"), Attrs([Attr("address","0x900"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(827, "%0000033b"), Attrs([Attr("address","0x900"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(791, "%00000317"), Attrs([Attr("address","0x900"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(831, "%0000033f"), Attrs([Attr("address","0x900"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(795, "%0000031b"), Attrs([Attr("address","0x900"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(838, "%00000346"), +Var("#3",Imm(64))), Def(Tid(801, "%00000321"), Attrs([Attr("address","0x904"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(846, "%0000034e"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(809, "%00000329"), Attrs([Attr("address","0x908"), 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(852, "%00000354"), Attrs([Attr("address","0x90C"), +Def(Tid(814, "%0000032e"), Attrs([Attr("address","0x90C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(861, "%0000035d"), Attrs([Attr("address","0x910"), +Def(Tid(821, "%00000335"), Attrs([Attr("address","0x910"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(873, "%00000369"), Attrs([Attr("address","0x914"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(867, "%00000363"), Attrs([Attr("address","0x914"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(865, "%00000361"))), Goto(Tid(2_258, "%000008d2"), Attrs([]), - Int(1,1), Direct(Tid(1_282, "%00000502")))])), Blk(Tid(1_282, "%00000502"), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(827, "%0000033b"), Attrs([Attr("address","0x914"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(825, "%00000339"))), +Goto(Tid(2_053, "%00000805"), Attrs([]), Int(1,1), +Direct(Tid(1_202, "%000004b2")))])), Blk(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x918"), +Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x918"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x91C"), +Def(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x91C"), Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64)), -Def(Tid(1_306, "%0000051a"), Attrs([Attr("address","0x920"), -Attr("insn","cbz x0, #0x10")]), Var("#70",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_300, "%00000514"), - Attrs([Attr("address","0x920"), Attr("insn","cbz x0, #0x10")]), - Var("#70",Imm(1)), Direct(Tid(1_298, "%00000512"))), -Goto(Tid(2_259, "%000008d3"), Attrs([]), Int(1,1), -Direct(Tid(1_330, "%00000532")))])), Blk(Tid(1_330, "%00000532"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x920"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_216, "%000004c0"))), Goto(Tid(2_054, "%00000806"), Attrs([]), + Int(1,1), Direct(Tid(1_241, "%000004d9")))])), Blk(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_334, "%00000536"), Attrs([Attr("address","0x924"), +Defs([Def(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x924"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_342, "%0000053e"), Attrs([Attr("address","0x928"), +Def(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x928"), 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_347, "%00000543"), Attrs([Attr("address","0x92C"), +Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(1_350, "%00000546"), Attrs([Attr("address","0x92C"), +Jmps([Call(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x92C"), Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_197, "@__cxa_finalize")),Direct(Tid(1_298, "%00000512"))))])), -Blk(Tid(1_298, "%00000512"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_311, "%0000051f"), Attrs([Attr("address","0x930"), +(Direct(Tid(2_051, "@__cxa_finalize")),Direct(Tid(1_216, "%000004c0"))))])), +Blk(Tid(1_216, "%000004c0"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_224, "%000004c8"), Attrs([Attr("address","0x930"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2356,64))]), -Jmps([Call(Tid(1_313, "%00000521"), Attrs([Attr("address","0x930"), +Jmps([Call(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x930"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_211, "@deregister_tm_clones")),Direct(Tid(1_315, "%00000523"))))])), -Blk(Tid(1_315, "%00000523"), Attrs([Attr("address","0x934")]), Phis([]), -Defs([Def(Tid(1_320, "%00000528"), Attrs([Attr("address","0x934"), +(Direct(Tid(2_065, "@deregister_tm_clones")),Direct(Tid(1_228, "%000004cc"))))])), +Blk(Tid(1_228, "%000004cc"), Attrs([Attr("address","0x934")]), Phis([]), +Defs([Def(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x934"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_328, "%00000530"), Attrs([Attr("address","0x938"), +Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x938"), 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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_260, "%000008d4"), Attrs([]), Int(1,1), -Direct(Tid(865, "%00000361")))])), Blk(Tid(865, "%00000361"), - Attrs([Attr("address","0x93C")]), Phis([]), Defs([Def(Tid(881, "%00000371"), +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_055, "%00000807"), Attrs([]), Int(1,1), +Direct(Tid(825, "%00000339")))])), Blk(Tid(825, "%00000339"), + Attrs([Attr("address","0x93C")]), Phis([]), Defs([Def(Tid(835, "%00000343"), Attrs([Attr("address","0x93C"), 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(891, "%0000037b"), Attrs([Attr("address","0x940"), +Def(Tid(842, "%0000034a"), Attrs([Attr("address","0x940"), 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(895, "%0000037f"), Attrs([Attr("address","0x940"), +Def(Tid(847, "%0000034f"), Attrs([Attr("address","0x940"), 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(898, "%00000382"), Attrs([Attr("address","0x940"), +Def(Tid(851, "%00000353"), Attrs([Attr("address","0x940"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(903, "%00000387"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(856, "%00000358"), Attrs([Attr("address","0x944"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_202, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_056, "@__libc_start_main"), Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), Attr("address","0x7B0"), Attr("stub","()")]), "__libc_start_main", - Args([Arg(Tid(2_271, "%000008df"), + Args([Arg(Tid(2_082, "%00000822"), 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_272, "%000008e0"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_083, "%00000823"), 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_273, "%000008e1"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_084, "%00000824"), 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_274, "%000008e2"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_085, "%00000825"), 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_275, "%000008e3"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_086, "%00000826"), 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(622, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(608, "@__libc_start_main"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_743, "%000006cf"), Attrs([Attr("address","0x7B0"), +Defs([Def(Tid(1_623, "%00000657"), Attrs([Attr("address","0x7B0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x7B4"), +Def(Tid(1_630, "%0000065e"), Attrs([Attr("address","0x7B4"), 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_758, "%000006de"), Attrs([Attr("address","0x7B8"), +Def(Tid(1_636, "%00000664"), Attrs([Attr("address","0x7B8"), Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_763, "%000006e3"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_641, "%00000669"), Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_203, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_057, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0xA0C")]), - "_fini", Args([Arg(Tid(2_276, "%000008e4"), + "_fini", Args([Arg(Tid(2_087, "%00000827"), 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","0xA0C")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0xA0C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0xA10"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0xA10"), +Def(Tid(44, "%0000002c"), Attrs([Attr("address","0xA10"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0xA10"), +Store(Var("mem",Mem(64,8)),Var("#0",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(50, "%00000032"), Attrs([Attr("address","0xA10"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0xA10"), +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","0xA10"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0xA14"), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0xA14"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0xA18"), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0xA18"), 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(76, "%0000004c"), Attrs([Attr("address","0xA18"), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0xA18"), 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(79, "%0000004f"), Attrs([Attr("address","0xA18"), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0xA18"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), Attrs([Attr("address","0xA1C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_204, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_058, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x758")]), - "_init", Args([Arg(Tid(2_277, "%000008e5"), + "_init", Args([Arg(Tid(2_088, "%00000828"), 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_966, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_823, "@_init"), Attrs([Attr("address","0x758")]), Phis([]), -Defs([Def(Tid(1_975, "%000007b7"), Attrs([Attr("address","0x75C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#101",Imm(64)), +Defs([Def(Tid(1_829, "%00000725"), Attrs([Attr("address","0x75C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_980, "%000007bc"), Attrs([Attr("address","0x75C"), +Def(Tid(1_835, "%0000072b"), Attrs([Attr("address","0x75C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#101",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_985, "%000007c1"), Attrs([Attr("address","0x75C"), +Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_841, "%00000731"), Attrs([Attr("address","0x75C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#101",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_989, "%000007c5"), Attrs([Attr("address","0x75C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_845, "%00000735"), Attrs([Attr("address","0x75C"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#101",Imm(64))), Def(Tid(1_996, "%000007cc"), +Var("#7",Imm(64))), Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x760"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_001, "%000007d1"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_856, "%00000740"), Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1896,64))]), Jmps([Call(Tid(2_003, "%000007d3"), + Var("R30",Imm(64)), Int(1896,64))]), Jmps([Call(Tid(1_858, "%00000742"), Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_209, "@call_weak_fn")),Direct(Tid(2_005, "%000007d5"))))])), -Blk(Tid(2_005, "%000007d5"), Attrs([Attr("address","0x768")]), Phis([]), -Defs([Def(Tid(2_013, "%000007dd"), Attrs([Attr("address","0x768"), +(Direct(Tid(2_063, "@call_weak_fn")),Direct(Tid(1_860, "%00000744"))))])), +Blk(Tid(1_860, "%00000744"), Attrs([Attr("address","0x768")]), Phis([]), +Defs([Def(Tid(1_865, "%00000749"), Attrs([Attr("address","0x768"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(2_017, "%000007e1"), Attrs([Attr("address","0x768"), +Def(Tid(1_870, "%0000074e"), Attrs([Attr("address","0x768"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(2_020, "%000007e4"), Attrs([Attr("address","0x768"), +Def(Tid(1_874, "%00000752"), Attrs([Attr("address","0x768"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_025, "%000007e9"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_879, "%00000757"), Attrs([Attr("address","0x76C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_205, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_059, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_278, "%000008e6"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_089, "%00000829"), 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(548, "@_start"), - Attrs([Attr("address","0x840")]), Phis([]), Defs([Def(Tid(554, "%0000022a"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(545, "@_start"), + Attrs([Attr("address","0x840")]), Phis([]), Defs([Def(Tid(550, "%00000226"), Attrs([Attr("address","0x844"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(560, "%00000230"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(555, "%0000022b"), Attrs([Attr("address","0x848"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(568, "%00000238"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(561, "%00000231"), Attrs([Attr("address","0x84C"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(576, "%00000240"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(568, "%00000238"), Attrs([Attr("address","0x850"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(583, "%00000247"), Attrs([Attr("address","0x854"), +Def(Tid(574, "%0000023e"), Attrs([Attr("address","0x854"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(590, "%0000024e"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(580, "%00000244"), Attrs([Attr("address","0x858"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(596, "%00000254"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(585, "%00000249"), Attrs([Attr("address","0x85C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(604, "%0000025c"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(592, "%00000250"), Attrs([Attr("address","0x860"), 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(610, "%00000262"), Attrs([Attr("address","0x864"), +Def(Tid(597, "%00000255"), Attrs([Attr("address","0x864"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(616, "%00000268"), Attrs([Attr("address","0x868"), +Def(Tid(602, "%0000025a"), Attrs([Attr("address","0x868"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x86C"), +Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x86C"), Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2160,64))]), -Jmps([Call(Tid(624, "%00000270"), Attrs([Attr("address","0x86C"), +Jmps([Call(Tid(610, "%00000262"), Attrs([Attr("address","0x86C"), Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_202, "@__libc_start_main")),Direct(Tid(626, "%00000272"))))])), -Blk(Tid(626, "%00000272"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(629, "%00000275"), Attrs([Attr("address","0x870"), +(Direct(Tid(2_056, "@__libc_start_main")),Direct(Tid(612, "%00000264"))))])), +Blk(Tid(612, "%00000264"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(615, "%00000267"), Attrs([Attr("address","0x870"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2164,64))]), -Jmps([Call(Tid(632, "%00000278"), Attrs([Attr("address","0x870"), +Jmps([Call(Tid(618, "%0000026a"), Attrs([Attr("address","0x870"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_208, "@abort")),Direct(Tid(2_261, "%000008d5"))))])), -Blk(Tid(2_261, "%000008d5"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_262, "%000008d6"), Attrs([]), Int(1,1), -(Direct(Tid(2_209, "@call_weak_fn")),))]))])), Sub(Tid(2_208, "@abort"), +(Direct(Tid(2_062, "@abort")),Direct(Tid(2_060, "%0000080c"))))])), +Blk(Tid(2_060, "%0000080c"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_061, "%0000080d"), Attrs([]), Int(1,1), +(Direct(Tid(2_063, "@call_weak_fn")),))]))])), Sub(Tid(2_062, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x800"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(630, "@abort"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(1_868, "%0000074c"), Attrs([Attr("address","0x800"), +Blks([Blk(Tid(616, "@abort"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(1_733, "%000006c5"), Attrs([Attr("address","0x800"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x804"), +Def(Tid(1_740, "%000006cc"), Attrs([Attr("address","0x804"), 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_883, "%0000075b"), Attrs([Attr("address","0x808"), +Def(Tid(1_746, "%000006d2"), Attrs([Attr("address","0x808"), Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_888, "%00000760"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x80C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_209, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_063, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x874")]), - "call_weak_fn", Args([Arg(Tid(2_279, "%000008e7"), + "call_weak_fn", Args([Arg(Tid(2_090, "%0000082a"), 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(634, "@call_weak_fn"), - Attrs([Attr("address","0x874")]), Phis([]), Defs([Def(Tid(638, "%0000027e"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(620, "@call_weak_fn"), + Attrs([Attr("address","0x874")]), Phis([]), Defs([Def(Tid(623, "%0000026f"), Attrs([Attr("address","0x874"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(646, "%00000286"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(630, "%00000276"), Attrs([Attr("address","0x878"), Attr("insn","ldr x0, [x0, #0xfc0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64)), -Def(Tid(658, "%00000292"), Attrs([Attr("address","0x87C"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(652, "%0000028c"), - Attrs([Attr("address","0x87C"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(650, "%0000028a"))), -Goto(Tid(2_263, "%000008d7"), Attrs([]), Int(1,1), -Direct(Tid(1_430, "%00000596")))])), Blk(Tid(650, "%0000028a"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(636, "%0000027c"), Attrs([Attr("address","0x87C"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(634, "%0000027a"))), Goto(Tid(2_064, "%00000810"), Attrs([]), + Int(1,1), Direct(Tid(1_321, "%00000529")))])), Blk(Tid(634, "%0000027a"), Attrs([Attr("address","0x884")]), Phis([]), Defs([]), -Jmps([Call(Tid(663, "%00000297"), Attrs([Attr("address","0x884"), +Jmps([Call(Tid(642, "%00000282"), Attrs([Attr("address","0x884"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_430, "%00000596"), Attrs([Attr("address","0x880")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_433, "%00000599"), Attrs([Attr("address","0x880"), +Blk(Tid(1_321, "%00000529"), Attrs([Attr("address","0x880")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_324, "%0000052c"), Attrs([Attr("address","0x880"), Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_431, "@__gmon_start__")))])), Blk(Tid(1_431, "@__gmon_start__"), +Direct(Tid(1_322, "@__gmon_start__")))])), Blk(Tid(1_322, "@__gmon_start__"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x7F0"), +Defs([Def(Tid(1_711, "%000006af"), Attrs([Attr("address","0x7F0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x7F4"), +Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x7F4"), 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_858, "%00000742"), Attrs([Attr("address","0x7F8"), +Def(Tid(1_724, "%000006bc"), Attrs([Attr("address","0x7F8"), Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_863, "%00000747"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_729, "%000006c1"), Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_211, "@deregister_tm_clones"), +Sub(Tid(2_065, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x890")]), - "deregister_tm_clones", Args([Arg(Tid(2_280, "%000008e8"), + "deregister_tm_clones", Args([Arg(Tid(2_091, "%0000082b"), 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(669, "@deregister_tm_clones"), - Attrs([Attr("address","0x890")]), Phis([]), Defs([Def(Tid(673, "%000002a1"), +Blks([Blk(Tid(648, "@deregister_tm_clones"), + Attrs([Attr("address","0x890")]), Phis([]), Defs([Def(Tid(651, "%0000028b"), Attrs([Attr("address","0x890"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(680, "%000002a8"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(657, "%00000291"), Attrs([Attr("address","0x894"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(686, "%000002ae"), Attrs([Attr("address","0x898"), +Def(Tid(662, "%00000296"), Attrs([Attr("address","0x898"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(693, "%000002b5"), Attrs([Attr("address","0x89C"), +Def(Tid(668, "%0000029c"), Attrs([Attr("address","0x89C"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(701, "%000002bd"), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(705, "%000002c1"), Attrs([Attr("address","0x8A0"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(708, "%000002c4"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(679, "%000002a7"), Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x8A0"), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x8A0"), +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(691, "%000002b3"), Attrs([Attr("address","0x8A0"), +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(695, "%000002b7"), Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(714, "%000002ca"), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(699, "%000002bb"), Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(728, "%000002d8"), Attrs([Attr("address","0x8A4"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(722, "%000002d2"), Attrs([Attr("address","0x8A4"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(720, "%000002d0"))), Goto(Tid(2_264, "%000008d8"), Attrs([]), - Int(1,1), Direct(Tid(1_391, "%0000056f")))])), Blk(Tid(1_391, "%0000056f"), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(705, "%000002c1"), Attrs([Attr("address","0x8A4"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(703, "%000002bf"))), Goto(Tid(2_066, "%00000812"), Attrs([]), + Int(1,1), Direct(Tid(1_291, "%0000050b")))])), Blk(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x8A8")]), Phis([]), -Defs([Def(Tid(1_395, "%00000573"), Attrs([Attr("address","0x8A8"), +Defs([Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x8A8"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_301, "%00000515"), Attrs([Attr("address","0x8AC"), Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64)), -Def(Tid(1_414, "%00000586"), Attrs([Attr("address","0x8B0"), -Attr("insn","cbz x1, #0xc")]), Var("#78",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_408, "%00000580"), - Attrs([Attr("address","0x8B0"), Attr("insn","cbz x1, #0xc")]), - Var("#78",Imm(1)), Direct(Tid(720, "%000002d0"))), -Goto(Tid(2_265, "%000008d9"), Attrs([]), Int(1,1), -Direct(Tid(1_417, "%00000589")))])), Blk(Tid(720, "%000002d0"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_306, "%0000051a"), Attrs([Attr("address","0x8B0"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(703, "%000002bf"))), Goto(Tid(2_067, "%00000813"), Attrs([]), + Int(1,1), Direct(Tid(1_310, "%0000051e")))])), Blk(Tid(703, "%000002bf"), Attrs([Attr("address","0x8BC")]), Phis([]), Defs([]), -Jmps([Call(Tid(733, "%000002dd"), Attrs([Attr("address","0x8BC"), +Jmps([Call(Tid(711, "%000002c7"), Attrs([Attr("address","0x8BC"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_417, "%00000589"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_423, "%0000058f"), Attrs([Attr("address","0x8B4"), +Blk(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_314, "%00000522"), Attrs([Attr("address","0x8B4"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_428, "%00000594"), Attrs([Attr("address","0x8B8"), +Jmps([Call(Tid(1_319, "%00000527"), Attrs([Attr("address","0x8B8"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_214, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x950")]), "frame_dummy", Args([Arg(Tid(2_281, "%000008e9"), +Sub(Tid(2_068, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x950")]), "frame_dummy", Args([Arg(Tid(2_092, "%0000082c"), 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(909, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(862, "@frame_dummy"), Attrs([Attr("address","0x950")]), Phis([]), Defs([]), -Jmps([Call(Tid(911, "%0000038f"), Attrs([Attr("address","0x950"), +Jmps([Call(Tid(864, "%00000360"), Attrs([Attr("address","0x950"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_221, "@register_tm_clones")),))]))])), Sub(Tid(2_215, "@free"), +(Direct(Tid(2_075, "@register_tm_clones")),))]))])), Sub(Tid(2_069, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x820"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_282, "%000008ea"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_093, "%0000082d"), 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_244, "@free"), Attrs([Attr("address","0x820")]), - Phis([]), Defs([Def(Tid(1_918, "%0000077e"), Attrs([Attr("address","0x820"), +Both())]), Blks([Blk(Tid(1_166, "@free"), Attrs([Attr("address","0x820")]), + Phis([]), Defs([Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x820"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x824"), +Def(Tid(1_784, "%000006f8"), Attrs([Attr("address","0x824"), 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_933, "%0000078d"), Attrs([Attr("address","0x828"), +Def(Tid(1_790, "%000006fe"), Attrs([Attr("address","0x828"), Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_938, "%00000792"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_795, "%00000703"), Attrs([Attr("address","0x82C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_216, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_070, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x954")]), "main", Args([Arg(Tid(2_283, "%000008eb"), +Attr("address","0x954")]), "main", Args([Arg(Tid(2_094, "%0000082e"), 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_284, "%000008ec"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_095, "%0000082f"), 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_285, "%000008ed"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_096, "%00000830"), 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(913, "@main"), - Attrs([Attr("address","0x954")]), Phis([]), Defs([Def(Tid(918, "%00000396"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(866, "@main"), + Attrs([Attr("address","0x954")]), Phis([]), Defs([Def(Tid(870, "%00000366"), Attrs([Attr("address","0x954"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), MINUS(Var("R31",Imm(64)),Int(64,64))), -Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x958"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#42",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(931, "%000003a3"), + Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), +Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x958"), +Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(882, "%00000372"), Attrs([Attr("address","0x958"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(936, "%000003a8"), Attrs([Attr("address","0x958"), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(888, "%00000378"), Attrs([Attr("address","0x958"), Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(943, "%000003af"), Attrs([Attr("address","0x95C"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(894, "%0000037e"), Attrs([Attr("address","0x95C"), Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(949, "%000003b5"), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(899, "%00000383"), Attrs([Attr("address","0x960"), Attr("insn","adrp x8, #0x1f000")]), - Var("R8",Imm(64)), Int(126976,64)), Def(Tid(957, "%000003bd"), + Var("R8",Imm(64)), Int(126976,64)), Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [x8, #0xfc8]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(4040,64)),LittleEndian(),64)), -Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x968"), +Def(Tid(914, "%00000392"), Attrs([Attr("address","0x968"), Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x96C"), +Def(Tid(921, "%00000399"), Attrs([Attr("address","0x96C"), Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x970"), +Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x970"), Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x974"), +Def(Tid(933, "%000003a5"), Attrs([Attr("address","0x974"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(992, "%000003e0"), Attrs([Attr("address","0x978"), +Def(Tid(938, "%000003aa"), Attrs([Attr("address","0x978"), Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(995, "%000003e3"), Attrs([Attr("address","0x978"), +Jmps([Call(Tid(941, "%000003ad"), Attrs([Attr("address","0x978"), Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_217, "@malloc")),Direct(Tid(997, "%000003e5"))))])), -Blk(Tid(997, "%000003e5"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x97C"), +(Direct(Tid(2_071, "@malloc")),Direct(Tid(943, "%000003af"))))])), +Blk(Tid(943, "%000003af"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x97C"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x980"), +Def(Tid(956, "%000003bc"), Attrs([Attr("address","0x980"), Attr("insn","str x0, [x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R8",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x984"), +Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x984"), Attr("insn","ldr x8, [x8]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_027, "%00000403"), Attrs([Attr("address","0x988"), +Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x988"), Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x98C"), +Def(Tid(976, "%000003d0"), Attrs([Attr("address","0x98C"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x990"), +Def(Tid(983, "%000003d7"), Attrs([Attr("address","0x990"), 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)), -Def(Tid(1_049, "%00000419"), Attrs([Attr("address","0x994"), +Def(Tid(991, "%000003df"), Attrs([Attr("address","0x994"), Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_054, "%0000041e"), Attrs([Attr("address","0x998"), +Def(Tid(996, "%000003e4"), Attrs([Attr("address","0x998"), Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2460,64))]), -Jmps([Call(Tid(1_057, "%00000421"), Attrs([Attr("address","0x998"), +Jmps([Call(Tid(999, "%000003e7"), Attrs([Attr("address","0x998"), Attr("insn","bl #-0x1f8")]), Int(1,1), -(Direct(Tid(2_224, "@strlen")),Direct(Tid(1_059, "%00000423"))))])), -Blk(Tid(1_059, "%00000423"), Attrs([Attr("address","0x99C")]), Phis([]), -Defs([Def(Tid(1_065, "%00000429"), Attrs([Attr("address","0x99C"), +(Direct(Tid(2_078, "@strlen")),Direct(Tid(1_001, "%000003e9"))))])), +Blk(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x99C")]), Phis([]), +Defs([Def(Tid(1_006, "%000003ee"), Attrs([Attr("address","0x99C"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x9A0"), +Def(Tid(1_012, "%000003f4"), Attrs([Attr("address","0x9A0"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x9A4"), +Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x9A4"), Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x9A8"), +Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x9A8"), Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2476,64))]), -Jmps([Call(Tid(1_089, "%00000441"), Attrs([Attr("address","0x9A8"), +Jmps([Call(Tid(1_027, "%00000403"), Attrs([Attr("address","0x9A8"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_218, "@memcpy")),Direct(Tid(1_091, "%00000443"))))])), -Blk(Tid(1_091, "%00000443"), Attrs([Attr("address","0x9AC")]), Phis([]), -Defs([Def(Tid(1_097, "%00000449"), Attrs([Attr("address","0x9AC"), +(Direct(Tid(2_072, "@memcpy")),Direct(Tid(1_029, "%00000405"))))])), +Blk(Tid(1_029, "%00000405"), Attrs([Attr("address","0x9AC")]), Phis([]), +Defs([Def(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x9AC"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_105, "%00000451"), Attrs([Attr("address","0x9B0"), +Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x9B0"), Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_110, "%00000456"), Attrs([Attr("address","0x9B4"), +Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x9B4"), Attr("insn","bl #-0x1a4")]), Var("R30",Imm(64)), Int(2488,64))]), -Jmps([Call(Tid(1_113, "%00000459"), Attrs([Attr("address","0x9B4"), +Jmps([Call(Tid(1_049, "%00000419"), Attrs([Attr("address","0x9B4"), Attr("insn","bl #-0x1a4")]), Int(1,1), -(Direct(Tid(2_220, "@puts")),Direct(Tid(1_115, "%0000045b"))))])), -Blk(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x9B8")]), Phis([]), -Defs([Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x9B8"), +(Direct(Tid(2_074, "@puts")),Direct(Tid(1_051, "%0000041b"))))])), +Blk(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x9B8")]), Phis([]), +Defs([Def(Tid(1_056, "%00000420"), Attrs([Attr("address","0x9B8"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x9BC"), +Def(Tid(1_063, "%00000427"), Attrs([Attr("address","0x9BC"), Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_136, "%00000470"), Attrs([Attr("address","0x9C0"), +Def(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x9C0"), Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_144, "%00000478"), +PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x9C4"), Attr("insn","stur x9, [x29, #-0x8]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_152, "%00000480"), Attrs([Attr("address","0x9C8"), +Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x9C8"), Attr("insn","ldur x9, [x29, #-0x8]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), -Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x9CC"), +Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x9CC"), Attr("insn","strb wzr, [x9]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),BigEndian(),8)), -Def(Tid(1_168, "%00000490"), Attrs([Attr("address","0x9D0"), +Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),LittleEndian(),8)), +Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x9D0"), Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_176, "%00000498"), Attrs([Attr("address","0x9D4"), +Def(Tid(1_106, "%00000452"), Attrs([Attr("address","0x9D4"), Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x9D8"), +Def(Tid(1_113, "%00000459"), Attrs([Attr("address","0x9D8"), Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x9DC"), +Def(Tid(1_118, "%0000045e"), Attrs([Attr("address","0x9DC"), Attr("insn","bl #-0x23c")]), Var("R30",Imm(64)), Int(2528,64))]), -Jmps([Call(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x9DC"), +Jmps([Call(Tid(1_120, "%00000460"), Attrs([Attr("address","0x9DC"), Attr("insn","bl #-0x23c")]), Int(1,1), -(Direct(Tid(2_224, "@strlen")),Direct(Tid(1_193, "%000004a9"))))])), -Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x9E0")]), Phis([]), -Defs([Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x9E0"), +(Direct(Tid(2_078, "@strlen")),Direct(Tid(1_122, "%00000462"))))])), +Blk(Tid(1_122, "%00000462"), Attrs([Attr("address","0x9E0")]), Phis([]), +Defs([Def(Tid(1_126, "%00000466"), Attrs([Attr("address","0x9E0"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_207, "%000004b7"), Attrs([Attr("address","0x9E4"), +Def(Tid(1_133, "%0000046d"), Attrs([Attr("address","0x9E4"), Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_214, "%000004be"), Attrs([Attr("address","0x9E8"), +Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x9E8"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x9EC"), +Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x9EC"), Attr("insn","bl #-0x20c")]), Var("R30",Imm(64)), Int(2544,64))]), -Jmps([Call(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x9EC"), +Jmps([Call(Tid(1_146, "%0000047a"), Attrs([Attr("address","0x9EC"), Attr("insn","bl #-0x20c")]), Int(1,1), -(Direct(Tid(2_219, "@memset")),Direct(Tid(1_224, "%000004c8"))))])), -Blk(Tid(1_224, "%000004c8"), Attrs([Attr("address","0x9F0")]), Phis([]), -Defs([Def(Tid(1_230, "%000004ce"), Attrs([Attr("address","0x9F0"), +(Direct(Tid(2_073, "@memset")),Direct(Tid(1_148, "%0000047c"))))])), +Blk(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x9F0")]), Phis([]), +Defs([Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x9F0"), Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_238, "%000004d6"), Attrs([Attr("address","0x9F4"), +Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x9F4"), Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x9F8"), +Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x9F8"), Attr("insn","bl #-0x1d8")]), Var("R30",Imm(64)), Int(2556,64))]), -Jmps([Call(Tid(1_246, "%000004de"), Attrs([Attr("address","0x9F8"), +Jmps([Call(Tid(1_168, "%00000490"), Attrs([Attr("address","0x9F8"), Attr("insn","bl #-0x1d8")]), Int(1,1), -(Direct(Tid(2_215, "@free")),Direct(Tid(1_248, "%000004e0"))))])), -Blk(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x9FC")]), Phis([]), -Defs([Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x9FC"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,32)), -Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0xA00"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(48,64)),LittleEndian(),64)), -Def(Tid(1_268, "%000004f4"), Attrs([Attr("address","0xA00"), +(Direct(Tid(2_069, "@free")),Direct(Tid(1_170, "%00000492"))))])), +Blk(Tid(1_170, "%00000492"), Attrs([Attr("address","0x9FC")]), Phis([]), +Defs([Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x9FC"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0xA00"), +Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_184, "%000004a0"), + Attrs([Attr("address","0xA00"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), + Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), +Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0xA00"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(56,64)),LittleEndian(),64)), -Def(Tid(1_275, "%000004fb"), Attrs([Attr("address","0xA04"), +Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0xA04"), Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_280, "%00000500"), +PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_200, "%000004b0"), Attrs([Attr("address","0xA08"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_217, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_071, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x7D0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_286, "%000008ee"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_097, "%00000831"), 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_287, "%000008ef"), +Var("R0",Imm(64)), In()), Arg(Tid(2_098, "%00000832"), 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(993, "@malloc"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_793, "%00000701"), Attrs([Attr("address","0x7D0"), +Blks([Blk(Tid(939, "@malloc"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_667, "%00000683"), Attrs([Attr("address","0x7D0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x7D4"), +Def(Tid(1_674, "%0000068a"), Attrs([Attr("address","0x7D4"), 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_808, "%00000710"), Attrs([Attr("address","0x7D8"), +Def(Tid(1_680, "%00000690"), Attrs([Attr("address","0x7D8"), Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_813, "%00000715"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_685, "%00000695"), Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_218, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_072, "@memcpy"), Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), Attr("address","0x790"), Attr("stub","()")]), "memcpy", - Args([Arg(Tid(2_288, "%000008f0"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_099, "%00000833"), 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_289, "%000008f1"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_100, "%00000834"), 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_290, "%000008f2"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_101, "%00000835"), 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_291, "%000008f3"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_102, "%00000836"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_087, "@memcpy"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_693, "%0000069d"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_025, "@memcpy"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_579, "%0000062b"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_701, "%000006a5"), Attrs([Attr("address","0x794"), +Def(Tid(1_586, "%00000632"), Attrs([Attr("address","0x794"), Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), -Def(Tid(1_708, "%000006ac"), Attrs([Attr("address","0x798"), +Def(Tid(1_592, "%00000638"), Attrs([Attr("address","0x798"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_713, "%000006b1"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_597, "%0000063d"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_219, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_073, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x7E0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_292, "%000008f4"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_103, "%00000837"), 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_293, "%000008f5"), +Both()), Arg(Tid(2_104, "%00000838"), 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_294, "%000008f6"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_105, "%00000839"), 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_295, "%000008f7"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_106, "%0000083a"), 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_220, "@memset"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_818, "%0000071a"), Attrs([Attr("address","0x7E0"), +Blks([Blk(Tid(1_144, "@memset"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_689, "%00000699"), Attrs([Attr("address","0x7E0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x7E4"), +Def(Tid(1_696, "%000006a0"), Attrs([Attr("address","0x7E4"), 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_833, "%00000729"), Attrs([Attr("address","0x7E8"), +Def(Tid(1_702, "%000006a6"), Attrs([Attr("address","0x7E8"), Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_838, "%0000072e"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_707, "%000006ab"), Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_220, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_074, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x810"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_296, "%000008f8"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_107, "%0000083b"), 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_297, "%000008f9"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_108, "%0000083c"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_111, "@puts"), Attrs([Attr("address","0x810")]), Phis([]), -Defs([Def(Tid(1_893, "%00000765"), Attrs([Attr("address","0x810"), +Blks([Blk(Tid(1_047, "@puts"), Attrs([Attr("address","0x810")]), Phis([]), +Defs([Def(Tid(1_755, "%000006db"), Attrs([Attr("address","0x810"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x814"), +Def(Tid(1_762, "%000006e2"), Attrs([Attr("address","0x814"), 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_908, "%00000774"), Attrs([Attr("address","0x818"), +Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x818"), Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_913, "%00000779"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_773, "%000006ed"), Attrs([Attr("address","0x81C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_221, "@register_tm_clones"), +Sub(Tid(2_075, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "register_tm_clones", Args([Arg(Tid(2_298, "%000008fa"), + "register_tm_clones", Args([Arg(Tid(2_109, "%0000083d"), 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(735, "@register_tm_clones"), Attrs([Attr("address","0x8C0")]), - Phis([]), Defs([Def(Tid(739, "%000002e3"), Attrs([Attr("address","0x8C0"), +Blks([Blk(Tid(713, "@register_tm_clones"), Attrs([Attr("address","0x8C0")]), + Phis([]), Defs([Def(Tid(716, "%000002cc"), Attrs([Attr("address","0x8C0"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x8C4"), +Def(Tid(722, "%000002d2"), Attrs([Attr("address","0x8C4"), Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(752, "%000002f0"), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(727, "%000002d7"), Attrs([Attr("address","0x8C8"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(759, "%000002f7"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(733, "%000002dd"), Attrs([Attr("address","0x8CC"), Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(767, "%000002ff"), Attrs([Attr("address","0x8D0"), +Def(Tid(740, "%000002e4"), Attrs([Attr("address","0x8D0"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(774, "%00000306"), - Attrs([Attr("address","0x8D4"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(782, "%0000030e"), Attrs([Attr("address","0x8D8"), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x8D4"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(753, "%000002f1"), Attrs([Attr("address","0x8D8"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), -Def(Tid(789, "%00000315"), Attrs([Attr("address","0x8DC"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x8DC"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(801, "%00000321"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(795, "%0000031b"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(793, "%00000319"))), Goto(Tid(2_266, "%000008da"), Attrs([]), - Int(1,1), Direct(Tid(1_352, "%00000548")))])), Blk(Tid(1_352, "%00000548"), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(765, "%000002fd"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(763, "%000002fb"))), Goto(Tid(2_076, "%0000081c"), Attrs([]), + Int(1,1), Direct(Tid(1_261, "%000004ed")))])), Blk(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_356, "%0000054c"), Attrs([Attr("address","0x8E4"), +Defs([Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x8E4"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8E8"), +Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8E8"), 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)), -Def(Tid(1_375, "%0000055f"), Attrs([Attr("address","0x8EC"), -Attr("insn","cbz x2, #0xc")]), Var("#73",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_369, "%00000559"), - Attrs([Attr("address","0x8EC"), Attr("insn","cbz x2, #0xc")]), - Var("#73",Imm(1)), Direct(Tid(793, "%00000319"))), -Goto(Tid(2_267, "%000008db"), Attrs([]), Int(1,1), -Direct(Tid(1_378, "%00000562")))])), Blk(Tid(793, "%00000319"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x8EC"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(763, "%000002fb"))), Goto(Tid(2_077, "%0000081d"), Attrs([]), + Int(1,1), Direct(Tid(1_280, "%00000500")))])), Blk(Tid(763, "%000002fb"), Attrs([Attr("address","0x8F8")]), Phis([]), Defs([]), -Jmps([Call(Tid(806, "%00000326"), Attrs([Attr("address","0x8F8"), +Jmps([Call(Tid(771, "%00000303"), Attrs([Attr("address","0x8F8"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_378, "%00000562"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8F0"), +Blk(Tid(1_280, "%00000500"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_284, "%00000504"), Attrs([Attr("address","0x8F0"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x8F4"), +Jmps([Call(Tid(1_289, "%00000509"), Attrs([Attr("address","0x8F4"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_224, "@strlen"), +Sub(Tid(2_078, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x7A0"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_299, "%000008fb"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_110, "%0000083e"), 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_300, "%000008fc"), +In()), Arg(Tid(2_111, "%0000083f"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_055, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(997, "@strlen"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x7A0"), +Defs([Def(Tid(1_601, "%00000641"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_726, "%000006be"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_608, "%00000648"), Attrs([Attr("address","0x7A4"), 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_733, "%000006c5"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_614, "%0000064e"), Attrs([Attr("address","0x7A8"), Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_738, "%000006ca"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_619, "%00000653"), Attrs([Attr("address","0x7AC"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir index eedb3fa69..4e8da3785 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir @@ -1,363 +1,356 @@ -000008dc: program -00000895: sub __cxa_finalize(__cxa_finalize_result) -000008dd: __cxa_finalize_result :: out u32 = low:32[R0] - -00000544: -000006e8: R16 := 0x20000 -000006f0: R17 := mem[R16 + 0x18, el]:u64 -000006f7: R16 := R16 + 0x18 -000006fc: call R17 with noreturn - -00000896: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008de: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -0000032a: -00000331: #34 := R31 - 0x20 -00000336: mem := mem with [#34, el]:u64 <- R29 -0000033b: mem := mem with [#34 + 8, el]:u64 <- R30 -0000033f: R31 := #34 -00000346: R29 := R31 -0000034e: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000354: R19 := 0x20000 -0000035d: R0 := pad:32[mem[R19 + 0x70]] -00000369: #36 := ~~0:0[R0] -00000363: when #36 goto %00000361 -000008d2: goto %00000502 - -00000502: -00000506: R0 := 0x1F000 -0000050e: R0 := mem[R0 + 0xFB8, el]:u64 -0000051a: #70 := R0 = 0 -00000514: when #70 goto %00000512 -000008d3: goto %00000532 - -00000532: -00000536: R0 := 0x20000 -0000053e: R0 := mem[R0 + 0x58, el]:u64 -00000543: R30 := 0x930 -00000546: call @__cxa_finalize with return %00000512 - -00000512: -0000051f: R30 := 0x934 -00000521: call @deregister_tm_clones with return %00000523 - -00000523: -00000528: R0 := 1 -00000530: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -000008d4: goto %00000361 - -00000361: -00000371: R19 := mem[R31 + 0x10, el]:u64 -0000037b: R29 := mem[R31, el]:u64 -0000037f: R30 := mem[R31 + 8, el]:u64 -00000382: R31 := R31 + 0x20 -00000387: call R30 with noreturn - -0000089a: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008df: __libc_start_main_main :: in u64 = R0 -000008e0: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008e1: __libc_start_main_arg3 :: in out u64 = R2 -000008e2: __libc_start_main_auxv :: in out u64 = R3 -000008e3: __libc_start_main_result :: out u32 = low:32[R0] - -0000026e: -000006cf: R16 := 0x20000 -000006d7: R17 := mem[R16 + 0x10, el]:u64 -000006de: R16 := R16 + 0x10 -000006e3: call R17 with noreturn - -0000089b: sub _fini(_fini_result) -000008e4: _fini_result :: out u32 = low:32[R0] +0000081f: program +00000803: sub __cxa_finalize(__cxa_finalize_result) +00000820: __cxa_finalize_result :: out u32 = low:32[R0] + +000004e9: +0000066d: R16 := 0x20000 +00000674: R17 := mem[R16 + 0x18, el]:u64 +0000067a: R16 := R16 + 0x18 +0000067f: call R17 with noreturn + +00000804: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000821: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000307: +0000030b: #3 := R31 - 0x20 +00000311: mem := mem with [#3, el]:u64 <- R29 +00000317: mem := mem with [#3 + 8, el]:u64 <- R30 +0000031b: R31 := #3 +00000321: R29 := R31 +00000329: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000032e: R19 := 0x20000 +00000335: R0 := pad:64[mem[R19 + 0x70]] +0000033b: when 0:0[R0] goto %00000339 +00000805: goto %000004b2 + +000004b2: +000004b5: R0 := 0x1F000 +000004bc: R0 := mem[R0 + 0xFB8, el]:u64 +000004c2: when R0 = 0 goto %000004c0 +00000806: goto %000004d9 + +000004d9: +000004dc: R0 := 0x20000 +000004e3: R0 := mem[R0 + 0x58, el]:u64 +000004e8: R30 := 0x930 +000004eb: call @__cxa_finalize with return %000004c0 + +000004c0: +000004c8: R30 := 0x934 +000004ca: call @deregister_tm_clones with return %000004cc + +000004cc: +000004cf: R0 := 1 +000004d7: mem := mem with [R19 + 0x70] <- 7:0[R0] +00000807: goto %00000339 + +00000339: +00000343: R19 := mem[R31 + 0x10, el]:u64 +0000034a: R29 := mem[R31, el]:u64 +0000034f: R30 := mem[R31 + 8, el]:u64 +00000353: R31 := R31 + 0x20 +00000358: call R30 with noreturn + +00000808: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000822: __libc_start_main_main :: in u64 = R0 +00000823: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000824: __libc_start_main_arg3 :: in out u64 = R2 +00000825: __libc_start_main_auxv :: in out u64 = R3 +00000826: __libc_start_main_result :: out u32 = low:32[R0] + +00000260: +00000657: R16 := 0x20000 +0000065e: R17 := mem[R16 + 0x10, el]:u64 +00000664: R16 := R16 + 0x10 +00000669: call R17 with noreturn + +00000809: sub _fini(_fini_result) +00000827: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -0000089c: sub _init(_init_result) -000008e5: _init_result :: out u32 = low:32[R0] - -000007ae: -000007b7: #101 := R31 - 0x10 -000007bc: mem := mem with [#101, el]:u64 <- R29 -000007c1: mem := mem with [#101 + 8, el]:u64 <- R30 -000007c5: R31 := #101 -000007cc: R29 := R31 -000007d1: R30 := 0x768 -000007d3: call @call_weak_fn with return %000007d5 - -000007d5: -000007dd: R29 := mem[R31, el]:u64 -000007e1: R30 := mem[R31 + 8, el]:u64 -000007e4: R31 := R31 + 0x10 -000007e9: call R30 with noreturn - -0000089d: sub _start(_start_result) -000008e6: _start_result :: out u32 = low:32[R0] - -00000224: -0000022a: R29 := 0 -00000230: R30 := 0 -00000238: R5 := R0 -00000240: R1 := mem[R31, el]:u64 -00000247: R2 := R31 + 8 -0000024e: R6 := R31 -00000254: R0 := 0x1F000 -0000025c: R0 := mem[R0 + 0xFD8, el]:u64 -00000262: R3 := 0 -00000268: R4 := 0 -0000026d: R30 := 0x870 -00000270: call @__libc_start_main with return %00000272 - -00000272: -00000275: R30 := 0x874 -00000278: call @abort with return %000008d5 - -000008d5: -000008d6: call @call_weak_fn with noreturn - -000008a0: sub abort() - - -00000276: -0000074c: R16 := 0x20000 -00000754: R17 := mem[R16 + 0x38, el]:u64 -0000075b: R16 := R16 + 0x38 -00000760: call R17 with noreturn - -000008a1: sub call_weak_fn(call_weak_fn_result) -000008e7: call_weak_fn_result :: out u32 = low:32[R0] +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 + +0000080a: sub _init(_init_result) +00000828: _init_result :: out u32 = low:32[R0] + +0000071f: +00000725: #7 := R31 - 0x10 +0000072b: mem := mem with [#7, el]:u64 <- R29 +00000731: mem := mem with [#7 + 8, el]:u64 <- R30 +00000735: R31 := #7 +0000073b: R29 := R31 +00000740: R30 := 0x768 +00000742: call @call_weak_fn with return %00000744 + +00000744: +00000749: R29 := mem[R31, el]:u64 +0000074e: R30 := mem[R31 + 8, el]:u64 +00000752: R31 := R31 + 0x10 +00000757: call R30 with noreturn + +0000080b: sub _start(_start_result) +00000829: _start_result :: out u32 = low:32[R0] + +00000221: +00000226: R29 := 0 +0000022b: R30 := 0 +00000231: R5 := R0 +00000238: R1 := mem[R31, el]:u64 +0000023e: R2 := R31 + 8 +00000244: R6 := R31 +00000249: R0 := 0x1F000 +00000250: R0 := mem[R0 + 0xFD8, el]:u64 +00000255: R3 := 0 +0000025a: R4 := 0 +0000025f: R30 := 0x870 +00000262: call @__libc_start_main with return %00000264 + +00000264: +00000267: R30 := 0x874 +0000026a: call @abort with return %0000080c + +0000080c: +0000080d: call @call_weak_fn with noreturn + +0000080e: sub abort() + + +00000268: +000006c5: R16 := 0x20000 +000006cc: R17 := mem[R16 + 0x38, el]:u64 +000006d2: R16 := R16 + 0x38 +000006d7: call R17 with noreturn + +0000080f: sub call_weak_fn(call_weak_fn_result) +0000082a: call_weak_fn_result :: out u32 = low:32[R0] + +0000026c: +0000026f: R0 := 0x1F000 +00000276: R0 := mem[R0 + 0xFC0, el]:u64 +0000027c: when R0 = 0 goto %0000027a +00000810: goto %00000529 0000027a: -0000027e: R0 := 0x1F000 -00000286: R0 := mem[R0 + 0xFC0, el]:u64 -00000292: #12 := R0 = 0 -0000028c: when #12 goto %0000028a -000008d7: goto %00000596 - -0000028a: -00000297: call R30 with noreturn - -00000596: -00000599: goto @__gmon_start__ - -00000597: -00000733: R16 := 0x20000 -0000073b: R17 := mem[R16 + 0x30, el]:u64 -00000742: R16 := R16 + 0x30 -00000747: call R17 with noreturn - -000008a3: sub deregister_tm_clones(deregister_tm_clones_result) -000008e8: deregister_tm_clones_result :: out u32 = low:32[R0] - -0000029d: -000002a1: R0 := 0x20000 -000002a8: R0 := R0 + 0x70 -000002ae: R1 := 0x20000 -000002b5: R1 := R1 + 0x70 -000002bd: #16 := 1 + ~R0 + R1 -000002c1: NF := 63:63[#16] -000002c4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002c7: ZF := #16 = 0 -000002ca: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002d8: #21 := ZF -000002d2: when #21 goto %000002d0 -000008d8: goto %0000056f - -0000056f: -00000573: R1 := 0x1F000 -0000057b: R1 := mem[R1 + 0xFB0, el]:u64 -00000586: #78 := R1 = 0 -00000580: when #78 goto %000002d0 -000008d9: goto %00000589 - -000002d0: -000002dd: call R30 with noreturn - -00000589: -0000058f: R16 := R1 -00000594: call R16 with noreturn - -000008a6: sub frame_dummy(frame_dummy_result) -000008e9: frame_dummy_result :: out u32 = low:32[R0] - -0000038d: -0000038f: call @register_tm_clones with noreturn - -000008a7: sub free(free_ptr) -000008ea: free_ptr :: in out u64 = R0 - -000004dc: -0000077e: R16 := 0x20000 -00000786: R17 := mem[R16 + 0x48, el]:u64 -0000078d: R16 := R16 + 0x48 -00000792: call R17 with noreturn - -000008a8: sub main(main_argc, main_argv, main_result) -000008eb: main_argc :: in u32 = low:32[R0] -000008ec: main_argv :: in out u64 = R1 -000008ed: main_result :: out u32 = low:32[R0] - -00000391: -00000396: R31 := R31 - 0x40 -0000039e: #42 := R31 + 0x30 -000003a3: mem := mem with [#42, el]:u64 <- R29 -000003a8: mem := mem with [#42 + 8, el]:u64 <- R30 -000003af: R29 := R31 + 0x30 -000003b5: R8 := 0x1F000 -000003bd: R8 := mem[R8 + 0xFC8, el]:u64 -000003c5: mem := mem with [R31 + 0x18, el]:u64 <- R8 -000003cd: mem := mem with [R29 - 8, el]:u64 <- 0 -000003d5: mem := mem with [R29 - 0x10, el]:u64 <- 0 -000003db: R0 := 0xB -000003e0: R30 := 0x97C -000003e3: call @malloc with return %000003e5 +00000282: call R30 with noreturn + +00000529: +0000052c: goto @__gmon_start__ + +0000052a: +000006af: R16 := 0x20000 +000006b6: R17 := mem[R16 + 0x30, el]:u64 +000006bc: R16 := R16 + 0x30 +000006c1: call R17 with noreturn + +00000811: sub deregister_tm_clones(deregister_tm_clones_result) +0000082b: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000288: +0000028b: R0 := 0x20000 +00000291: R0 := R0 + 0x70 +00000296: R1 := 0x20000 +0000029c: R1 := R1 + 0x70 +000002a2: #1 := ~R0 +000002a7: #2 := R1 + ~R0 +000002ad: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002b3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002b7: ZF := #2 + 1 = 0 +000002bb: NF := 63:63[#2 + 1] +000002c1: when ZF goto %000002bf +00000812: goto %0000050b + +0000050b: +0000050e: R1 := 0x1F000 +00000515: R1 := mem[R1 + 0xFB0, el]:u64 +0000051a: when R1 = 0 goto %000002bf +00000813: goto %0000051e + +000002bf: +000002c7: call R30 with noreturn + +0000051e: +00000522: R16 := R1 +00000527: call R16 with noreturn + +00000814: sub frame_dummy(frame_dummy_result) +0000082c: frame_dummy_result :: out u32 = low:32[R0] + +0000035e: +00000360: call @register_tm_clones with noreturn + +00000815: sub free(free_ptr) +0000082d: free_ptr :: in out u64 = R0 + +0000048e: +000006f1: R16 := 0x20000 +000006f8: R17 := mem[R16 + 0x48, el]:u64 +000006fe: R16 := R16 + 0x48 +00000703: call R17 with noreturn + +00000816: sub main(main_argc, main_argv, main_result) +0000082e: main_argc :: in u32 = low:32[R0] +0000082f: main_argv :: in out u64 = R1 +00000830: main_result :: out u32 = low:32[R0] + +00000362: +00000366: R31 := R31 - 0x40 +0000036c: #4 := R31 + 0x30 +00000372: mem := mem with [#4, el]:u64 <- R29 +00000378: mem := mem with [#4 + 8, el]:u64 <- R30 +0000037e: R29 := R31 + 0x30 +00000383: R8 := 0x1F000 +0000038a: R8 := mem[R8 + 0xFC8, el]:u64 +00000392: mem := mem with [R31 + 0x18, el]:u64 <- R8 +00000399: mem := mem with [R29 - 8, el]:u64 <- 0 +000003a0: mem := mem with [R29 - 0x10, el]:u64 <- 0 +000003a5: R0 := 0xB +000003aa: R30 := 0x97C +000003ad: call @malloc with return %000003af + +000003af: +000003b4: R8 := mem[R31 + 0x18, el]:u64 +000003bc: mem := mem with [R8, el]:u64 <- R0 +000003c3: R8 := mem[R8, el]:u64 +000003cb: mem := mem with [R31 + 8, el]:u64 <- R8 +000003d0: R0 := 0x1F000 +000003d7: R0 := mem[R0 + 0xFD0, el]:u64 +000003df: mem := mem with [R31, el]:u64 <- R0 +000003e4: R30 := 0x99C +000003e7: call @strlen with return %000003e9 + +000003e9: +000003ee: R1 := mem[R31, el]:u64 +000003f4: R2 := R0 +000003fb: R0 := mem[R31 + 8, el]:u64 +00000400: R30 := 0x9AC +00000403: call @memcpy with return %00000405 + +00000405: +0000040a: R8 := mem[R31 + 0x18, el]:u64 +00000411: R0 := mem[R8, el]:u64 +00000416: R30 := 0x9B8 +00000419: call @puts with return %0000041b + +0000041b: +00000420: R8 := mem[R31 + 0x18, el]:u64 +00000427: R9 := mem[R8, el]:u64 +0000042d: R9 := R9 + 4 +00000435: mem := mem with [R29 - 8, el]:u64 <- R9 +0000043c: R9 := mem[R29 - 8, el]:u64 +00000443: mem := mem with [R9] <- 0 +0000044a: R9 := mem[R8, el]:u64 +00000452: mem := mem with [R31 + 0x10, el]:u64 <- R9 +00000459: R0 := mem[R8, el]:u64 +0000045e: R30 := 0x9E0 +00000460: call @strlen with return %00000462 + +00000462: +00000466: R2 := R0 +0000046d: R0 := mem[R31 + 0x10, el]:u64 +00000472: R1 := 1 +00000477: R30 := 0x9F0 +0000047a: call @memset with return %0000047c + +0000047c: +00000481: R8 := mem[R31 + 0x18, el]:u64 +00000488: R0 := mem[R8, el]:u64 +0000048d: R30 := 0x9FC +00000490: call @free with return %00000492 + +00000492: +00000495: R0 := 0 +0000049b: #5 := R31 + 0x30 +000004a0: R29 := mem[#5, el]:u64 +000004a5: R30 := mem[#5 + 8, el]:u64 +000004ab: R31 := R31 + 0x40 +000004b0: call R30 with noreturn + +00000817: sub malloc(malloc_size, malloc_result) +00000831: malloc_size :: in u64 = R0 +00000832: malloc_result :: out u64 = R0 + +000003ab: +00000683: R16 := 0x20000 +0000068a: R17 := mem[R16 + 0x20, el]:u64 +00000690: R16 := R16 + 0x20 +00000695: call R17 with noreturn + +00000818: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000833: memcpy_dst :: in out u64 = R0 +00000834: memcpy_src :: in out u64 = R1 +00000835: memcpy_n :: in u64 = R2 +00000836: memcpy_result :: out u64 = R0 + +00000401: +0000062b: R16 := 0x20000 +00000632: R17 := mem[R16, el]:u64 +00000638: R16 := R16 +0000063d: call R17 with noreturn + +00000819: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000837: memset_buf :: in out u64 = R0 +00000838: memset_c :: in u32 = low:32[R1] +00000839: memset_n :: in u64 = R2 +0000083a: memset_result :: out u64 = R0 + +00000478: +00000699: R16 := 0x20000 +000006a0: R17 := mem[R16 + 0x28, el]:u64 +000006a6: R16 := R16 + 0x28 +000006ab: call R17 with noreturn + +0000081a: sub puts(puts_s, puts_result) +0000083b: puts_s :: in u64 = R0 +0000083c: puts_result :: out u32 = low:32[R0] + +00000417: +000006db: R16 := 0x20000 +000006e2: R17 := mem[R16 + 0x40, el]:u64 +000006e8: R16 := R16 + 0x40 +000006ed: call R17 with noreturn + +0000081b: sub register_tm_clones(register_tm_clones_result) +0000083d: register_tm_clones_result :: out u32 = low:32[R0] + +000002c9: +000002cc: R0 := 0x20000 +000002d2: R0 := R0 + 0x70 +000002d7: R1 := 0x20000 +000002dd: R1 := R1 + 0x70 +000002e4: R1 := R1 + ~R0 + 1 +000002ea: R2 := 0.63:63[R1] +000002f1: R1 := R2 + (R1 ~>> 3) +000002f7: R1 := extend:64[63:1[R1]] +000002fd: when R1 = 0 goto %000002fb +0000081c: goto %000004ed + +000004ed: +000004f0: R2 := 0x1F000 +000004f7: R2 := mem[R2 + 0xFE0, el]:u64 +000004fc: when R2 = 0 goto %000002fb +0000081d: goto %00000500 + +000002fb: +00000303: call R30 with noreturn + +00000500: +00000504: R16 := R2 +00000509: call R16 with noreturn + +0000081e: sub strlen(strlen_s, strlen_result) +0000083e: strlen_s :: in u64 = R0 +0000083f: strlen_result :: out u64 = R0 000003e5: -000003eb: R8 := mem[R31 + 0x18, el]:u64 -000003f3: mem := mem with [R8, el]:u64 <- R0 -000003fb: R8 := mem[R8, el]:u64 -00000403: mem := mem with [R31 + 8, el]:u64 <- R8 -00000409: R0 := 0x1F000 -00000411: R0 := mem[R0 + 0xFD0, el]:u64 -00000419: mem := mem with [R31, el]:u64 <- R0 -0000041e: R30 := 0x99C -00000421: call @strlen with return %00000423 - -00000423: -00000429: R1 := mem[R31, el]:u64 -00000431: R2 := R0 -00000439: R0 := mem[R31 + 8, el]:u64 -0000043e: R30 := 0x9AC -00000441: call @memcpy with return %00000443 - -00000443: -00000449: R8 := mem[R31 + 0x18, el]:u64 -00000451: R0 := mem[R8, el]:u64 -00000456: R30 := 0x9B8 -00000459: call @puts with return %0000045b - -0000045b: -00000461: R8 := mem[R31 + 0x18, el]:u64 -00000469: R9 := mem[R8, el]:u64 -00000470: R9 := R9 + 4 -00000478: mem := mem with [R29 - 8, el]:u64 <- R9 -00000480: R9 := mem[R29 - 8, el]:u64 -00000488: mem := mem with [R9] <- 0 -00000490: R9 := mem[R8, el]:u64 -00000498: mem := mem with [R31 + 0x10, el]:u64 <- R9 -000004a0: R0 := mem[R8, el]:u64 -000004a5: R30 := 0x9E0 -000004a7: call @strlen with return %000004a9 - -000004a9: -000004af: R2 := R0 -000004b7: R0 := mem[R31 + 0x10, el]:u64 -000004be: R1 := 1 -000004c3: R30 := 0x9F0 -000004c6: call @memset with return %000004c8 - -000004c8: -000004ce: R8 := mem[R31 + 0x18, el]:u64 -000004d6: R0 := mem[R8, el]:u64 -000004db: R30 := 0x9FC -000004de: call @free with return %000004e0 - -000004e0: -000004e7: R0 := 0 -000004f0: R29 := mem[R31 + 0x30, el]:u64 -000004f4: R30 := mem[R31 + 0x38, el]:u64 -000004fb: R31 := R31 + 0x40 -00000500: call R30 with noreturn - -000008a9: sub malloc(malloc_size, malloc_result) -000008ee: malloc_size :: in u64 = R0 -000008ef: malloc_result :: out u64 = R0 - -000003e1: -00000701: R16 := 0x20000 -00000709: R17 := mem[R16 + 0x20, el]:u64 -00000710: R16 := R16 + 0x20 -00000715: call R17 with noreturn - -000008aa: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008f0: memcpy_dst :: in out u64 = R0 -000008f1: memcpy_src :: in out u64 = R1 -000008f2: memcpy_n :: in u64 = R2 -000008f3: memcpy_result :: out u64 = R0 - -0000043f: -0000069d: R16 := 0x20000 -000006a5: R17 := mem[R16, el]:u64 -000006ac: R16 := R16 -000006b1: call R17 with noreturn - -000008ab: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008f4: memset_buf :: in out u64 = R0 -000008f5: memset_c :: in u32 = low:32[R1] -000008f6: memset_n :: in u64 = R2 -000008f7: memset_result :: out u64 = R0 - -000004c4: -0000071a: R16 := 0x20000 -00000722: R17 := mem[R16 + 0x28, el]:u64 -00000729: R16 := R16 + 0x28 -0000072e: call R17 with noreturn - -000008ac: sub puts(puts_s, puts_result) -000008f8: puts_s :: in u64 = R0 -000008f9: puts_result :: out u32 = low:32[R0] - -00000457: -00000765: R16 := 0x20000 -0000076d: R17 := mem[R16 + 0x40, el]:u64 -00000774: R16 := R16 + 0x40 -00000779: call R17 with noreturn - -000008ad: sub register_tm_clones(register_tm_clones_result) -000008fa: register_tm_clones_result :: out u32 = low:32[R0] - -000002df: -000002e3: R0 := 0x20000 -000002ea: R0 := R0 + 0x70 -000002f0: R1 := 0x20000 -000002f7: R1 := R1 + 0x70 -000002ff: R1 := R1 - R0 -00000306: R2 := R1 >> 0x3F -0000030e: R1 := R2 + (R1 ~>> 3) -00000315: R1 := R1 >> 1 -00000321: #30 := R1 = 0 -0000031b: when #30 goto %00000319 -000008da: goto %00000548 - -00000548: -0000054c: R2 := 0x1F000 -00000554: R2 := mem[R2 + 0xFE0, el]:u64 -0000055f: #73 := R2 = 0 -00000559: when #73 goto %00000319 -000008db: goto %00000562 - -00000319: -00000326: call R30 with noreturn - -00000562: -00000568: R16 := R2 -0000056d: call R16 with noreturn - -000008b0: sub strlen(strlen_s, strlen_result) -000008fb: strlen_s :: in u64 = R0 -000008fc: strlen_result :: out u64 = R0 - -0000041f: -000006b6: R16 := 0x20000 -000006be: R17 := mem[R16 + 8, el]:u64 -000006c5: R16 := R16 + 8 -000006ca: call R17 with noreturn +00000641: R16 := 0x20000 +00000648: R17 := mem[R16 + 8, el]:u64 +0000064e: R16 := R16 + 8 +00000653: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt index 25875fa16..b132dd748 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt @@ -67,731 +67,714 @@ Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), Annotation(Region(0x7C0,0x9A3), Attr("section","\".text\"")), Annotation(Region(0x7C0,0x9A3), Attr("code-region","()")), Annotation(Region(0x9A4,0x9B7), Attr("code-region","()"))]), -Program(Tid(2_332, "%0000091c"), Attrs([]), - Subs([Sub(Tid(2_261, "@__cxa_finalize"), +Program(Tid(2_128, "%00000850"), Attrs([]), + Subs([Sub(Tid(2_100, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_333, "%0000091d"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_129, "%00000851"), 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_406, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_300, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x740"), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x740"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_834, "%0000072a"), Attrs([Attr("address","0x744"), +Def(Tid(1_695, "%0000069f"), 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_841, "%00000731"), Attrs([Attr("address","0x748"), +Def(Tid(1_701, "%000006a5"), 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_846, "%00000736"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_706, "%000006aa"), Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_262, "@__do_global_dtors_aux"), +Sub(Tid(2_101, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_334, "%0000091e"), + "__do_global_dtors_aux", Args([Arg(Tid(2_130, "%00000852"), 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(834, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(841, "%00000349"), +Blks([Blk(Tid(799, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(803, "%00000323"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(846, "%0000034e"), Attrs([Attr("address","0x880"), +Def(Tid(809, "%00000329"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(851, "%00000353"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(855, "%00000357"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(819, "%00000333"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(862, "%0000035e"), +Var("#3",Imm(64))), Def(Tid(825, "%00000339"), Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(870, "%00000366"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(833, "%00000341"), Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x88C"), +Def(Tid(838, "%00000346"), Attrs([Attr("address","0x88C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(885, "%00000375"), Attrs([Attr("address","0x890"), +Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x890"), Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), -Def(Tid(897, "%00000381"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(891, "%0000037b"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(889, "%00000379"))), Goto(Tid(2_322, "%00000912"), Attrs([]), - Int(1,1), Direct(Tid(1_340, "%0000053c")))])), Blk(Tid(1_340, "%0000053c"), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(849, "%00000351"))), +Goto(Tid(2_102, "%00000836"), Attrs([]), Int(1,1), +Direct(Tid(1_245, "%000004dd")))])), Blk(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x898"), +Defs([Def(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x898"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_352, "%00000548"), Attrs([Attr("address","0x89C"), +Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x89C"), Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), -Def(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), Var("#69",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_358, "%0000054e"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), - Var("#69",Imm(1)), Direct(Tid(1_356, "%0000054c"))), -Goto(Tid(2_323, "%00000913"), Attrs([]), Int(1,1), -Direct(Tid(1_388, "%0000056c")))])), Blk(Tid(1_388, "%0000056c"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_259, "%000004eb"))), Goto(Tid(2_103, "%00000837"), Attrs([]), + Int(1,1), Direct(Tid(1_284, "%00000504")))])), Blk(Tid(1_284, "%00000504"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_392, "%00000570"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_287, "%00000507"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_400, "%00000578"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x8A8"), Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_405, "%0000057d"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_299, "%00000513"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_408, "%00000580"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(1_302, "%00000516"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_261, "@__cxa_finalize")),Direct(Tid(1_356, "%0000054c"))))])), -Blk(Tid(1_356, "%0000054c"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_369, "%00000559"), Attrs([Attr("address","0x8B0"), +(Direct(Tid(2_100, "@__cxa_finalize")),Direct(Tid(1_259, "%000004eb"))))])), +Blk(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_267, "%000004f3"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_275, "@deregister_tm_clones")),Direct(Tid(1_373, "%0000055d"))))])), -Blk(Tid(1_373, "%0000055d"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_378, "%00000562"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_114, "@deregister_tm_clones")),Direct(Tid(1_271, "%000004f7"))))])), +Blk(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x8B4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_386, "%0000056a"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_282, "%00000502"), Attrs([Attr("address","0x8B8"), Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_324, "%00000914"), Attrs([]), Int(1,1), -Direct(Tid(889, "%00000379")))])), Blk(Tid(889, "%00000379"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(905, "%00000389"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_104, "%00000838"), Attrs([]), Int(1,1), +Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(859, "%0000035b"), Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(915, "%00000393"), Attrs([Attr("address","0x8C0"), +Def(Tid(866, "%00000362"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(919, "%00000397"), Attrs([Attr("address","0x8C0"), +Def(Tid(871, "%00000367"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(922, "%0000039a"), Attrs([Attr("address","0x8C0"), +Def(Tid(875, "%0000036b"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(927, "%0000039f"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(880, "%00000370"), Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_266, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_105, "@__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_335, "%0000091f"), + Args([Arg(Tid(2_131, "%00000853"), 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_336, "%00000920"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_132, "%00000854"), 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_337, "%00000921"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_133, "%00000855"), 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_338, "%00000922"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_134, "%00000856"), 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_339, "%00000923"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_135, "%00000857"), 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(646, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(632, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x730"), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x730"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_809, "%00000711"), Attrs([Attr("address","0x734"), +Def(Tid(1_673, "%00000689"), 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_816, "%00000718"), Attrs([Attr("address","0x738"), +Def(Tid(1_679, "%0000068f"), 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_821, "%0000071d"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_684, "%00000694"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_267, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_106, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A4")]), - "_fini", Args([Arg(Tid(2_340, "%00000924"), + "_fini", Args([Arg(Tid(2_136, "%00000858"), 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","0x9A4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9A4")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x9A8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9A8"), +Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x9A8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9A8"), +Store(Var("mem",Mem(64,8)),Var("#0",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(50, "%00000032"), Attrs([Attr("address","0x9A8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9A8"), +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","0x9A8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9AC"), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9AC"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9B0"), +Def(Tid(67, "%00000043"), 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(76, "%0000004c"), Attrs([Attr("address","0x9B0"), +Def(Tid(72, "%00000048"), 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(79, "%0000004f"), Attrs([Attr("address","0x9B0"), +Def(Tid(76, "%0000004c"), 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(84, "%00000054"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), Attrs([Attr("address","0x9B4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_268, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_107, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_341, "%00000925"), + "_init", Args([Arg(Tid(2_137, "%00000859"), 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(2_024, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_866, "@_init"), Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(2_033, "%000007f1"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#100",Imm(64)), +Defs([Def(Tid(1_872, "%00000750"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(2_038, "%000007f6"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_878, "%00000756"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#100",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(2_043, "%000007fb"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#100",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#100",Imm(64))), Def(Tid(2_054, "%00000806"), +Var("#6",Imm(64))), Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_059, "%0000080b"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_899, "%0000076b"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(2_061, "%0000080d"), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_273, "@call_weak_fn")),Direct(Tid(2_063, "%0000080f"))))])), -Blk(Tid(2_063, "%0000080f"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(2_071, "%00000817"), Attrs([Attr("address","0x6E8"), +(Direct(Tid(2_112, "@call_weak_fn")),Direct(Tid(1_903, "%0000076f"))))])), +Blk(Tid(1_903, "%0000076f"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_908, "%00000774"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(2_075, "%0000081b"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_913, "%00000779"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(2_078, "%0000081e"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_917, "%0000077d"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_083, "%00000823"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_922, "%00000782"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_269, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_108, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_342, "%00000926"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_138, "%0000085a"), 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(572, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(578, "%00000242"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(569, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(574, "%0000023e"), Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(579, "%00000243"), Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(592, "%00000250"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(585, "%00000249"), Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(600, "%00000258"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x7D4"), +Def(Tid(598, "%00000256"), Attrs([Attr("address","0x7D4"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(614, "%00000266"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(604, "%0000025c"), Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(620, "%0000026c"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(609, "%00000261"), Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(628, "%00000274"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(616, "%00000268"), Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x7E4"), +Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x7E4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(640, "%00000280"), Attrs([Attr("address","0x7E8"), +Def(Tid(626, "%00000272"), Attrs([Attr("address","0x7E8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(645, "%00000285"), Attrs([Attr("address","0x7EC"), +Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x7EC"), +Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_266, "@__libc_start_main")),Direct(Tid(650, "%0000028a"))))])), -Blk(Tid(650, "%0000028a"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x7F0"), +(Direct(Tid(2_105, "@__libc_start_main")),Direct(Tid(636, "%0000027c"))))])), +Blk(Tid(636, "%0000027c"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(656, "%00000290"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(642, "%00000282"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_272, "@abort")),Direct(Tid(2_325, "%00000915"))))])), -Blk(Tid(2_325, "%00000915"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_326, "%00000916"), Attrs([]), Int(1,1), -(Direct(Tid(2_273, "@call_weak_fn")),))]))])), Sub(Tid(2_272, "@abort"), +(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("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(654, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x780"), +Blks([Blk(Tid(640, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_934, "%0000078e"), Attrs([Attr("address","0x784"), +Def(Tid(1_783, "%000006f7"), 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_941, "%00000795"), Attrs([Attr("address","0x788"), +Def(Tid(1_789, "%000006fd"), 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_946, "%0000079a"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_794, "%00000702"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_273, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_112, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_343, "%00000927"), + "call_weak_fn", Args([Arg(Tid(2_139, "%0000085b"), 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(658, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(662, "%00000296"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(644, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(647, "%00000287"), Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(670, "%0000029e"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(654, "%0000028e"), Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), -Def(Tid(682, "%000002aa"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(676, "%000002a4"), - Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(674, "%000002a2"))), -Goto(Tid(2_327, "%00000917"), Attrs([]), Int(1,1), -Direct(Tid(1_488, "%000005d0")))])), Blk(Tid(674, "%000002a2"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(660, "%00000294"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(658, "%00000292"))), Goto(Tid(2_113, "%00000841"), Attrs([]), + Int(1,1), Direct(Tid(1_364, "%00000554")))])), Blk(Tid(658, "%00000292"), Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(687, "%000002af"), Attrs([Attr("address","0x804"), +Jmps([Call(Tid(666, "%0000029a"), Attrs([Attr("address","0x804"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_488, "%000005d0"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_491, "%000005d3"), Attrs([Attr("address","0x800"), +Blk(Tid(1_364, "%00000554"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_367, "%00000557"), Attrs([Attr("address","0x800"), Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_489, "@__gmon_start__")))])), Blk(Tid(1_489, "@__gmon_start__"), +Direct(Tid(1_365, "@__gmon_start__")))])), Blk(Tid(1_365, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_909, "%00000775"), Attrs([Attr("address","0x774"), +Def(Tid(1_761, "%000006e1"), 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_916, "%0000077c"), Attrs([Attr("address","0x778"), +Def(Tid(1_767, "%000006e7"), 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_921, "%00000781"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_772, "%000006ec"), Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_275, "@deregister_tm_clones"), +Sub(Tid(2_114, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_344, "%00000928"), + "deregister_tm_clones", Args([Arg(Tid(2_140, "%0000085c"), 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(693, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(697, "%000002b9"), +Blks([Blk(Tid(672, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(675, "%000002a3"), Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(704, "%000002c0"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(710, "%000002c6"), Attrs([Attr("address","0x818"), +Def(Tid(686, "%000002ae"), Attrs([Attr("address","0x818"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(717, "%000002cd"), Attrs([Attr("address","0x81C"), +Def(Tid(692, "%000002b4"), Attrs([Attr("address","0x81C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(725, "%000002d5"), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(698, "%000002ba"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(729, "%000002d9"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(732, "%000002dc"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(735, "%000002df"), Attrs([Attr("address","0x820"), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(719, "%000002cf"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(738, "%000002e2"), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(752, "%000002f0"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(746, "%000002ea"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(744, "%000002e8"))), Goto(Tid(2_328, "%00000918"), Attrs([]), - Int(1,1), Direct(Tid(1_449, "%000005a9")))])), Blk(Tid(1_449, "%000005a9"), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(729, "%000002d9"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(727, "%000002d7"))), Goto(Tid(2_115, "%00000843"), Attrs([]), + Int(1,1), Direct(Tid(1_334, "%00000536")))])), Blk(Tid(1_334, "%00000536"), Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_453, "%000005ad"), Attrs([Attr("address","0x828"), +Defs([Def(Tid(1_337, "%00000539"), Attrs([Attr("address","0x828"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_461, "%000005b5"), Attrs([Attr("address","0x82C"), +Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x82C"), Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), -Def(Tid(1_472, "%000005c0"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), Var("#77",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_466, "%000005ba"), - Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), - Var("#77",Imm(1)), Direct(Tid(744, "%000002e8"))), -Goto(Tid(2_329, "%00000919"), Attrs([]), Int(1,1), -Direct(Tid(1_475, "%000005c3")))])), Blk(Tid(744, "%000002e8"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_349, "%00000545"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(727, "%000002d7"))), Goto(Tid(2_116, "%00000844"), Attrs([]), + Int(1,1), Direct(Tid(1_353, "%00000549")))])), Blk(Tid(727, "%000002d7"), Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(757, "%000002f5"), Attrs([Attr("address","0x83C"), +Jmps([Call(Tid(735, "%000002df"), Attrs([Attr("address","0x83C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_475, "%000005c3"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_481, "%000005c9"), Attrs([Attr("address","0x834"), +Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_357, "%0000054d"), Attrs([Attr("address","0x834"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_486, "%000005ce"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_362, "%00000552"), Attrs([Attr("address","0x838"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_278, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_345, "%00000929"), +Sub(Tid(2_117, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_141, "%0000085d"), 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(933, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(886, "@frame_dummy"), Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(935, "%000003a7"), Attrs([Attr("address","0x8D0"), +Jmps([Call(Tid(888, "%00000378"), Attrs([Attr("address","0x8D0"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_285, "@register_tm_clones")),))]))])), Sub(Tid(2_279, "@free"), +(Direct(Tid(2_124, "@register_tm_clones")),))]))])), Sub(Tid(2_118, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_346, "%0000092a"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_142, "%0000085e"), 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_299, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_976, "%000007b8"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_208, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_820, "%0000071c"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_984, "%000007c0"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_827, "%00000723"), 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_991, "%000007c7"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_833, "%00000729"), 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_996, "%000007cc"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_838, "%0000072e"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_280, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_119, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_347, "%0000092b"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_143, "%0000085f"), 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_348, "%0000092c"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_144, "%00000860"), 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_349, "%0000092d"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_145, "%00000861"), 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(937, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(944, "%000003b0"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(890, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(894, "%0000037e"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8D4"), +Def(Tid(900, "%00000384"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(958, "%000003be"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#42",Imm(64))), Def(Tid(965, "%000003c5"), +Var("#4",Imm(64))), Def(Tid(916, "%00000394"), Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(973, "%000003cd"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(924, "%0000039c"), Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x8E0"), +Def(Tid(931, "%000003a3"), Attrs([Attr("address","0x8E0"), Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x8E4"), +Def(Tid(938, "%000003aa"), Attrs([Attr("address","0x8E4"), Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x8E8"), +Def(Tid(943, "%000003af"), Attrs([Attr("address","0x8E8"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x8EC"), +Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(951, "%000003b7"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_281, "@malloc")),Direct(Tid(1_005, "%000003ed"))))])), -Blk(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x8F0"), +(Direct(Tid(2_120, "@malloc")),Direct(Tid(953, "%000003b9"))))])), +Blk(Tid(953, "%000003b9"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8F0"), Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x8F4"), +Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x8F4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x8F8"), +Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x8F8"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_032, "%00000408"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(976, "%000003d0"), Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x900"), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x900"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x904"), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x904"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_053, "%0000041d"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(994, "%000003e2"), Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x90C"), +Def(Tid(999, "%000003e7"), Attrs([Attr("address","0x90C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x910"), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x910"), Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_071, "%0000042f"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), - Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_074, "%00000432"), + Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_288, "@strlen")),Direct(Tid(1_076, "%00000434"))))])), -Blk(Tid(1_076, "%00000434"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_082, "%0000043a"), Attrs([Attr("address","0x918"), +(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_015, "%000003f7"))))])), +Blk(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x918"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x91C"), +Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x91C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_095, "%00000447"), Attrs([Attr("address","0x920"), +Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x920"), Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_103, "%0000044f"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_036, "%0000040c"), Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_108, "%00000454"), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_111, "%00000457"), + Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_044, "%00000414"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_282, "@memcpy")),Direct(Tid(1_113, "%00000459"))))])), -Blk(Tid(1_113, "%00000459"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x92C"), +(Direct(Tid(2_121, "@memcpy")),Direct(Tid(1_046, "%00000416"))))])), +Blk(Tid(1_046, "%00000416"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_049, "%00000419"), Attrs([Attr("address","0x92C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_124, "%00000464"), Attrs([Attr("address","0x930"), +Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x930"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_132, "%0000046c"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_062, "%00000426"), Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_137, "%00000471"), Attrs([Attr("address","0x938"), +Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_140, "%00000474"), Attrs([Attr("address","0x938"), +Jmps([Call(Tid(1_070, "%0000042e"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_284, "@puts")),Direct(Tid(1_142, "%00000476"))))])), -Blk(Tid(1_142, "%00000476"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_146, "%0000047a"), Attrs([Attr("address","0x93C"), +(Direct(Tid(2_123, "@puts")),Direct(Tid(1_072, "%00000430"))))])), +Blk(Tid(1_072, "%00000430"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x93C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x940"), +Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x940"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_161, "%00000489"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_168, "%00000490"), Attrs([Attr("address","0x948"), +Def(Tid(1_094, "%00000446"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_176, "%00000498"), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_102, "%0000044e"), Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x950"), +Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x950"), Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), -Def(Tid(1_192, "%000004a8"), Attrs([Attr("address","0x954"), +Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x954"), Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),BigEndian(),8)), -Def(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x958"), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),LittleEndian(),8)), +Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x958"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x95C"), +Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x95C"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_213, "%000004bd"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x960"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x964"), +Def(Tid(1_139, "%00000473"), Attrs([Attr("address","0x964"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x968"), +Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x968"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_234, "%000004d2"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_152, "%00000480"), Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x970"), +Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x970"), Attr("insn","bl #-0x250")]), Var("R30",Imm(64)), Int(2420,64))]), -Jmps([Call(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x970"), +Jmps([Call(Tid(1_159, "%00000487"), Attrs([Attr("address","0x970"), Attr("insn","bl #-0x250")]), Int(1,1), -(Direct(Tid(2_288, "@strlen")),Direct(Tid(1_243, "%000004db"))))])), -Blk(Tid(1_243, "%000004db"), Attrs([Attr("address","0x974")]), Phis([]), -Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x974"), +(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_161, "%00000489"))))])), +Blk(Tid(1_161, "%00000489"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x974"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x978"), +Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x978"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x97C"), +Def(Tid(1_176, "%00000498"), Attrs([Attr("address","0x97C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x980"), +Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x980"), Attr("insn","bl #-0x220")]), Var("R30",Imm(64)), Int(2436,64))]), -Jmps([Call(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x980"), +Jmps([Call(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x980"), Attr("insn","bl #-0x220")]), Int(1,1), -(Direct(Tid(2_283, "@memset")),Direct(Tid(1_274, "%000004fa"))))])), -Blk(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x984")]), Phis([]), -Defs([Def(Tid(1_278, "%000004fe"), Attrs([Attr("address","0x984"), +(Direct(Tid(2_122, "@memset")),Direct(Tid(1_186, "%000004a2"))))])), +Blk(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x984")]), Phis([]), +Defs([Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x984"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x988"), +Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x988"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_293, "%0000050d"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x98C"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_298, "%00000512"), Attrs([Attr("address","0x990"), +Def(Tid(1_207, "%000004b7"), Attrs([Attr("address","0x990"), Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2452,64))]), -Jmps([Call(Tid(1_301, "%00000515"), Attrs([Attr("address","0x990"), +Jmps([Call(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x990"), Attr("insn","bl #-0x1f0")]), Int(1,1), -(Direct(Tid(2_279, "@free")),Direct(Tid(1_303, "%00000517"))))])), -Blk(Tid(1_303, "%00000517"), Attrs([Attr("address","0x994")]), Phis([]), -Defs([Def(Tid(1_308, "%0000051c"), Attrs([Attr("address","0x994"), +(Direct(Tid(2_118, "@free")),Direct(Tid(1_212, "%000004bc"))))])), +Blk(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x994")]), Phis([]), +Defs([Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x994"), Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_316, "%00000524"), Attrs([Attr("address","0x998"), +Def(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x998"), 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_326, "%0000052e"), Attrs([Attr("address","0x99C"), +Def(Tid(1_229, "%000004cd"), 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_330, "%00000532"), Attrs([Attr("address","0x99C"), +Def(Tid(1_234, "%000004d2"), 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_333, "%00000535"), Attrs([Attr("address","0x99C"), +Def(Tid(1_238, "%000004d6"), 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_338, "%0000053a"), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_243, "%000004db"), Attrs([Attr("address","0x9A0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_281, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_120, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_350, "%0000092e"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_146, "%00000862"), 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_351, "%0000092f"), +Var("R0",Imm(64)), In()), Arg(Tid(2_147, "%00000863"), Attrs([Attr("warn-unused","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_001, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(949, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x750"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_859, "%00000743"), Attrs([Attr("address","0x754"), +Def(Tid(1_717, "%000006b5"), 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_866, "%0000074a"), Attrs([Attr("address","0x758"), +Def(Tid(1_723, "%000006bb"), 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_871, "%0000074f"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_728, "%000006c0"), Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_282, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_121, "@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_352, "%00000930"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_148, "%00000864"), 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_353, "%00000931"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_149, "%00000865"), 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_354, "%00000932"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_150, "%00000866"), 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_355, "%00000933"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_151, "%00000867"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_109, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_042, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x710"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_759, "%000006df"), Attrs([Attr("address","0x714"), +Def(Tid(1_629, "%0000065d"), 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_766, "%000006e6"), Attrs([Attr("address","0x718"), +Def(Tid(1_635, "%00000663"), Attrs([Attr("address","0x718"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_771, "%000006eb"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_640, "%00000668"), Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_283, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_122, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_356, "%00000934"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_152, "%00000868"), 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_357, "%00000935"), +Both()), Arg(Tid(2_153, "%00000869"), 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_358, "%00000936"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_154, "%0000086a"), 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_359, "%00000937"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_155, "%0000086b"), 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_270, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_182, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x764"), +Def(Tid(1_739, "%000006cb"), 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_891, "%00000763"), Attrs([Attr("address","0x768"), +Def(Tid(1_745, "%000006d1"), 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_896, "%00000768"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_750, "%000006d6"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_284, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_123, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_360, "%00000938"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_156, "%0000086c"), 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_361, "%00000939"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_157, "%0000086d"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_138, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_951, "%0000079f"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_068, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_959, "%000007a7"), Attrs([Attr("address","0x794"), +Def(Tid(1_805, "%0000070d"), 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_966, "%000007ae"), Attrs([Attr("address","0x798"), +Def(Tid(1_811, "%00000713"), 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_971, "%000007b3"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_816, "%00000718"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_285, "@register_tm_clones"), +Sub(Tid(2_124, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_362, "%0000093a"), + "register_tm_clones", Args([Arg(Tid(2_158, "%0000086e"), 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(759, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(763, "%000002fb"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(737, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(740, "%000002e4"), Attrs([Attr("address","0x840"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(770, "%00000302"), Attrs([Attr("address","0x844"), +Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x844"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(776, "%00000308"), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(783, "%0000030f"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(757, "%000002f5"), Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(791, "%00000317"), Attrs([Attr("address","0x850"), +Def(Tid(764, "%000002fc"), Attrs([Attr("address","0x850"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(798, "%0000031e"), - Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(806, "%00000326"), Attrs([Attr("address","0x858"), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(770, "%00000302"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(777, "%00000309"), Attrs([Attr("address","0x858"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), -Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x85C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x85C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(825, "%00000339"), - Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(819, "%00000333"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(817, "%00000331"))), Goto(Tid(2_330, "%0000091a"), Attrs([]), - Int(1,1), Direct(Tid(1_410, "%00000582")))])), Blk(Tid(1_410, "%00000582"), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(789, "%00000315"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(787, "%00000313"))), Goto(Tid(2_125, "%0000084d"), Attrs([]), + Int(1,1), Direct(Tid(1_304, "%00000518")))])), Blk(Tid(1_304, "%00000518"), Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_414, "%00000586"), Attrs([Attr("address","0x864"), +Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x864"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_422, "%0000058e"), Attrs([Attr("address","0x868"), +Def(Tid(1_314, "%00000522"), Attrs([Attr("address","0x868"), Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), -Def(Tid(1_433, "%00000599"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), Var("#72",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_427, "%00000593"), - Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), - Var("#72",Imm(1)), Direct(Tid(817, "%00000331"))), -Goto(Tid(2_331, "%0000091b"), Attrs([]), Int(1,1), -Direct(Tid(1_436, "%0000059c")))])), Blk(Tid(817, "%00000331"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_319, "%00000527"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(787, "%00000313"))), Goto(Tid(2_126, "%0000084e"), Attrs([]), + Int(1,1), Direct(Tid(1_323, "%0000052b")))])), Blk(Tid(787, "%00000313"), Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(830, "%0000033e"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(795, "%0000031b"), Attrs([Attr("address","0x878"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_436, "%0000059c"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_442, "%000005a2"), Attrs([Attr("address","0x870"), +Blk(Tid(1_323, "%0000052b"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x870"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_447, "%000005a7"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_332, "%00000534"), Attrs([Attr("address","0x874"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_288, "@strlen"), +Sub(Tid(2_127, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_363, "%0000093b"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_159, "%0000086f"), 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_364, "%0000093c"), +In()), Arg(Tid(2_160, "%00000870"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_072, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_011, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x720"), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x720"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_784, "%000006f8"), Attrs([Attr("address","0x724"), +Def(Tid(1_651, "%00000673"), 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_791, "%000006ff"), Attrs([Attr("address","0x728"), +Def(Tid(1_657, "%00000679"), 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_796, "%00000704"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_662, "%0000067e"), 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/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir index df98f3236..586d4d79c 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir @@ -1,371 +1,363 @@ -0000091c: program -000008d5: sub __cxa_finalize(__cxa_finalize_result) -0000091d: __cxa_finalize_result :: out u32 = low:32[R0] - -0000057e: -00000722: R16 := 0x20000 -0000072a: R17 := mem[R16 + 0x18, el]:u64 -00000731: R16 := R16 + 0x18 -00000736: call R17 with noreturn - -000008d6: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000091e: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000342: -00000349: #34 := R31 - 0x20 -0000034e: mem := mem with [#34, el]:u64 <- R29 -00000353: mem := mem with [#34 + 8, el]:u64 <- R30 -00000357: R31 := #34 -0000035e: R29 := R31 -00000366: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000036c: R19 := 0x20000 -00000375: R0 := pad:32[mem[R19 + 0x78]] -00000381: #36 := ~~0:0[R0] -0000037b: when #36 goto %00000379 -00000912: goto %0000053c - -0000053c: -00000540: R0 := 0x1F000 -00000548: R0 := mem[R0 + 0xFC8, el]:u64 -00000554: #69 := R0 = 0 -0000054e: when #69 goto %0000054c -00000913: goto %0000056c - -0000056c: -00000570: R0 := 0x20000 -00000578: R0 := mem[R0 + 0x58, el]:u64 -0000057d: R30 := 0x8B0 -00000580: call @__cxa_finalize with return %0000054c - -0000054c: -00000559: R30 := 0x8B4 -0000055b: call @deregister_tm_clones with return %0000055d - -0000055d: -00000562: R0 := 1 -0000056a: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] -00000914: goto %00000379 - -00000379: -00000389: R19 := mem[R31 + 0x10, el]:u64 -00000393: R29 := mem[R31, el]:u64 -00000397: R30 := mem[R31 + 8, el]:u64 -0000039a: R31 := R31 + 0x20 -0000039f: call R30 with noreturn - -000008da: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -0000091f: __libc_start_main_main :: in u64 = R0 -00000920: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000921: __libc_start_main_arg3 :: in out u64 = R2 -00000922: __libc_start_main_auxv :: in out u64 = R3 -00000923: __libc_start_main_result :: out u32 = low:32[R0] - -00000286: -00000709: R16 := 0x20000 -00000711: R17 := mem[R16 + 0x10, el]:u64 -00000718: R16 := R16 + 0x10 -0000071d: call R17 with noreturn - -000008db: sub _fini(_fini_result) -00000924: _fini_result :: out u32 = low:32[R0] +00000850: program +00000834: sub __cxa_finalize(__cxa_finalize_result) +00000851: __cxa_finalize_result :: out u32 = low:32[R0] + +00000514: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x18, el]:u64 +000006a5: R16 := R16 + 0x18 +000006aa: 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] + +0000031f: +00000323: #3 := R31 - 0x20 +00000329: mem := mem with [#3, el]:u64 <- R29 +0000032f: mem := mem with [#3 + 8, el]:u64 <- R30 +00000333: R31 := #3 +00000339: R29 := R31 +00000341: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000346: R19 := 0x20000 +0000034d: R0 := pad:64[mem[R19 + 0x78]] +00000353: when 0:0[R0] goto %00000351 +00000836: goto %000004dd + +000004dd: +000004e0: R0 := 0x1F000 +000004e7: R0 := mem[R0 + 0xFC8, el]:u64 +000004ed: when R0 = 0 goto %000004eb +00000837: goto %00000504 + +00000504: +00000507: R0 := 0x20000 +0000050e: R0 := mem[R0 + 0x58, el]:u64 +00000513: R30 := 0x8B0 +00000516: call @__cxa_finalize with return %000004eb + +000004eb: +000004f3: R30 := 0x8B4 +000004f5: call @deregister_tm_clones with return %000004f7 + +000004f7: +000004fa: R0 := 1 +00000502: mem := mem with [R19 + 0x78] <- 7:0[R0] +00000838: goto %00000351 + +00000351: +0000035b: R19 := mem[R31 + 0x10, el]:u64 +00000362: R29 := mem[R31, el]:u64 +00000367: R30 := mem[R31 + 8, el]:u64 +0000036b: R31 := R31 + 0x20 +00000370: 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] + +00000278: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x10, el]:u64 +0000068f: R16 := R16 + 0x10 +00000694: call R17 with noreturn + +0000083a: sub _fini(_fini_result) +00000858: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -000008dc: sub _init(_init_result) -00000925: _init_result :: out u32 = low:32[R0] - -000007e8: -000007f1: #100 := R31 - 0x10 -000007f6: mem := mem with [#100, el]:u64 <- R29 -000007fb: mem := mem with [#100 + 8, el]:u64 <- R30 -000007ff: R31 := #100 -00000806: R29 := R31 -0000080b: R30 := 0x6E8 -0000080d: call @call_weak_fn with return %0000080f - -0000080f: -00000817: R29 := mem[R31, el]:u64 -0000081b: R30 := mem[R31 + 8, el]:u64 -0000081e: R31 := R31 + 0x10 -00000823: call R30 with noreturn - -000008dd: sub _start(_start_result) -00000926: _start_result :: out u32 = low:32[R0] - -0000023c: -00000242: R29 := 0 -00000248: R30 := 0 -00000250: R5 := R0 -00000258: R1 := mem[R31, el]:u64 -0000025f: R2 := R31 + 8 -00000266: R6 := R31 -0000026c: R0 := 0x1F000 -00000274: R0 := mem[R0 + 0xFD8, el]:u64 -0000027a: R3 := 0 -00000280: R4 := 0 -00000285: R30 := 0x7F0 -00000288: call @__libc_start_main with return %0000028a - -0000028a: -0000028d: R30 := 0x7F4 -00000290: call @abort with return %00000915 - -00000915: -00000916: call @call_weak_fn with noreturn - -000008e0: sub abort() - - -0000028e: -00000786: R16 := 0x20000 -0000078e: R17 := mem[R16 + 0x38, el]:u64 -00000795: R16 := R16 + 0x38 -0000079a: call R17 with noreturn - -000008e1: sub call_weak_fn(call_weak_fn_result) -00000927: call_weak_fn_result :: out u32 = low:32[R0] +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 + +0000083b: sub _init(_init_result) +00000859: _init_result :: out u32 = low:32[R0] + +0000074a: +00000750: #6 := R31 - 0x10 +00000756: mem := mem with [#6, el]:u64 <- R29 +0000075c: mem := mem with [#6 + 8, el]:u64 <- R30 +00000760: R31 := #6 +00000766: R29 := R31 +0000076b: R30 := 0x6E8 +0000076d: call @call_weak_fn with return %0000076f + +0000076f: +00000774: R29 := mem[R31, el]:u64 +00000779: R30 := mem[R31 + 8, el]:u64 +0000077d: R31 := R31 + 0x10 +00000782: call R30 with noreturn + +0000083c: sub _start(_start_result) +0000085a: _start_result :: out u32 = low:32[R0] + +00000239: +0000023e: R29 := 0 +00000243: R30 := 0 +00000249: R5 := R0 +00000250: R1 := mem[R31, el]:u64 +00000256: R2 := R31 + 8 +0000025c: R6 := R31 +00000261: R0 := 0x1F000 +00000268: R0 := mem[R0 + 0xFD8, el]:u64 +0000026d: R3 := 0 +00000272: R4 := 0 +00000277: R30 := 0x7F0 +0000027a: call @__libc_start_main with return %0000027c + +0000027c: +0000027f: R30 := 0x7F4 +00000282: call @abort with return %0000083d + +0000083d: +0000083e: call @call_weak_fn with noreturn + +0000083f: sub abort() + + +00000280: +000006f0: R16 := 0x20000 +000006f7: R17 := mem[R16 + 0x38, el]:u64 +000006fd: R16 := R16 + 0x38 +00000702: call R17 with noreturn + +00000840: sub call_weak_fn(call_weak_fn_result) +0000085b: call_weak_fn_result :: out u32 = low:32[R0] + +00000284: +00000287: R0 := 0x1F000 +0000028e: R0 := mem[R0 + 0xFD0, el]:u64 +00000294: when R0 = 0 goto %00000292 +00000841: goto %00000554 00000292: -00000296: R0 := 0x1F000 -0000029e: R0 := mem[R0 + 0xFD0, el]:u64 -000002aa: #12 := R0 = 0 -000002a4: when #12 goto %000002a2 -00000917: goto %000005d0 - -000002a2: -000002af: call R30 with noreturn - -000005d0: -000005d3: goto @__gmon_start__ - -000005d1: -0000076d: R16 := 0x20000 -00000775: R17 := mem[R16 + 0x30, el]:u64 -0000077c: R16 := R16 + 0x30 -00000781: call R17 with noreturn - -000008e3: sub deregister_tm_clones(deregister_tm_clones_result) -00000928: deregister_tm_clones_result :: out u32 = low:32[R0] - -000002b5: -000002b9: R0 := 0x20000 -000002c0: R0 := R0 + 0x78 -000002c6: R1 := 0x20000 -000002cd: R1 := R1 + 0x78 -000002d5: #16 := 1 + ~R0 + R1 -000002d9: NF := 63:63[#16] -000002dc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002df: ZF := #16 = 0 -000002e2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002f0: #21 := ZF -000002ea: when #21 goto %000002e8 -00000918: goto %000005a9 - -000005a9: -000005ad: R1 := 0x1F000 -000005b5: R1 := mem[R1 + 0xFC0, el]:u64 -000005c0: #77 := R1 = 0 -000005ba: when #77 goto %000002e8 -00000919: goto %000005c3 - -000002e8: -000002f5: call R30 with noreturn - -000005c3: -000005c9: R16 := R1 -000005ce: call R16 with noreturn - -000008e6: sub frame_dummy(frame_dummy_result) -00000929: frame_dummy_result :: out u32 = low:32[R0] - -000003a5: -000003a7: call @register_tm_clones with noreturn - -000008e7: sub free(free_ptr) -0000092a: free_ptr :: in out u64 = R0 - -00000513: -000007b8: R16 := 0x20000 -000007c0: R17 := mem[R16 + 0x48, el]:u64 -000007c7: R16 := R16 + 0x48 -000007cc: call R17 with noreturn - -000008e8: sub main(main_argc, main_argv, main_result) -0000092b: main_argc :: in u32 = low:32[R0] -0000092c: main_argv :: in out u64 = R1 -0000092d: main_result :: out u32 = low:32[R0] - -000003a9: -000003b0: #42 := R31 - 0x30 -000003b5: mem := mem with [#42, el]:u64 <- R29 -000003ba: mem := mem with [#42 + 8, el]:u64 <- R30 -000003be: R31 := #42 -000003c5: R29 := R31 -000003cd: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000003d5: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003dd: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003e3: R0 := 0xB -000003e8: R30 := 0x8F0 -000003eb: call @malloc with return %000003ed - -000003ed: -000003f3: R1 := R0 -000003f9: R0 := 0x20000 -00000400: R0 := R0 + 0x80 -00000408: mem := mem with [R0, el]:u64 <- R1 -0000040e: R0 := 0x20000 -00000415: R0 := R0 + 0x80 -0000041d: R19 := mem[R0, el]:u64 -00000423: R0 := 0x20000 -0000042a: R0 := R0 + 0x68 -0000042f: R30 := 0x918 -00000432: call @strlen with return %00000434 - -00000434: -0000043a: R2 := R0 -00000440: R0 := 0x20000 -00000447: R1 := R0 + 0x68 -0000044f: R0 := R19 -00000454: R30 := 0x92C -00000457: call @memcpy with return %00000459 - -00000459: -0000045d: R0 := 0x20000 -00000464: R0 := R0 + 0x80 -0000046c: R0 := mem[R0, el]:u64 -00000471: R30 := 0x93C -00000474: call @puts with return %00000476 - -00000476: -0000047a: R0 := 0x20000 -00000481: R0 := R0 + 0x80 -00000489: R0 := mem[R0, el]:u64 -00000490: R0 := R0 + 4 -00000498: mem := mem with [R31 + 0x28, el]:u64 <- R0 -000004a0: R0 := mem[R31 + 0x28, el]:u64 -000004a8: mem := mem with [R0] <- 0 -000004ae: R0 := 0x20000 -000004b5: R0 := R0 + 0x80 -000004bd: R19 := mem[R0, el]:u64 -000004c3: R0 := 0x20000 -000004ca: R0 := R0 + 0x80 -000004d2: R0 := mem[R0, el]:u64 -000004d7: R30 := 0x974 -000004d9: call @strlen with return %000004db - -000004db: -000004e1: R2 := R0 -000004e8: R1 := 1 -000004f0: R0 := R19 -000004f5: R30 := 0x984 -000004f8: call @memset with return %000004fa - -000004fa: -000004fe: R0 := 0x20000 -00000505: R0 := R0 + 0x80 -0000050d: R0 := mem[R0, el]:u64 -00000512: R30 := 0x994 -00000515: call @free with return %00000517 - -00000517: -0000051c: R0 := 0 -00000524: R19 := mem[R31 + 0x10, el]:u64 -0000052e: R29 := mem[R31, el]:u64 -00000532: R30 := mem[R31 + 8, el]:u64 -00000535: R31 := R31 + 0x30 -0000053a: call R30 with noreturn - -000008e9: sub malloc(malloc_size, malloc_result) -0000092e: malloc_size :: in u64 = R0 -0000092f: malloc_result :: out u64 = R0 - -000003e9: -0000073b: R16 := 0x20000 -00000743: R17 := mem[R16 + 0x20, el]:u64 -0000074a: R16 := R16 + 0x20 -0000074f: call R17 with noreturn - -000008ea: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000930: memcpy_dst :: in out u64 = R0 -00000931: memcpy_src :: in out u64 = R1 -00000932: memcpy_n :: in u64 = R2 -00000933: memcpy_result :: out u64 = R0 - -00000455: -000006d7: R16 := 0x20000 -000006df: R17 := mem[R16, el]:u64 -000006e6: R16 := R16 -000006eb: call R17 with noreturn - -000008eb: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000934: memset_buf :: in out u64 = R0 -00000935: memset_c :: in u32 = low:32[R1] -00000936: memset_n :: in u64 = R2 -00000937: memset_result :: out u64 = R0 - -000004f6: -00000754: R16 := 0x20000 -0000075c: R17 := mem[R16 + 0x28, el]:u64 -00000763: R16 := R16 + 0x28 -00000768: call R17 with noreturn - -000008ec: sub puts(puts_s, puts_result) -00000938: puts_s :: in u64 = R0 -00000939: puts_result :: out u32 = low:32[R0] - -00000472: -0000079f: R16 := 0x20000 -000007a7: R17 := mem[R16 + 0x40, el]:u64 -000007ae: R16 := R16 + 0x40 -000007b3: call R17 with noreturn - -000008ed: sub register_tm_clones(register_tm_clones_result) -0000093a: register_tm_clones_result :: out u32 = low:32[R0] - -000002f7: -000002fb: R0 := 0x20000 -00000302: R0 := R0 + 0x78 -00000308: R1 := 0x20000 -0000030f: R1 := R1 + 0x78 -00000317: R1 := R1 - R0 -0000031e: R2 := R1 >> 0x3F -00000326: R1 := R2 + (R1 ~>> 3) -0000032d: R1 := R1 >> 1 -00000339: #30 := R1 = 0 -00000333: when #30 goto %00000331 -0000091a: goto %00000582 - -00000582: -00000586: R2 := 0x1F000 -0000058e: R2 := mem[R2 + 0xFE0, el]:u64 -00000599: #72 := R2 = 0 -00000593: when #72 goto %00000331 -0000091b: goto %0000059c - -00000331: -0000033e: call R30 with noreturn - -0000059c: -000005a2: R16 := R2 -000005a7: call R16 with noreturn - -000008f0: sub strlen(strlen_s, strlen_result) -0000093b: strlen_s :: in u64 = R0 -0000093c: strlen_result :: out u64 = R0 +0000029a: call R30 with noreturn + +00000554: +00000557: goto @__gmon_start__ + +00000555: +000006da: R16 := 0x20000 +000006e1: R17 := mem[R16 + 0x30, el]:u64 +000006e7: R16 := R16 + 0x30 +000006ec: call R17 with noreturn + +00000842: sub deregister_tm_clones(deregister_tm_clones_result) +0000085c: deregister_tm_clones_result :: out u32 = low:32[R0] + +000002a0: +000002a3: R0 := 0x20000 +000002a9: R0 := R0 + 0x78 +000002ae: R1 := 0x20000 +000002b4: R1 := R1 + 0x78 +000002ba: #1 := ~R0 +000002bf: #2 := R1 + ~R0 +000002c5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002cb: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002cf: ZF := #2 + 1 = 0 +000002d3: NF := 63:63[#2 + 1] +000002d9: when ZF goto %000002d7 +00000843: goto %00000536 + +00000536: +00000539: R1 := 0x1F000 +00000540: R1 := mem[R1 + 0xFC0, el]:u64 +00000545: when R1 = 0 goto %000002d7 +00000844: goto %00000549 + +000002d7: +000002df: call R30 with noreturn + +00000549: +0000054d: R16 := R1 +00000552: call R16 with noreturn + +00000845: sub frame_dummy(frame_dummy_result) +0000085d: frame_dummy_result :: out u32 = low:32[R0] + +00000376: +00000378: call @register_tm_clones with noreturn + +00000846: sub free(free_ptr) +0000085e: free_ptr :: in out u64 = R0 + +000004b8: +0000071c: R16 := 0x20000 +00000723: R17 := mem[R16 + 0x48, el]:u64 +00000729: R16 := R16 + 0x48 +0000072e: 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] + +0000037a: +0000037e: #4 := R31 - 0x30 +00000384: mem := mem with [#4, el]:u64 <- R29 +0000038a: mem := mem with [#4 + 8, el]:u64 <- R30 +0000038e: R31 := #4 +00000394: R29 := R31 +0000039c: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003a3: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003aa: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003af: R0 := 0xB +000003b4: R30 := 0x8F0 +000003b7: call @malloc with return %000003b9 + +000003b9: +000003bd: R1 := R0 +000003c2: R0 := 0x20000 +000003c8: R0 := R0 + 0x80 +000003d0: mem := mem with [R0, el]:u64 <- R1 +000003d5: R0 := 0x20000 +000003db: R0 := R0 + 0x80 +000003e2: R19 := mem[R0, el]:u64 +000003e7: R0 := 0x20000 +000003ed: R0 := R0 + 0x68 +000003f2: R30 := 0x918 +000003f5: call @strlen with return %000003f7 + +000003f7: +000003fb: R2 := R0 +00000400: R0 := 0x20000 +00000406: R1 := R0 + 0x68 +0000040c: R0 := R19 +00000411: R30 := 0x92C +00000414: call @memcpy with return %00000416 + +00000416: +00000419: R0 := 0x20000 +0000041f: R0 := R0 + 0x80 +00000426: R0 := mem[R0, el]:u64 +0000042b: R30 := 0x93C +0000042e: call @puts with return %00000430 00000430: -000006f0: R16 := 0x20000 -000006f8: R17 := mem[R16 + 8, el]:u64 -000006ff: R16 := R16 + 8 -00000704: call R17 with noreturn +00000433: R0 := 0x20000 +00000439: R0 := R0 + 0x80 +00000440: R0 := mem[R0, el]:u64 +00000446: R0 := R0 + 4 +0000044e: mem := mem with [R31 + 0x28, el]:u64 <- R0 +00000455: R0 := mem[R31 + 0x28, el]:u64 +0000045c: mem := mem with [R0] <- 0 +00000461: R0 := 0x20000 +00000467: R0 := R0 + 0x80 +0000046e: R19 := mem[R0, el]:u64 +00000473: R0 := 0x20000 +00000479: R0 := R0 + 0x80 +00000480: R0 := mem[R0, el]:u64 +00000485: R30 := 0x974 +00000487: call @strlen with return %00000489 + +00000489: +0000048d: R2 := R0 +00000492: R1 := 1 +00000498: R0 := R19 +0000049d: R30 := 0x984 +000004a0: call @memset with return %000004a2 + +000004a2: +000004a5: R0 := 0x20000 +000004ab: R0 := R0 + 0x80 +000004b2: R0 := mem[R0, el]:u64 +000004b7: R30 := 0x994 +000004ba: call @free with return %000004bc + +000004bc: +000004bf: R0 := 0 +000004c6: R19 := mem[R31 + 0x10, el]:u64 +000004cd: R29 := mem[R31, el]:u64 +000004d2: R30 := mem[R31 + 8, el]:u64 +000004d6: R31 := R31 + 0x30 +000004db: call R30 with noreturn + +00000848: sub malloc(malloc_size, malloc_result) +00000862: malloc_size :: in u64 = R0 +00000863: malloc_result :: out u64 = R0 + +000003b5: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x20, el]:u64 +000006bb: R16 := R16 + 0x20 +000006c0: 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 + +00000412: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16, el]:u64 +00000663: R16 := R16 +00000668: 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 + +0000049e: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x28, el]:u64 +000006d1: R16 := R16 + 0x28 +000006d6: 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] + +0000042c: +00000706: R16 := 0x20000 +0000070d: R17 := mem[R16 + 0x40, el]:u64 +00000713: R16 := R16 + 0x40 +00000718: call R17 with noreturn + +0000084c: sub register_tm_clones(register_tm_clones_result) +0000086e: register_tm_clones_result :: out u32 = low:32[R0] + +000002e1: +000002e4: R0 := 0x20000 +000002ea: R0 := R0 + 0x78 +000002ef: R1 := 0x20000 +000002f5: R1 := R1 + 0x78 +000002fc: R1 := R1 + ~R0 + 1 +00000302: R2 := 0.63:63[R1] +00000309: R1 := R2 + (R1 ~>> 3) +0000030f: R1 := extend:64[63:1[R1]] +00000315: when R1 = 0 goto %00000313 +0000084d: goto %00000518 + +00000518: +0000051b: R2 := 0x1F000 +00000522: R2 := mem[R2 + 0xFE0, el]:u64 +00000527: when R2 = 0 goto %00000313 +0000084e: goto %0000052b + +00000313: +0000031b: call R30 with noreturn + +0000052b: +0000052f: R16 := R2 +00000534: call R16 with noreturn + +0000084f: sub strlen(strlen_s, strlen_result) +0000086f: strlen_s :: in u64 = R0 +00000870: strlen_result :: out u64 = R0 + +000003f3: +0000066c: R16 := 0x20000 +00000673: R17 := mem[R16 + 8, el]:u64 +00000679: R16 := R16 + 8 +0000067e: call R17 with noreturn 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 index b1f316af1..80b63d038 100644 --- 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 @@ -67,694 +67,681 @@ 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_240, "%000008c0"), Attrs([]), - Subs([Sub(Tid(2_169, "@__cxa_finalize"), +Program(Tid(2_053, "%00000805"), 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_241, "%000008c1"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_054, "%00000806"), 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_318, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_229, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_738, "%000006ca"), Attrs([Attr("address","0x740"), +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_746, "%000006d2"), Attrs([Attr("address","0x744"), +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_753, "%000006d9"), Attrs([Attr("address","0x748"), +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_758, "%000006de"), +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_170, "@__do_global_dtors_aux"), +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_242, "%000008c2"), + "__do_global_dtors_aux", Args([Arg(Tid(2_055, "%00000807"), 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_149, "@__do_global_dtors_aux"), +Blks([Blk(Tid(1_083, "@__do_global_dtors_aux"), Attrs([Attr("address","0x940")]), Phis([]), -Defs([Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x940"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#77",Imm(64)), +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_161, "%00000489"), Attrs([Attr("address","0x940"), +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("#77",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x940"), +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("#77",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x940"), +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("#77",Imm(64))), Def(Tid(1_177, "%00000499"), +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_185, "%000004a1"), + 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_191, "%000004a7"), Attrs([Attr("address","0x94C"), +Def(Tid(1_122, "%00000462"), Attrs([Attr("address","0x94C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x950"), +Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x950"), Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),BigEndian(),8))), -Def(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x954"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#79",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x954"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#79",Imm(1)), -Direct(Tid(1_204, "%000004b4"))), Goto(Tid(2_230, "%000008b6"), Attrs([]), - Int(1,1), Direct(Tid(1_252, "%000004e4")))])), Blk(Tid(1_252, "%000004e4"), +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_027, "%000007eb"), Attrs([]), + Int(1,1), Direct(Tid(1_174, "%00000496")))])), Blk(Tid(1_174, "%00000496"), Attrs([Attr("address","0x958")]), Phis([]), -Defs([Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x958"), +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_264, "%000004f0"), Attrs([Attr("address","0x95C"), +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)), -Def(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x960"), -Attr("insn","cbz x0, #0x10")]), Var("#83",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_270, "%000004f6"), - Attrs([Attr("address","0x960"), Attr("insn","cbz x0, #0x10")]), - Var("#83",Imm(1)), Direct(Tid(1_268, "%000004f4"))), -Goto(Tid(2_231, "%000008b7"), Attrs([]), Int(1,1), -Direct(Tid(1_300, "%00000514")))])), Blk(Tid(1_300, "%00000514"), +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_028, "%000007ec"), Attrs([]), + Int(1,1), Direct(Tid(1_213, "%000004bd")))])), Blk(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_304, "%00000518"), Attrs([Attr("address","0x964"), +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_312, "%00000520"), Attrs([Attr("address","0x968"), +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_317, "%00000525"), Attrs([Attr("address","0x96C"), +Def(Tid(1_228, "%000004cc"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x22c")]), Var("R30",Imm(64)), Int(2416,64))]), -Jmps([Call(Tid(1_320, "%00000528"), Attrs([Attr("address","0x96C"), +Jmps([Call(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x96C"), Attr("insn","bl #-0x22c")]), Int(1,1), -(Direct(Tid(2_169, "@__cxa_finalize")),Direct(Tid(1_268, "%000004f4"))))])), -Blk(Tid(1_268, "%000004f4"), Attrs([Attr("address","0x970")]), Phis([]), -Defs([Def(Tid(1_281, "%00000501"), Attrs([Attr("address","0x970"), +(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_283, "%00000503"), Attrs([Attr("address","0x970"), +Jmps([Call(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x970"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_183, "@deregister_tm_clones")),Direct(Tid(1_285, "%00000505"))))])), -Blk(Tid(1_285, "%00000505"), Attrs([Attr("address","0x974")]), Phis([]), -Defs([Def(Tid(1_290, "%0000050a"), Attrs([Attr("address","0x974"), +(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_298, "%00000512"), Attrs([Attr("address","0x978"), +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)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_232, "%000008b8"), Attrs([]), Int(1,1), -Direct(Tid(1_204, "%000004b4")))])), Blk(Tid(1_204, "%000004b4"), +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_029, "%000007ed"), Attrs([]), Int(1,1), +Direct(Tid(1_133, "%0000046d")))])), Blk(Tid(1_133, "%0000046d"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_220, "%000004c4"), Attrs([Attr("address","0x97C"), +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_230, "%000004ce"), Attrs([Attr("address","0x980"), +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_234, "%000004d2"), Attrs([Attr("address","0x980"), +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_237, "%000004d5"), Attrs([Attr("address","0x980"), +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_242, "%000004da"), +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_174, "@__libc_start_main"), +(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_243, "%000008c3"), + Args([Arg(Tid(2_056, "%00000808"), 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_244, "%000008c4"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_057, "%00000809"), 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_245, "%000008c5"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_058, "%0000080a"), 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_246, "%000008c6"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_059, "%0000080b"), 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_247, "%000008c7"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_060, "%0000080c"), 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(961, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(916, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_713, "%000006b1"), Attrs([Attr("address","0x730"), +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_721, "%000006b9"), Attrs([Attr("address","0x734"), +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_728, "%000006c0"), Attrs([Attr("address","0x738"), +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_733, "%000006c5"), +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_175, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_031, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x994")]), - "_fini", Args([Arg(Tid(2_248, "%000008c8"), + "_fini", Args([Arg(Tid(2_061, "%0000080d"), 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(41, "%00000029"), + Attrs([Attr("address","0x994")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x998"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x998"), +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("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x998"), +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("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(55, "%00000037"), Attrs([Attr("address","0x998"), +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("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x99C"), +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(72, "%00000048"), Attrs([Attr("address","0x9A0"), +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(76, "%0000004c"), Attrs([Attr("address","0x9A0"), +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(79, "%0000004f"), Attrs([Attr("address","0x9A0"), +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(84, "%00000054"), +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_176, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_032, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_249, "%000008c9"), + "_init", Args([Arg(Tid(2_062, "%0000080e"), 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_936, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_795, "@_init"), Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_945, "%00000799"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#114",Imm(64)), +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_950, "%0000079e"), Attrs([Attr("address","0x6DC"), +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("#114",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_955, "%000007a3"), Attrs([Attr("address","0x6DC"), +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("#114",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_959, "%000007a7"), Attrs([Attr("address","0x6DC"), +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("#114",Imm(64))), Def(Tid(1_966, "%000007ae"), +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_971, "%000007b3"), + 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_973, "%000007b5"), + 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_181, "@call_weak_fn")),Direct(Tid(1_975, "%000007b7"))))])), -Blk(Tid(1_975, "%000007b7"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_983, "%000007bf"), Attrs([Attr("address","0x6E8"), +(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_987, "%000007c3"), Attrs([Attr("address","0x6E8"), +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_990, "%000007c6"), Attrs([Attr("address","0x6E8"), +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_995, "%000007cb"), +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_177, "@_start"), +(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_250, "%000008ca"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_063, "%0000080f"), 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(887, "@_start"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(893, "%0000037d"), +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(899, "%00000383"), + 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(907, "%0000038b"), + 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(915, "%00000393"), + 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(922, "%0000039a"), Attrs([Attr("address","0x894"), +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(929, "%000003a1"), +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(935, "%000003a7"), + 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(943, "%000003af"), + 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(949, "%000003b5"), Attrs([Attr("address","0x8A4"), +Def(Tid(905, "%00000389"), Attrs([Attr("address","0x8A4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(955, "%000003bb"), Attrs([Attr("address","0x8A8"), +Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8A8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x8AC"), +Def(Tid(915, "%00000393"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(963, "%000003c3"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(918, "%00000396"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x17c")]), Int(1,1), -(Direct(Tid(2_174, "@__libc_start_main")),Direct(Tid(965, "%000003c5"))))])), -Blk(Tid(965, "%000003c5"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x8B0"), +(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(971, "%000003cb"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(926, "%0000039e"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0x130")]), Int(1,1), -(Direct(Tid(2_180, "@abort")),Direct(Tid(2_233, "%000008b9"))))])), -Blk(Tid(2_233, "%000008b9"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_234, "%000008ba"), Attrs([]), Int(1,1), -(Direct(Tid(2_181, "@call_weak_fn")),))]))])), Sub(Tid(2_180, "@abort"), +(Direct(Tid(2_036, "@abort")),Direct(Tid(2_034, "%000007f2"))))])), +Blk(Tid(2_034, "%000007f2"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_035, "%000007f3"), 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(969, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_838, "%0000072e"), Attrs([Attr("address","0x780"), +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_846, "%00000736"), Attrs([Attr("address","0x784"), +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_853, "%0000073d"), Attrs([Attr("address","0x788"), +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_858, "%00000742"), +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_181, "@call_weak_fn"), +(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_251, "%000008cb"), + "call_weak_fn", Args([Arg(Tid(2_064, "%00000810"), 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(973, "@call_weak_fn"), - Attrs([Attr("address","0x8B4")]), Phis([]), Defs([Def(Tid(977, "%000003d1"), +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(985, "%000003d9"), + 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)), -Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x8BC"), -Attr("insn","cbz x0, #0x8")]), Var("#55",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(991, "%000003df"), - Attrs([Attr("address","0x8BC"), Attr("insn","cbz x0, #0x8")]), - Var("#55",Imm(1)), Direct(Tid(989, "%000003dd"))), -Goto(Tid(2_235, "%000008bb"), Attrs([]), Int(1,1), -Direct(Tid(1_400, "%00000578")))])), Blk(Tid(989, "%000003dd"), +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_038, "%000007f6"), Attrs([]), + Int(1,1), Direct(Tid(1_293, "%0000050d")))])), Blk(Tid(942, "%000003ae"), Attrs([Attr("address","0x8C4")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_002, "%000003ea"), Attrs([Attr("address","0x8C4"), +Jmps([Call(Tid(950, "%000003b6"), Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_400, "%00000578"), Attrs([Attr("address","0x8C0")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_403, "%0000057b"), Attrs([Attr("address","0x8C0"), +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_401, "@__gmon_start__")))])), Blk(Tid(1_401, "@__gmon_start__"), +Direct(Tid(1_294, "@__gmon_start__")))])), Blk(Tid(1_294, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_813, "%00000715"), Attrs([Attr("address","0x770"), +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_821, "%0000071d"), Attrs([Attr("address","0x774"), +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_828, "%00000724"), Attrs([Attr("address","0x778"), +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_833, "%00000729"), +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_183, "@deregister_tm_clones"), +Sub(Tid(2_039, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8D0")]), - "deregister_tm_clones", Args([Arg(Tid(2_252, "%000008cc"), + "deregister_tm_clones", Args([Arg(Tid(2_065, "%00000811"), 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(1_008, "@deregister_tm_clones"), - Attrs([Attr("address","0x8D0")]), Phis([]), -Defs([Def(Tid(1_012, "%000003f4"), Attrs([Attr("address","0x8D0"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x8D4"), -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","0x8D8"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(1_032, "%00000408"), - Attrs([Attr("address","0x8DC"), Attr("insn","add x1, x1, #0x70")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x8E0"), -Attr("insn","cmp x1, x0")]), Var("#59",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(1_044, "%00000414"), Attrs([Attr("address","0x8E0"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#59",Imm(64)))), Def(Tid(1_047, "%00000417"), +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("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#59",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#59",Imm(64)))))), -Def(Tid(1_050, "%0000041a"), Attrs([Attr("address","0x8E0"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#59",Imm(64)),Int(0,64))), Def(Tid(1_053, "%0000041d"), + Var("#4",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(987, "%000003db"), Attrs([Attr("address","0x8E0"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#59",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#59",Imm(64))))))), -Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x8E4"), -Attr("insn","b.eq #0x18")]), Var("#64",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(1_061, "%00000425"), Attrs([Attr("address","0x8E4"), -Attr("insn","b.eq #0x18")]), Var("#64",Imm(1)), -Direct(Tid(1_059, "%00000423"))), Goto(Tid(2_236, "%000008bc"), Attrs([]), - Int(1,1), Direct(Tid(1_361, "%00000551")))])), Blk(Tid(1_361, "%00000551"), + 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_040, "%000007f8"), Attrs([]), + Int(1,1), Direct(Tid(1_263, "%000004ef")))])), Blk(Tid(1_263, "%000004ef"), Attrs([Attr("address","0x8E8")]), Phis([]), -Defs([Def(Tid(1_365, "%00000555"), Attrs([Attr("address","0x8E8"), +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_373, "%0000055d"), Attrs([Attr("address","0x8EC"), +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)), -Def(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8F0"), -Attr("insn","cbz x1, #0xc")]), Var("#91",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_378, "%00000562"), - Attrs([Attr("address","0x8F0"), Attr("insn","cbz x1, #0xc")]), - Var("#91",Imm(1)), Direct(Tid(1_059, "%00000423"))), -Goto(Tid(2_237, "%000008bd"), Attrs([]), Int(1,1), -Direct(Tid(1_387, "%0000056b")))])), Blk(Tid(1_059, "%00000423"), +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_041, "%000007f9"), Attrs([]), + Int(1,1), Direct(Tid(1_282, "%00000502")))])), Blk(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x8FC")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_072, "%00000430"), Attrs([Attr("address","0x8FC"), +Jmps([Call(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x8FC"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_387, "%0000056b"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_393, "%00000571"), Attrs([Attr("address","0x8F4"), +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_398, "%00000576"), Attrs([Attr("address","0x8F8"), +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_186, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x990")]), "frame_dummy", Args([Arg(Tid(2_253, "%000008cd"), +Sub(Tid(2_042, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x990")]), "frame_dummy", Args([Arg(Tid(2_066, "%00000812"), 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_248, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_170, "@frame_dummy"), Attrs([Attr("address","0x990")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x990"), +Jmps([Call(Tid(1_172, "%00000494"), Attrs([Attr("address","0x990"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_193, "@register_tm_clones")),))]))])), Sub(Tid(2_187, "@free"), +(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_254, "%000008ce"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_067, "%00000813"), 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(807, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x7A0"), +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_896, "%00000768"), Attrs([Attr("address","0x7A4"), +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_903, "%0000076f"), Attrs([Attr("address","0x7A8"), +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_908, "%00000774"), +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_188, "@main"), +(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_255, "%000008cf"), +Attr("address","0x7C0")]), "main", Args([Arg(Tid(2_068, "%00000814"), 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_256, "%000008d0"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_069, "%00000815"), 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_257, "%000008d1"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_070, "%00000816"), 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(556, "@main"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(563, "%00000233"), +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("#9",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#1",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(568, "%00000238"), Attrs([Attr("address","0x7C0"), +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("#9",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(573, "%0000023d"), Attrs([Attr("address","0x7C0"), +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("#9",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(577, "%00000241"), Attrs([Attr("address","0x7C0"), +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("#9",Imm(64))), Def(Tid(583, "%00000247"), +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(590, "%0000024e"), + 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(598, "%00000256"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(590, "%0000024e"), Attrs([Attr("address","0x7CC"), Attr("insn","stp x19, x20, [sp, #0x10]")]), - Var("#14",Imm(64)), PLUS(Var("R31",Imm(64)),Int(16,64))), -Def(Tid(603, "%0000025b"), Attrs([Attr("address","0x7CC"), + 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("#14",Imm(64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(608, "%00000260"), Attrs([Attr("address","0x7CC"), +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("#14",Imm(64)),Int(8,64)),Var("R20",Imm(64)),LittleEndian(),64)), -Def(Tid(614, "%00000266"), Attrs([Attr("address","0x7D0"), +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(622, "%0000026e"), Attrs([Attr("address","0x7D4"), +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(627, "%00000273"), Attrs([Attr("address","0x7D8"), +Def(Tid(620, "%0000026c"), Attrs([Attr("address","0x7D8"), Attr("insn","bl #-0x88")]), Var("R30",Imm(64)), Int(2012,64))]), -Jmps([Call(Tid(630, "%00000276"), Attrs([Attr("address","0x7D8"), +Jmps([Call(Tid(623, "%0000026f"), Attrs([Attr("address","0x7D8"), Attr("insn","bl #-0x88")]), Int(1,1), -(Direct(Tid(2_189, "@malloc")),Direct(Tid(632, "%00000278"))))])), -Blk(Tid(632, "%00000278"), Attrs([Attr("address","0x7DC")]), Phis([]), -Defs([Def(Tid(636, "%0000027c"), Attrs([Attr("address","0x7DC"), +(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(643, "%00000283"), Attrs([Attr("address","0x7E0"), +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(651, "%0000028b"), +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(659, "%00000293"), + 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(667, "%0000029b"), + 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(672, "%000002a0"), Attrs([Attr("address","0x7F0"), +Def(Tid(659, "%00000293"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0xd0")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(675, "%000002a3"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(662, "%00000296"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0xd0")]), Int(1,1), -(Direct(Tid(2_196, "@strlen")),Direct(Tid(677, "%000002a5"))))])), -Blk(Tid(677, "%000002a5"), Attrs([Attr("address","0x7F4")]), Phis([]), -Defs([Def(Tid(683, "%000002ab"), Attrs([Attr("address","0x7F4"), +(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(691, "%000002b3"), Attrs([Attr("address","0x7F8"), +Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x7F8"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(699, "%000002bb"), Attrs([Attr("address","0x7FC"), +Def(Tid(680, "%000002a8"), Attrs([Attr("address","0x7FC"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(704, "%000002c0"), Attrs([Attr("address","0x800"), +Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x800"), Attr("insn","bl #-0xf0")]), Var("R30",Imm(64)), Int(2052,64))]), -Jmps([Call(Tid(707, "%000002c3"), Attrs([Attr("address","0x800"), +Jmps([Call(Tid(688, "%000002b0"), Attrs([Attr("address","0x800"), Attr("insn","bl #-0xf0")]), Int(1,1), -(Direct(Tid(2_190, "@memcpy")),Direct(Tid(709, "%000002c5"))))])), -Blk(Tid(709, "%000002c5"), Attrs([Attr("address","0x804")]), Phis([]), -Defs([Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x804"), +(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(720, "%000002d0"), Attrs([Attr("address","0x808"), +Def(Tid(699, "%000002bb"), Attrs([Attr("address","0x808"), Attr("insn","bl #-0x78")]), Var("R30",Imm(64)), Int(2060,64))]), -Jmps([Call(Tid(723, "%000002d3"), Attrs([Attr("address","0x808"), +Jmps([Call(Tid(702, "%000002be"), Attrs([Attr("address","0x808"), Attr("insn","bl #-0x78")]), Int(1,1), -(Direct(Tid(2_192, "@puts")),Direct(Tid(725, "%000002d5"))))])), -Blk(Tid(725, "%000002d5"), Attrs([Attr("address","0x80C")]), Phis([]), -Defs([Def(Tid(731, "%000002db"), Attrs([Attr("address","0x80C"), +(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(739, "%000002e3"), Attrs([Attr("address","0x810"), +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),BigEndian(),8)), -Def(Tid(747, "%000002eb"), Attrs([Attr("address","0x814"), +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(755, "%000002f3"), Attrs([Attr("address","0x818"), +Def(Tid(729, "%000002d9"), Attrs([Attr("address","0x818"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(760, "%000002f8"), Attrs([Attr("address","0x81C"), +Def(Tid(734, "%000002de"), Attrs([Attr("address","0x81C"), Attr("insn","bl #-0xfc")]), Var("R30",Imm(64)), Int(2080,64))]), -Jmps([Call(Tid(762, "%000002fa"), Attrs([Attr("address","0x81C"), +Jmps([Call(Tid(736, "%000002e0"), Attrs([Attr("address","0x81C"), Attr("insn","bl #-0xfc")]), Int(1,1), -(Direct(Tid(2_196, "@strlen")),Direct(Tid(764, "%000002fc"))))])), -Blk(Tid(764, "%000002fc"), Attrs([Attr("address","0x820")]), Phis([]), -Defs([Def(Tid(769, "%00000301"), Attrs([Attr("address","0x820"), +(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(777, "%00000309"), Attrs([Attr("address","0x824"), +Def(Tid(747, "%000002eb"), Attrs([Attr("address","0x824"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(785, "%00000311"), Attrs([Attr("address","0x828"), +Def(Tid(753, "%000002f1"), Attrs([Attr("address","0x828"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(790, "%00000316"), Attrs([Attr("address","0x82C"), +Def(Tid(758, "%000002f6"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xcc")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(793, "%00000319"), Attrs([Attr("address","0x82C"), +Jmps([Call(Tid(761, "%000002f9"), Attrs([Attr("address","0x82C"), Attr("insn","bl #-0xcc")]), Int(1,1), -(Direct(Tid(2_191, "@memset")),Direct(Tid(795, "%0000031b"))))])), -Blk(Tid(795, "%0000031b"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(801, "%00000321"), Attrs([Attr("address","0x830"), +(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(806, "%00000326"), Attrs([Attr("address","0x834"), +Def(Tid(773, "%00000305"), Attrs([Attr("address","0x834"), Attr("insn","bl #-0x94")]), Var("R30",Imm(64)), Int(2104,64))]), -Jmps([Call(Tid(809, "%00000329"), Attrs([Attr("address","0x834"), +Jmps([Call(Tid(776, "%00000308"), Attrs([Attr("address","0x834"), Attr("insn","bl #-0x94")]), Int(1,1), -(Direct(Tid(2_187, "@free")),Direct(Tid(811, "%0000032b"))))])), -Blk(Tid(811, "%0000032b"), Attrs([Attr("address","0x838")]), Phis([]), -Defs([Def(Tid(818, "%00000332"), Attrs([Attr("address","0x838"), -Attr("insn","ldp x19, x20, [sp, #0x10]")]), Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(822, "%00000336"), Attrs([Attr("address","0x838"), +(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("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(829, "%0000033d"), Attrs([Attr("address","0x83C"), +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(837, "%00000345"), Attrs([Attr("address","0x840"), +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(847, "%0000034f"), Attrs([Attr("address","0x844"), +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(851, "%00000353"), Attrs([Attr("address","0x844"), +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(854, "%00000356"), Attrs([Attr("address","0x844"), +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(859, "%0000035b"), +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_189, "@malloc"), +(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_258, "%000008d2"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_071, "%00000817"), 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_259, "%000008d3"), +Var("R0",Imm(64)), In()), Arg(Tid(2_072, "%00000818"), 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(628, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_763, "%000006e3"), Attrs([Attr("address","0x750"), +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_771, "%000006eb"), Attrs([Attr("address","0x754"), +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_778, "%000006f2"), Attrs([Attr("address","0x758"), +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_783, "%000006f7"), +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_190, "@memcpy"), +(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_260, "%000008d4"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_073, "%00000819"), 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_261, "%000008d5"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_074, "%0000081a"), 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_262, "%000008d6"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_075, "%0000081b"), 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_263, "%000008d7"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_076, "%0000081c"), 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(705, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_663, "%0000067f"), Attrs([Attr("address","0x710"), +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_671, "%00000687"), Attrs([Attr("address","0x714"), +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_678, "%0000068e"), Attrs([Attr("address","0x718"), +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_683, "%00000693"), +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_191, "@memset"), +(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_264, "%000008d8"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_077, "%0000081d"), 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_265, "%000008d9"), +Both()), Arg(Tid(2_078, "%0000081e"), 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_266, "%000008da"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_079, "%0000081f"), 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_267, "%000008db"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_080, "%00000820"), 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(791, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_788, "%000006fc"), Attrs([Attr("address","0x760"), +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_796, "%00000704"), Attrs([Attr("address","0x764"), +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_803, "%0000070b"), Attrs([Attr("address","0x768"), +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_808, "%00000710"), +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_192, "@puts"), +(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_268, "%000008dc"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_081, "%00000821"), 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_269, "%000008dd"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_082, "%00000822"), 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(721, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_863, "%00000747"), Attrs([Attr("address","0x790"), +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_871, "%0000074f"), Attrs([Attr("address","0x794"), +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_878, "%00000756"), Attrs([Attr("address","0x798"), +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_883, "%0000075b"), +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_193, "@register_tm_clones"), +Sub(Tid(2_049, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), - "register_tm_clones", Args([Arg(Tid(2_270, "%000008de"), + "register_tm_clones", Args([Arg(Tid(2_083, "%00000823"), 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_074, "@register_tm_clones"), +Blks([Blk(Tid(1_021, "@register_tm_clones"), Attrs([Attr("address","0x900")]), Phis([]), -Defs([Def(Tid(1_078, "%00000436"), Attrs([Attr("address","0x900"), +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_085, "%0000043d"), Attrs([Attr("address","0x904"), +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_091, "%00000443"), +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_098, "%0000044a"), + 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_106, "%00000452"), Attrs([Attr("address","0x910"), +Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x910"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(1_113, "%00000459"), - Attrs([Attr("address","0x914"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x918"), +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,64)))), -Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x91C"), +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)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(1_140, "%00000474"), - Attrs([Attr("address","0x920"), Attr("insn","cbz x1, #0x18")]), - Var("#73",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x920"), -Attr("insn","cbz x1, #0x18")]), Var("#73",Imm(1)), -Direct(Tid(1_132, "%0000046c"))), Goto(Tid(2_238, "%000008be"), Attrs([]), - Int(1,1), Direct(Tid(1_322, "%0000052a")))])), Blk(Tid(1_322, "%0000052a"), +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_050, "%00000802"), Attrs([]), + Int(1,1), Direct(Tid(1_233, "%000004d1")))])), Blk(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_326, "%0000052e"), Attrs([Attr("address","0x924"), +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_334, "%00000536"), Attrs([Attr("address","0x928"), +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)), -Def(Tid(1_345, "%00000541"), Attrs([Attr("address","0x92C"), -Attr("insn","cbz x2, #0xc")]), Var("#86",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_339, "%0000053b"), - Attrs([Attr("address","0x92C"), Attr("insn","cbz x2, #0xc")]), - Var("#86",Imm(1)), Direct(Tid(1_132, "%0000046c"))), -Goto(Tid(2_239, "%000008bf"), Attrs([]), Int(1,1), -Direct(Tid(1_348, "%00000544")))])), Blk(Tid(1_132, "%0000046c"), +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_051, "%00000803"), Attrs([]), + Int(1,1), Direct(Tid(1_252, "%000004e4")))])), Blk(Tid(1_071, "%0000042f"), Attrs([Attr("address","0x938")]), Phis([]), Defs([]), -Jmps([Call(Tid(1_145, "%00000479"), Attrs([Attr("address","0x938"), +Jmps([Call(Tid(1_079, "%00000437"), Attrs([Attr("address","0x938"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_348, "%00000544"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x930"), +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_359, "%0000054f"), Attrs([Attr("address","0x934"), +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_196, "@strlen"), +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_271, "%000008df"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_084, "%00000824"), 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_272, "%000008e0"), +In()), Arg(Tid(2_085, "%00000825"), 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(673, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(660, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x720"), +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_696, "%000006a0"), Attrs([Attr("address","0x724"), +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_703, "%000006a7"), Attrs([Attr("address","0x728"), +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_708, "%000006ac"), +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 index 638192f98..0c57e6945 100644 --- 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 @@ -1,357 +1,350 @@ -000008c0: program -00000879: sub __cxa_finalize(__cxa_finalize_result) -000008c1: __cxa_finalize_result :: out u32 = low:32[R0] - -00000526: -000006ca: R16 := 0x20000 -000006d2: R17 := mem[R16 + 0x18, el]:u64 -000006d9: R16 := R16 + 0x18 -000006de: call R17 with noreturn - -0000087a: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008c2: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -0000047d: -00000484: #77 := R31 - 0x20 -00000489: mem := mem with [#77, el]:u64 <- R29 -0000048e: mem := mem with [#77 + 8, el]:u64 <- R30 -00000492: R31 := #77 -00000499: R29 := R31 -000004a1: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000004a7: R19 := 0x20000 -000004b0: R0 := pad:32[mem[R19 + 0x70]] -000004bc: #79 := ~~0:0[R0] -000004b6: when #79 goto %000004b4 -000008b6: goto %000004e4 - -000004e4: -000004e8: R0 := 0x1F000 -000004f0: R0 := mem[R0 + 0xFC8, el]:u64 -000004fc: #83 := R0 = 0 -000004f6: when #83 goto %000004f4 -000008b7: goto %00000514 - -00000514: -00000518: R0 := 0x20000 -00000520: R0 := mem[R0 + 0x58, el]:u64 -00000525: R30 := 0x970 -00000528: call @__cxa_finalize with return %000004f4 - -000004f4: -00000501: R30 := 0x974 -00000503: call @deregister_tm_clones with return %00000505 - -00000505: -0000050a: R0 := 1 -00000512: mem := mem with [R19 + 0x70] <- low:8[31:0[R0]] -000008b8: goto %000004b4 - -000004b4: -000004c4: R19 := mem[R31 + 0x10, el]:u64 -000004ce: R29 := mem[R31, el]:u64 -000004d2: R30 := mem[R31 + 8, el]:u64 -000004d5: R31 := R31 + 0x20 -000004da: call R30 with noreturn - -0000087e: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008c3: __libc_start_main_main :: in u64 = R0 -000008c4: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008c5: __libc_start_main_arg3 :: in out u64 = R2 -000008c6: __libc_start_main_auxv :: in out u64 = R3 -000008c7: __libc_start_main_result :: out u32 = low:32[R0] - -000003c1: -000006b1: R16 := 0x20000 -000006b9: R17 := mem[R16 + 0x10, el]:u64 -000006c0: R16 := R16 + 0x10 -000006c5: call R17 with noreturn - -0000087f: sub _fini(_fini_result) -000008c8: _fini_result :: out u32 = low:32[R0] +00000805: program +000007e9: sub __cxa_finalize(__cxa_finalize_result) +00000806: __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) +00000807: __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 +000007eb: goto %00000496 + +00000496: +00000499: R0 := 0x1F000 +000004a0: R0 := mem[R0 + 0xFC8, el]:u64 +000004a6: when R0 = 0 goto %000004a4 +000007ec: 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] +000007ed: 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) +00000808: __libc_start_main_main :: in u64 = R0 +00000809: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000080a: __libc_start_main_arg3 :: in out u64 = R2 +0000080b: __libc_start_main_auxv :: in out u64 = R3 +0000080c: __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) +0000080d: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -00000880: sub _init(_init_result) -000008c9: _init_result :: out u32 = low:32[R0] - -00000790: -00000799: #114 := R31 - 0x10 -0000079e: mem := mem with [#114, el]:u64 <- R29 -000007a3: mem := mem with [#114 + 8, el]:u64 <- R30 -000007a7: R31 := #114 -000007ae: R29 := R31 -000007b3: R30 := 0x6E8 -000007b5: call @call_weak_fn with return %000007b7 - -000007b7: -000007bf: R29 := mem[R31, el]:u64 -000007c3: R30 := mem[R31 + 8, el]:u64 -000007c6: R31 := R31 + 0x10 -000007cb: call R30 with noreturn - -00000881: sub _start(_start_result) -000008ca: _start_result :: out u32 = low:32[R0] - -00000377: -0000037d: R29 := 0 -00000383: R30 := 0 -0000038b: R5 := R0 -00000393: R1 := mem[R31, el]:u64 -0000039a: R2 := R31 + 8 -000003a1: R6 := R31 -000003a7: R0 := 0x1F000 -000003af: R0 := mem[R0 + 0xFD8, el]:u64 -000003b5: R3 := 0 -000003bb: R4 := 0 -000003c0: R30 := 0x8B0 -000003c3: call @__libc_start_main with return %000003c5 - -000003c5: -000003c8: R30 := 0x8B4 -000003cb: call @abort with return %000008b9 - -000008b9: -000008ba: call @call_weak_fn with noreturn - -00000884: sub abort() - - -000003c9: -0000072e: R16 := 0x20000 -00000736: R17 := mem[R16 + 0x38, el]:u64 -0000073d: R16 := R16 + 0x38 -00000742: call R17 with noreturn - -00000885: sub call_weak_fn(call_weak_fn_result) -000008cb: call_weak_fn_result :: out u32 = low:32[R0] - -000003cd: -000003d1: R0 := 0x1F000 -000003d9: R0 := mem[R0 + 0xFD0, el]:u64 -000003e5: #55 := R0 = 0 -000003df: when #55 goto %000003dd -000008bb: goto %00000578 - -000003dd: -000003ea: call R30 with noreturn - -00000578: -0000057b: goto @__gmon_start__ - -00000579: -00000715: R16 := 0x20000 -0000071d: R17 := mem[R16 + 0x30, el]:u64 -00000724: R16 := R16 + 0x30 -00000729: call R17 with noreturn - -00000887: sub deregister_tm_clones(deregister_tm_clones_result) -000008cc: deregister_tm_clones_result :: out u32 = low:32[R0] - -000003f0: -000003f4: R0 := 0x20000 -000003fb: R0 := R0 + 0x70 -00000401: R1 := 0x20000 -00000408: R1 := R1 + 0x70 -00000410: #59 := 1 + ~R0 + R1 -00000414: NF := 63:63[#59] -00000417: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#59] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#59] -0000041a: ZF := #59 = 0 -0000041d: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#59] | 63:63[R1] - & ~63:63[#59] -0000042b: #64 := ZF -00000425: when #64 goto %00000423 -000008bc: goto %00000551 - -00000551: -00000555: R1 := 0x1F000 -0000055d: R1 := mem[R1 + 0xFC0, el]:u64 -00000568: #91 := R1 = 0 -00000562: when #91 goto %00000423 -000008bd: goto %0000056b - -00000423: -00000430: call R30 with noreturn - -0000056b: -00000571: R16 := R1 -00000576: call R16 with noreturn - -0000088a: sub frame_dummy(frame_dummy_result) -000008cd: frame_dummy_result :: out u32 = low:32[R0] - -000004e0: -000004e2: call @register_tm_clones with noreturn - -0000088b: sub free(free_ptr) -000008ce: free_ptr :: in out u64 = R0 - -00000327: -00000760: R16 := 0x20000 -00000768: R17 := mem[R16 + 0x48, el]:u64 -0000076f: R16 := R16 + 0x48 -00000774: call R17 with noreturn - -0000088c: sub main(main_argc, main_argv, main_result) -000008cf: main_argc :: in u32 = low:32[R0] -000008d0: main_argv :: in out u64 = R1 -000008d1: main_result :: out u32 = low:32[R0] - -0000022c: -00000233: #9 := R31 - 0x30 -00000238: mem := mem with [#9, el]:u64 <- R29 -0000023d: mem := mem with [#9 + 8, el]:u64 <- R30 -00000241: R31 := #9 -00000247: R0 := 0xB -0000024e: R29 := R31 -00000256: #14 := R31 + 0x10 -0000025b: mem := mem with [#14, el]:u64 <- R19 -00000260: mem := mem with [#14 + 8, el]:u64 <- R20 -00000266: R20 := 0x20000 -0000026e: mem := mem with [R31 + 0x20, el]:u64 <- R21 -00000273: R30 := 0x7DC -00000276: call @malloc with return %00000278 - -00000278: -0000027c: R21 := 0x20000 -00000283: R21 := R21 + 0x60 -0000028b: R19 := R0 -00000293: R0 := R21 -0000029b: mem := mem with [R20 + 0x78, el]:u64 <- R19 -000002a0: R30 := 0x7F4 -000002a3: call @strlen with return %000002a5 - -000002a5: -000002ab: R1 := R21 -000002b3: R2 := R0 -000002bb: R0 := R19 -000002c0: R30 := 0x804 -000002c3: call @memcpy with return %000002c5 - -000002c5: -000002cb: R0 := R19 -000002d0: R30 := 0x80C -000002d3: call @puts with return %000002d5 - -000002d5: -000002db: R0 := mem[R20 + 0x78, el]:u64 -000002e3: mem := mem with [R0 + 4] <- 0 -000002eb: R19 := mem[R20 + 0x78, el]:u64 -000002f3: R0 := R19 -000002f8: R30 := 0x820 -000002fa: call @strlen with return %000002fc - -000002fc: -00000301: R1 := 1 -00000309: R2 := R0 -00000311: R0 := R19 -00000316: R30 := 0x830 -00000319: call @memset with return %0000031b - -0000031b: -00000321: R0 := mem[R20 + 0x78, el]:u64 -00000326: R30 := 0x838 -00000329: call @free with return %0000032b - -0000032b: -00000332: R19 := mem[R31 + 0x10, el]:u64 -00000336: R20 := mem[R31 + 0x18, el]:u64 -0000033d: R0 := 0 -00000345: R21 := mem[R31 + 0x20, el]:u64 -0000034f: R29 := mem[R31, el]:u64 -00000353: R30 := mem[R31 + 8, el]:u64 -00000356: R31 := R31 + 0x30 -0000035b: call R30 with noreturn - -0000088d: sub malloc(malloc_size, malloc_result) -000008d2: malloc_size :: in u64 = R0 -000008d3: malloc_result :: out u64 = R0 - -00000274: -000006e3: R16 := 0x20000 -000006eb: R17 := mem[R16 + 0x20, el]:u64 -000006f2: R16 := R16 + 0x20 -000006f7: call R17 with noreturn - -0000088e: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008d4: memcpy_dst :: in out u64 = R0 -000008d5: memcpy_src :: in out u64 = R1 -000008d6: memcpy_n :: in u64 = R2 -000008d7: memcpy_result :: out u64 = R0 - -000002c1: -0000067f: R16 := 0x20000 -00000687: R17 := mem[R16, el]:u64 -0000068e: R16 := R16 -00000693: call R17 with noreturn - -0000088f: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008d8: memset_buf :: in out u64 = R0 -000008d9: memset_c :: in u32 = low:32[R1] -000008da: memset_n :: in u64 = R2 -000008db: memset_result :: out u64 = R0 - -00000317: -000006fc: R16 := 0x20000 -00000704: R17 := mem[R16 + 0x28, el]:u64 -0000070b: R16 := R16 + 0x28 -00000710: call R17 with noreturn - -00000890: sub puts(puts_s, puts_result) -000008dc: puts_s :: in u64 = R0 -000008dd: puts_result :: out u32 = low:32[R0] - -000002d1: -00000747: R16 := 0x20000 -0000074f: R17 := mem[R16 + 0x40, el]:u64 -00000756: R16 := R16 + 0x40 -0000075b: call R17 with noreturn - -00000891: sub register_tm_clones(register_tm_clones_result) -000008de: register_tm_clones_result :: out u32 = low:32[R0] - -00000432: -00000436: R0 := 0x20000 -0000043d: R0 := R0 + 0x70 -00000443: R1 := 0x20000 -0000044a: R1 := R1 + 0x70 -00000452: R1 := R1 - R0 -00000459: R2 := R1 >> 0x3F -00000461: R1 := R2 + (R1 ~>> 3) -00000468: R1 := R1 >> 1 -00000474: #73 := R1 = 0 -0000046e: when #73 goto %0000046c -000008be: goto %0000052a - -0000052a: -0000052e: R2 := 0x1F000 -00000536: R2 := mem[R2 + 0xFE0, el]:u64 -00000541: #86 := R2 = 0 -0000053b: when #86 goto %0000046c -000008bf: goto %00000544 - -0000046c: -00000479: call R30 with noreturn - -00000544: -0000054a: R16 := R2 -0000054f: call R16 with noreturn - -00000894: sub strlen(strlen_s, strlen_result) -000008df: strlen_s :: in u64 = R0 -000008e0: strlen_result :: out u64 = R0 - -000002a1: -00000698: R16 := 0x20000 -000006a0: R17 := mem[R16 + 8, el]:u64 -000006a7: R16 := R16 + 8 -000006ac: call R17 with noreturn +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) +0000080e: _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) +0000080f: _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 %000007f2 + +000007f2: +000007f3: 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) +00000810: 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 +000007f6: 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) +00000811: 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 +000007f8: goto %000004ef + +000004ef: +000004f2: R1 := 0x1F000 +000004f9: R1 := mem[R1 + 0xFC0, el]:u64 +000004fe: when R1 = 0 goto %000003f3 +000007f9: goto %00000502 + +000003f3: +000003fb: call R30 with noreturn + +00000502: +00000506: R16 := R1 +0000050b: call R16 with noreturn + +000007fa: sub frame_dummy(frame_dummy_result) +00000812: frame_dummy_result :: out u32 = low:32[R0] + +00000492: +00000494: call @register_tm_clones with noreturn + +000007fb: sub free(free_ptr) +00000813: 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) +00000814: main_argc :: in u32 = low:32[R0] +00000815: main_argv :: in out u64 = R1 +00000816: 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) +00000817: malloc_size :: in u64 = R0 +00000818: 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) +00000819: memcpy_dst :: in out u64 = R0 +0000081a: memcpy_src :: in out u64 = R1 +0000081b: memcpy_n :: in u64 = R2 +0000081c: 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) +0000081d: memset_buf :: in out u64 = R0 +0000081e: memset_c :: in u32 = low:32[R1] +0000081f: memset_n :: in u64 = R2 +00000820: 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) +00000821: puts_s :: in u64 = R0 +00000822: 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) +00000823: 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 +00000802: goto %000004d1 + +000004d1: +000004d4: R2 := 0x1F000 +000004db: R2 := mem[R2 + 0xFE0, el]:u64 +000004e0: when R2 = 0 goto %0000042f +00000803: goto %000004e4 + +0000042f: +00000437: call R30 with noreturn + +000004e4: +000004e8: R16 := R2 +000004ed: call R16 with noreturn + +00000804: sub strlen(strlen_s, strlen_result) +00000824: strlen_s :: in u64 = R0 +00000825: 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt index 25875fa16..35a8fa0a3 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt @@ -67,731 +67,714 @@ Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), Annotation(Region(0x7C0,0x9A3), Attr("section","\".text\"")), Annotation(Region(0x7C0,0x9A3), Attr("code-region","()")), Annotation(Region(0x9A4,0x9B7), Attr("code-region","()"))]), -Program(Tid(2_332, "%0000091c"), Attrs([]), - Subs([Sub(Tid(2_261, "@__cxa_finalize"), +Program(Tid(2_171, "%0000087b"), Attrs([]), + Subs([Sub(Tid(2_100, "@__cxa_finalize"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_333, "%0000091d"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_172, "%0000087c"), 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_406, "@__cxa_finalize"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_300, "@__cxa_finalize"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x740"), +Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x740"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_834, "%0000072a"), Attrs([Attr("address","0x744"), +Def(Tid(1_695, "%0000069f"), 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_841, "%00000731"), Attrs([Attr("address","0x748"), +Def(Tid(1_701, "%000006a5"), 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_846, "%00000736"), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_706, "%000006aa"), Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_262, "@__do_global_dtors_aux"), +Sub(Tid(2_101, "@__do_global_dtors_aux"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_334, "%0000091e"), + "__do_global_dtors_aux", Args([Arg(Tid(2_173, "%0000087d"), 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(834, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(841, "%00000349"), +Blks([Blk(Tid(799, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(803, "%00000323"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(846, "%0000034e"), Attrs([Attr("address","0x880"), +Def(Tid(809, "%00000329"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(851, "%00000353"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(855, "%00000357"), Attrs([Attr("address","0x880"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(819, "%00000333"), Attrs([Attr("address","0x880"), Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(862, "%0000035e"), +Var("#3",Imm(64))), Def(Tid(825, "%00000339"), Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(870, "%00000366"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(833, "%00000341"), Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x88C"), +Def(Tid(838, "%00000346"), Attrs([Attr("address","0x88C"), Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(885, "%00000375"), Attrs([Attr("address","0x890"), +Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x890"), Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), -Def(Tid(897, "%00000381"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(891, "%0000037b"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(889, "%00000379"))), Goto(Tid(2_322, "%00000912"), Attrs([]), - Int(1,1), Direct(Tid(1_340, "%0000053c")))])), Blk(Tid(1_340, "%0000053c"), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(849, "%00000351"))), +Goto(Tid(2_161, "%00000871"), Attrs([]), Int(1,1), +Direct(Tid(1_245, "%000004dd")))])), Blk(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x898"), +Defs([Def(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x898"), Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_352, "%00000548"), Attrs([Attr("address","0x89C"), +Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x89C"), Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), -Def(Tid(1_364, "%00000554"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), Var("#69",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_358, "%0000054e"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), - Var("#69",Imm(1)), Direct(Tid(1_356, "%0000054c"))), -Goto(Tid(2_323, "%00000913"), Attrs([]), Int(1,1), -Direct(Tid(1_388, "%0000056c")))])), Blk(Tid(1_388, "%0000056c"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_259, "%000004eb"))), Goto(Tid(2_162, "%00000872"), Attrs([]), + Int(1,1), Direct(Tid(1_284, "%00000504")))])), Blk(Tid(1_284, "%00000504"), Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_392, "%00000570"), Attrs([Attr("address","0x8A4"), +Defs([Def(Tid(1_287, "%00000507"), Attrs([Attr("address","0x8A4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_400, "%00000578"), Attrs([Attr("address","0x8A8"), +Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x8A8"), Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_405, "%0000057d"), Attrs([Attr("address","0x8AC"), +Def(Tid(1_299, "%00000513"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_408, "%00000580"), Attrs([Attr("address","0x8AC"), +Jmps([Call(Tid(1_302, "%00000516"), Attrs([Attr("address","0x8AC"), Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_261, "@__cxa_finalize")),Direct(Tid(1_356, "%0000054c"))))])), -Blk(Tid(1_356, "%0000054c"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_369, "%00000559"), Attrs([Attr("address","0x8B0"), +(Direct(Tid(2_100, "@__cxa_finalize")),Direct(Tid(1_259, "%000004eb"))))])), +Blk(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_267, "%000004f3"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x8B0"), +Jmps([Call(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x8B0"), Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_275, "@deregister_tm_clones")),Direct(Tid(1_373, "%0000055d"))))])), -Blk(Tid(1_373, "%0000055d"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_378, "%00000562"), Attrs([Attr("address","0x8B4"), +(Direct(Tid(2_114, "@deregister_tm_clones")),Direct(Tid(1_271, "%000004f7"))))])), +Blk(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x8B4"), Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_386, "%0000056a"), Attrs([Attr("address","0x8B8"), +Def(Tid(1_282, "%00000502"), Attrs([Attr("address","0x8B8"), Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_324, "%00000914"), Attrs([]), Int(1,1), -Direct(Tid(889, "%00000379")))])), Blk(Tid(889, "%00000379"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(905, "%00000389"), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_163, "%00000873"), Attrs([]), Int(1,1), +Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(859, "%0000035b"), Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(915, "%00000393"), Attrs([Attr("address","0x8C0"), +Def(Tid(866, "%00000362"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(919, "%00000397"), Attrs([Attr("address","0x8C0"), +Def(Tid(871, "%00000367"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(922, "%0000039a"), Attrs([Attr("address","0x8C0"), +Def(Tid(875, "%0000036b"), Attrs([Attr("address","0x8C0"), Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(927, "%0000039f"), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(880, "%00000370"), Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_266, "@__libc_start_main"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_105, "@__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_335, "%0000091f"), + Args([Arg(Tid(2_174, "%0000087e"), 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_336, "%00000920"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_175, "%0000087f"), 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_337, "%00000921"), Attrs([Attr("c.layout","**[char : 8]"), +Arg(Tid(2_176, "%00000880"), 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_338, "%00000922"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_177, "%00000881"), 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_339, "%00000923"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_178, "%00000882"), 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(646, "@__libc_start_main"), +Out())]), Blks([Blk(Tid(632, "@__libc_start_main"), Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x730"), +Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x730"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_809, "%00000711"), Attrs([Attr("address","0x734"), +Def(Tid(1_673, "%00000689"), 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_816, "%00000718"), Attrs([Attr("address","0x738"), +Def(Tid(1_679, "%0000068f"), 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_821, "%0000071d"), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_684, "%00000694"), Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_267, "@_fini"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_106, "@_fini"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A4")]), - "_fini", Args([Arg(Tid(2_340, "%00000924"), + "_fini", Args([Arg(Tid(2_179, "%00000883"), 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","0x9A4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), + Attrs([Attr("address","0x9A4")]), Phis([]), Defs([Def(Tid(38, "%00000026"), Attrs([Attr("address","0x9A8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9A8"), +Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x9A8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9A8"), +Store(Var("mem",Mem(64,8)),Var("#0",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(50, "%00000032"), Attrs([Attr("address","0x9A8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9A8"), +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","0x9A8"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9AC"), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9AC"), Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9B0"), +Def(Tid(67, "%00000043"), 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(76, "%0000004c"), Attrs([Attr("address","0x9B0"), +Def(Tid(72, "%00000048"), 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(79, "%0000004f"), Attrs([Attr("address","0x9B0"), +Def(Tid(76, "%0000004c"), 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(84, "%00000054"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), Attrs([Attr("address","0x9B4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_268, "@_init"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_107, "@_init"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_341, "%00000925"), + "_init", Args([Arg(Tid(2_180, "%00000884"), 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(2_024, "@_init"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_866, "@_init"), Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(2_033, "%000007f1"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#100",Imm(64)), +Defs([Def(Tid(1_872, "%00000750"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(2_038, "%000007f6"), Attrs([Attr("address","0x6DC"), +Def(Tid(1_878, "%00000756"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#100",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(2_043, "%000007fb"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#100",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x6DC"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x6DC"), Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#100",Imm(64))), Def(Tid(2_054, "%00000806"), +Var("#6",Imm(64))), Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_059, "%0000080b"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_899, "%0000076b"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(2_061, "%0000080d"), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_273, "@call_weak_fn")),Direct(Tid(2_063, "%0000080f"))))])), -Blk(Tid(2_063, "%0000080f"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(2_071, "%00000817"), Attrs([Attr("address","0x6E8"), +(Direct(Tid(2_112, "@call_weak_fn")),Direct(Tid(1_903, "%0000076f"))))])), +Blk(Tid(1_903, "%0000076f"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_908, "%00000774"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(2_075, "%0000081b"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_913, "%00000779"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(2_078, "%0000081e"), Attrs([Attr("address","0x6E8"), +Def(Tid(1_917, "%0000077d"), Attrs([Attr("address","0x6E8"), Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_083, "%00000823"), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_922, "%00000782"), Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_269, "@_start"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_108, "@_start"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_342, "%00000926"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_181, "%00000885"), 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(572, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(578, "%00000242"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(569, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(574, "%0000023e"), Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(579, "%00000243"), Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(592, "%00000250"), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(585, "%00000249"), Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(600, "%00000258"), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x7D4"), +Def(Tid(598, "%00000256"), Attrs([Attr("address","0x7D4"), Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(614, "%00000266"), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(604, "%0000025c"), Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(620, "%0000026c"), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(609, "%00000261"), Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(628, "%00000274"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(616, "%00000268"), Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x7E4"), +Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x7E4"), Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(640, "%00000280"), Attrs([Attr("address","0x7E8"), +Def(Tid(626, "%00000272"), Attrs([Attr("address","0x7E8"), Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(645, "%00000285"), Attrs([Attr("address","0x7EC"), +Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x7EC"), +Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7EC"), Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_266, "@__libc_start_main")),Direct(Tid(650, "%0000028a"))))])), -Blk(Tid(650, "%0000028a"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x7F0"), +(Direct(Tid(2_105, "@__libc_start_main")),Direct(Tid(636, "%0000027c"))))])), +Blk(Tid(636, "%0000027c"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(656, "%00000290"), Attrs([Attr("address","0x7F0"), +Jmps([Call(Tid(642, "%00000282"), Attrs([Attr("address","0x7F0"), Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_272, "@abort")),Direct(Tid(2_325, "%00000915"))))])), -Blk(Tid(2_325, "%00000915"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_326, "%00000916"), Attrs([]), Int(1,1), -(Direct(Tid(2_273, "@call_weak_fn")),))]))])), Sub(Tid(2_272, "@abort"), +(Direct(Tid(2_111, "@abort")),Direct(Tid(2_164, "%00000874"))))])), +Blk(Tid(2_164, "%00000874"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_165, "%00000875"), Attrs([]), Int(1,1), +(Direct(Tid(2_112, "@call_weak_fn")),))]))])), Sub(Tid(2_111, "@abort"), Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(654, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x780"), +Blks([Blk(Tid(640, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x780"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_934, "%0000078e"), Attrs([Attr("address","0x784"), +Def(Tid(1_783, "%000006f7"), 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_941, "%00000795"), Attrs([Attr("address","0x788"), +Def(Tid(1_789, "%000006fd"), 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_946, "%0000079a"), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_794, "%00000702"), Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_273, "@call_weak_fn"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_112, "@call_weak_fn"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_343, "%00000927"), + "call_weak_fn", Args([Arg(Tid(2_182, "%00000886"), 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(658, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(662, "%00000296"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(644, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(647, "%00000287"), Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(670, "%0000029e"), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(654, "%0000028e"), Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), -Def(Tid(682, "%000002aa"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(676, "%000002a4"), - Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(674, "%000002a2"))), -Goto(Tid(2_327, "%00000917"), Attrs([]), Int(1,1), -Direct(Tid(1_488, "%000005d0")))])), Blk(Tid(674, "%000002a2"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(660, "%00000294"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(658, "%00000292"))), Goto(Tid(2_166, "%00000876"), Attrs([]), + Int(1,1), Direct(Tid(1_364, "%00000554")))])), Blk(Tid(658, "%00000292"), Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(687, "%000002af"), Attrs([Attr("address","0x804"), +Jmps([Call(Tid(666, "%0000029a"), Attrs([Attr("address","0x804"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_488, "%000005d0"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_491, "%000005d3"), Attrs([Attr("address","0x800"), +Blk(Tid(1_364, "%00000554"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_367, "%00000557"), Attrs([Attr("address","0x800"), Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_489, "@__gmon_start__")))])), Blk(Tid(1_489, "@__gmon_start__"), +Direct(Tid(1_365, "@__gmon_start__")))])), Blk(Tid(1_365, "@__gmon_start__"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_901, "%0000076d"), Attrs([Attr("address","0x770"), +Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x770"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_909, "%00000775"), Attrs([Attr("address","0x774"), +Def(Tid(1_761, "%000006e1"), 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_916, "%0000077c"), Attrs([Attr("address","0x778"), +Def(Tid(1_767, "%000006e7"), 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_921, "%00000781"), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_772, "%000006ec"), Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_275, "@deregister_tm_clones"), +Sub(Tid(2_114, "@deregister_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_344, "%00000928"), + "deregister_tm_clones", Args([Arg(Tid(2_183, "%00000887"), 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(693, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(697, "%000002b9"), +Blks([Blk(Tid(672, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(675, "%000002a3"), Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(704, "%000002c0"), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(710, "%000002c6"), Attrs([Attr("address","0x818"), +Def(Tid(686, "%000002ae"), Attrs([Attr("address","0x818"), Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(717, "%000002cd"), Attrs([Attr("address","0x81C"), +Def(Tid(692, "%000002b4"), Attrs([Attr("address","0x81C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(725, "%000002d5"), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(698, "%000002ba"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(729, "%000002d9"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(732, "%000002dc"), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(703, "%000002bf"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(735, "%000002df"), Attrs([Attr("address","0x820"), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(719, "%000002cf"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(738, "%000002e2"), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(752, "%000002f0"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(746, "%000002ea"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(744, "%000002e8"))), Goto(Tid(2_328, "%00000918"), Attrs([]), - Int(1,1), Direct(Tid(1_449, "%000005a9")))])), Blk(Tid(1_449, "%000005a9"), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(729, "%000002d9"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(727, "%000002d7"))), Goto(Tid(2_167, "%00000877"), Attrs([]), + Int(1,1), Direct(Tid(1_334, "%00000536")))])), Blk(Tid(1_334, "%00000536"), Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_453, "%000005ad"), Attrs([Attr("address","0x828"), +Defs([Def(Tid(1_337, "%00000539"), Attrs([Attr("address","0x828"), Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_461, "%000005b5"), Attrs([Attr("address","0x82C"), +Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x82C"), Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), -Def(Tid(1_472, "%000005c0"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), Var("#77",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_466, "%000005ba"), - Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), - Var("#77",Imm(1)), Direct(Tid(744, "%000002e8"))), -Goto(Tid(2_329, "%00000919"), Attrs([]), Int(1,1), -Direct(Tid(1_475, "%000005c3")))])), Blk(Tid(744, "%000002e8"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_349, "%00000545"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(727, "%000002d7"))), Goto(Tid(2_168, "%00000878"), Attrs([]), + Int(1,1), Direct(Tid(1_353, "%00000549")))])), Blk(Tid(727, "%000002d7"), Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(757, "%000002f5"), Attrs([Attr("address","0x83C"), +Jmps([Call(Tid(735, "%000002df"), Attrs([Attr("address","0x83C"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_475, "%000005c3"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_481, "%000005c9"), Attrs([Attr("address","0x834"), +Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_357, "%0000054d"), Attrs([Attr("address","0x834"), Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_486, "%000005ce"), Attrs([Attr("address","0x838"), +Jmps([Call(Tid(1_362, "%00000552"), Attrs([Attr("address","0x838"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_278, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_345, "%00000929"), +Sub(Tid(2_117, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_184, "%00000888"), 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(933, "@frame_dummy"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(886, "@frame_dummy"), Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(935, "%000003a7"), Attrs([Attr("address","0x8D0"), +Jmps([Call(Tid(888, "%00000378"), Attrs([Attr("address","0x8D0"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_285, "@register_tm_clones")),))]))])), Sub(Tid(2_279, "@free"), +(Direct(Tid(2_124, "@register_tm_clones")),))]))])), Sub(Tid(2_118, "@free"), Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_346, "%0000092a"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_185, "%00000889"), 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_299, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_976, "%000007b8"), Attrs([Attr("address","0x7A0"), +Both())]), Blks([Blk(Tid(1_208, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_820, "%0000071c"), Attrs([Attr("address","0x7A0"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_984, "%000007c0"), Attrs([Attr("address","0x7A4"), +Def(Tid(1_827, "%00000723"), 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_991, "%000007c7"), Attrs([Attr("address","0x7A8"), +Def(Tid(1_833, "%00000729"), 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_996, "%000007cc"), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_838, "%0000072e"), Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_280, "@main"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_119, "@main"), Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_347, "%0000092b"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_186, "%0000088a"), 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_348, "%0000092c"), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_187, "%0000088b"), 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_349, "%0000092d"), +Var("R1",Imm(64)), Both()), Arg(Tid(2_188, "%0000088c"), 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(937, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(944, "%000003b0"), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(890, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(894, "%0000037e"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8D4"), +Def(Tid(900, "%00000384"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(958, "%000003be"), Attrs([Attr("address","0x8D4"), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8D4"), Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#42",Imm(64))), Def(Tid(965, "%000003c5"), +Var("#4",Imm(64))), Def(Tid(916, "%00000394"), Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(973, "%000003cd"), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(924, "%0000039c"), Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x8E0"), +Def(Tid(931, "%000003a3"), Attrs([Attr("address","0x8E0"), Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x8E4"), +Def(Tid(938, "%000003aa"), Attrs([Attr("address","0x8E4"), Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x8E8"), +Def(Tid(943, "%000003af"), Attrs([Attr("address","0x8E8"), Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x8EC"), +Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8EC"), +Jmps([Call(Tid(951, "%000003b7"), Attrs([Attr("address","0x8EC"), Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_281, "@malloc")),Direct(Tid(1_005, "%000003ed"))))])), -Blk(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x8F0"), +(Direct(Tid(2_120, "@malloc")),Direct(Tid(953, "%000003b9"))))])), +Blk(Tid(953, "%000003b9"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8F0"), Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x8F4"), +Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x8F4"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x8F8"), +Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x8F8"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_032, "%00000408"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(976, "%000003d0"), Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x900"), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x900"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_045, "%00000415"), Attrs([Attr("address","0x904"), +Def(Tid(987, "%000003db"), Attrs([Attr("address","0x904"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_053, "%0000041d"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(994, "%000003e2"), Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x90C"), +Def(Tid(999, "%000003e7"), Attrs([Attr("address","0x90C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x910"), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x910"), Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_071, "%0000042f"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), - Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_074, "%00000432"), + Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_288, "@strlen")),Direct(Tid(1_076, "%00000434"))))])), -Blk(Tid(1_076, "%00000434"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_082, "%0000043a"), Attrs([Attr("address","0x918"), +(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_015, "%000003f7"))))])), +Blk(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x918")]), Phis([]), +Defs([Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x918"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x91C"), +Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x91C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_095, "%00000447"), Attrs([Attr("address","0x920"), +Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x920"), Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_103, "%0000044f"), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_036, "%0000040c"), Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_108, "%00000454"), + Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_111, "%00000457"), + Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_044, "%00000414"), Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_282, "@memcpy")),Direct(Tid(1_113, "%00000459"))))])), -Blk(Tid(1_113, "%00000459"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x92C"), +(Direct(Tid(2_121, "@memcpy")),Direct(Tid(1_046, "%00000416"))))])), +Blk(Tid(1_046, "%00000416"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(1_049, "%00000419"), Attrs([Attr("address","0x92C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_124, "%00000464"), Attrs([Attr("address","0x930"), +Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x930"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_132, "%0000046c"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_062, "%00000426"), Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_137, "%00000471"), Attrs([Attr("address","0x938"), +Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_140, "%00000474"), Attrs([Attr("address","0x938"), +Jmps([Call(Tid(1_070, "%0000042e"), Attrs([Attr("address","0x938"), Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_284, "@puts")),Direct(Tid(1_142, "%00000476"))))])), -Blk(Tid(1_142, "%00000476"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_146, "%0000047a"), Attrs([Attr("address","0x93C"), +(Direct(Tid(2_123, "@puts")),Direct(Tid(1_072, "%00000430"))))])), +Blk(Tid(1_072, "%00000430"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x93C"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x940"), +Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x940"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_161, "%00000489"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_168, "%00000490"), Attrs([Attr("address","0x948"), +Def(Tid(1_094, "%00000446"), Attrs([Attr("address","0x948"), Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_176, "%00000498"), +PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_102, "%0000044e"), Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), Var("mem",Mem(64,8)), Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x950"), +Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x950"), Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), -Def(Tid(1_192, "%000004a8"), Attrs([Attr("address","0x954"), +Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x954"), Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),BigEndian(),8)), -Def(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x958"), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),LittleEndian(),8)), +Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x958"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x95C"), +Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x95C"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_213, "%000004bd"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x960"), Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x964"), +Def(Tid(1_139, "%00000473"), Attrs([Attr("address","0x964"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x968"), +Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x968"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_234, "%000004d2"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_152, "%00000480"), Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x970"), +Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x970"), Attr("insn","bl #-0x250")]), Var("R30",Imm(64)), Int(2420,64))]), -Jmps([Call(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x970"), +Jmps([Call(Tid(1_159, "%00000487"), Attrs([Attr("address","0x970"), Attr("insn","bl #-0x250")]), Int(1,1), -(Direct(Tid(2_288, "@strlen")),Direct(Tid(1_243, "%000004db"))))])), -Blk(Tid(1_243, "%000004db"), Attrs([Attr("address","0x974")]), Phis([]), -Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x974"), +(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_161, "%00000489"))))])), +Blk(Tid(1_161, "%00000489"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x974"), Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x978"), +Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x978"), Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x97C"), +Def(Tid(1_176, "%00000498"), Attrs([Attr("address","0x97C"), Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x980"), +Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x980"), Attr("insn","bl #-0x220")]), Var("R30",Imm(64)), Int(2436,64))]), -Jmps([Call(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x980"), +Jmps([Call(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x980"), Attr("insn","bl #-0x220")]), Int(1,1), -(Direct(Tid(2_283, "@memset")),Direct(Tid(1_274, "%000004fa"))))])), -Blk(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x984")]), Phis([]), -Defs([Def(Tid(1_278, "%000004fe"), Attrs([Attr("address","0x984"), +(Direct(Tid(2_122, "@memset")),Direct(Tid(1_186, "%000004a2"))))])), +Blk(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x984")]), Phis([]), +Defs([Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x984"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x988"), +Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x988"), Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_293, "%0000050d"), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x98C"), Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_298, "%00000512"), Attrs([Attr("address","0x990"), +Def(Tid(1_207, "%000004b7"), Attrs([Attr("address","0x990"), Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2452,64))]), -Jmps([Call(Tid(1_301, "%00000515"), Attrs([Attr("address","0x990"), +Jmps([Call(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x990"), Attr("insn","bl #-0x1f0")]), Int(1,1), -(Direct(Tid(2_279, "@free")),Direct(Tid(1_303, "%00000517"))))])), -Blk(Tid(1_303, "%00000517"), Attrs([Attr("address","0x994")]), Phis([]), -Defs([Def(Tid(1_308, "%0000051c"), Attrs([Attr("address","0x994"), +(Direct(Tid(2_118, "@free")),Direct(Tid(1_212, "%000004bc"))))])), +Blk(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x994")]), Phis([]), +Defs([Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x994"), Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_316, "%00000524"), Attrs([Attr("address","0x998"), +Def(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x998"), 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_326, "%0000052e"), Attrs([Attr("address","0x99C"), +Def(Tid(1_229, "%000004cd"), 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_330, "%00000532"), Attrs([Attr("address","0x99C"), +Def(Tid(1_234, "%000004d2"), 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_333, "%00000535"), Attrs([Attr("address","0x99C"), +Def(Tid(1_238, "%000004d6"), 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_338, "%0000053a"), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_243, "%000004db"), Attrs([Attr("address","0x9A0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_281, "@malloc"), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_120, "@malloc"), Attrs([Attr("c.proto","void* (*)(unsigned long size)"), Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_350, "%0000092e"), Attrs([Attr("alloc-size","()"), + Args([Arg(Tid(2_189, "%0000088d"), 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_351, "%0000092f"), +Var("R0",Imm(64)), In()), Arg(Tid(2_190, "%0000088e"), Attrs([Attr("warn-unused","()"), Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_001, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_851, "%0000073b"), Attrs([Attr("address","0x750"), +Blks([Blk(Tid(949, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x750"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_859, "%00000743"), Attrs([Attr("address","0x754"), +Def(Tid(1_717, "%000006b5"), 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_866, "%0000074a"), Attrs([Attr("address","0x758"), +Def(Tid(1_723, "%000006bb"), 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_871, "%0000074f"), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_728, "%000006c0"), Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_282, "@memcpy"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_121, "@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_352, "%00000930"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_191, "%0000088f"), 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_353, "%00000931"), +Var("R0",Imm(64)), Both()), Arg(Tid(2_192, "%00000890"), 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_354, "%00000932"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Arg(Tid(2_193, "%00000891"), 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_355, "%00000933"), Attrs([Attr("c.layout","*[ : 8]"), +Arg(Tid(2_194, "%00000892"), Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), Attr("c.type","void*")]), Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_109, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x710"), +Blks([Blk(Tid(1_042, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x710"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_759, "%000006df"), Attrs([Attr("address","0x714"), +Def(Tid(1_629, "%0000065d"), 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_766, "%000006e6"), Attrs([Attr("address","0x718"), +Def(Tid(1_635, "%00000663"), Attrs([Attr("address","0x718"), Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_771, "%000006eb"), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_640, "%00000668"), Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_283, "@memset"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_122, "@memset"), Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_356, "%00000934"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_195, "%00000893"), 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_357, "%00000935"), +Both()), Arg(Tid(2_196, "%00000894"), 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_358, "%00000936"), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_197, "%00000895"), 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_359, "%00000937"), Attrs([Attr("c.layout","*[ : 8]"), +In()), Arg(Tid(2_198, "%00000896"), 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_270, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_876, "%00000754"), Attrs([Attr("address","0x760"), +Blks([Blk(Tid(1_182, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x760"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x764"), +Def(Tid(1_739, "%000006cb"), 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_891, "%00000763"), Attrs([Attr("address","0x768"), +Def(Tid(1_745, "%000006d1"), 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_896, "%00000768"), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_750, "%000006d6"), Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_284, "@puts"), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_123, "@puts"), Attrs([Attr("c.proto","signed (*)( const char* s)"), Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_360, "%00000938"), Attrs([Attr("c.layout","*[char : 8]"), + Args([Arg(Tid(2_199, "%00000897"), 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_361, "%00000939"), Attrs([Attr("c.layout","[signed : 32]"), +Arg(Tid(2_200, "%00000898"), Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), Attr("c.type","signed")]), Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_138, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_951, "%0000079f"), Attrs([Attr("address","0x790"), +Blks([Blk(Tid(1_068, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x790"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_959, "%000007a7"), Attrs([Attr("address","0x794"), +Def(Tid(1_805, "%0000070d"), 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_966, "%000007ae"), Attrs([Attr("address","0x798"), +Def(Tid(1_811, "%00000713"), 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_971, "%000007b3"), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_816, "%00000718"), Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), (Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_285, "@register_tm_clones"), +Sub(Tid(2_124, "@register_tm_clones"), Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_362, "%0000093a"), + "register_tm_clones", Args([Arg(Tid(2_201, "%00000899"), 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(759, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(763, "%000002fb"), Attrs([Attr("address","0x840"), +Blks([Blk(Tid(737, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(740, "%000002e4"), Attrs([Attr("address","0x840"), Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(770, "%00000302"), Attrs([Attr("address","0x844"), +Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x844"), Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(776, "%00000308"), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(751, "%000002ef"), Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(783, "%0000030f"), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(757, "%000002f5"), Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(791, "%00000317"), Attrs([Attr("address","0x850"), +Def(Tid(764, "%000002fc"), Attrs([Attr("address","0x850"), Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(798, "%0000031e"), - Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(806, "%00000326"), Attrs([Attr("address","0x858"), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(770, "%00000302"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(777, "%00000309"), Attrs([Attr("address","0x858"), Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), -Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x85C"), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x85C"), Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(825, "%00000339"), - Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(819, "%00000333"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(817, "%00000331"))), Goto(Tid(2_330, "%0000091a"), Attrs([]), - Int(1,1), Direct(Tid(1_410, "%00000582")))])), Blk(Tid(1_410, "%00000582"), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(789, "%00000315"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(787, "%00000313"))), Goto(Tid(2_169, "%00000879"), Attrs([]), + Int(1,1), Direct(Tid(1_304, "%00000518")))])), Blk(Tid(1_304, "%00000518"), Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_414, "%00000586"), Attrs([Attr("address","0x864"), +Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x864"), Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_422, "%0000058e"), Attrs([Attr("address","0x868"), +Def(Tid(1_314, "%00000522"), Attrs([Attr("address","0x868"), Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), -Def(Tid(1_433, "%00000599"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), Var("#72",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_427, "%00000593"), - Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), - Var("#72",Imm(1)), Direct(Tid(817, "%00000331"))), -Goto(Tid(2_331, "%0000091b"), Attrs([]), Int(1,1), -Direct(Tid(1_436, "%0000059c")))])), Blk(Tid(817, "%00000331"), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_319, "%00000527"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(787, "%00000313"))), Goto(Tid(2_170, "%0000087a"), Attrs([]), + Int(1,1), Direct(Tid(1_323, "%0000052b")))])), Blk(Tid(787, "%00000313"), Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(830, "%0000033e"), Attrs([Attr("address","0x878"), +Jmps([Call(Tid(795, "%0000031b"), Attrs([Attr("address","0x878"), Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_436, "%0000059c"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_442, "%000005a2"), Attrs([Attr("address","0x870"), +Blk(Tid(1_323, "%0000052b"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x870"), Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_447, "%000005a7"), Attrs([Attr("address","0x874"), +Jmps([Call(Tid(1_332, "%00000534"), Attrs([Attr("address","0x874"), Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_288, "@strlen"), +Sub(Tid(2_127, "@strlen"), Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_363, "%0000093b"), Attrs([Attr("nonnull","()"), + Args([Arg(Tid(2_202, "%0000089a"), 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_364, "%0000093c"), +In()), Arg(Tid(2_203, "%0000089b"), Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_072, "@strlen"), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_011, "@strlen"), Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x720"), +Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x720"), Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_784, "%000006f8"), Attrs([Attr("address","0x724"), +Def(Tid(1_651, "%00000673"), 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_791, "%000006ff"), Attrs([Attr("address","0x728"), +Def(Tid(1_657, "%00000679"), 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_796, "%00000704"), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_662, "%0000067e"), 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir index df98f3236..a2379f371 100644 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir @@ -1,371 +1,363 @@ -0000091c: program -000008d5: sub __cxa_finalize(__cxa_finalize_result) -0000091d: __cxa_finalize_result :: out u32 = low:32[R0] - -0000057e: -00000722: R16 := 0x20000 -0000072a: R17 := mem[R16 + 0x18, el]:u64 -00000731: R16 := R16 + 0x18 -00000736: call R17 with noreturn - -000008d6: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000091e: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000342: -00000349: #34 := R31 - 0x20 -0000034e: mem := mem with [#34, el]:u64 <- R29 -00000353: mem := mem with [#34 + 8, el]:u64 <- R30 -00000357: R31 := #34 -0000035e: R29 := R31 -00000366: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000036c: R19 := 0x20000 -00000375: R0 := pad:32[mem[R19 + 0x78]] -00000381: #36 := ~~0:0[R0] -0000037b: when #36 goto %00000379 -00000912: goto %0000053c - -0000053c: -00000540: R0 := 0x1F000 -00000548: R0 := mem[R0 + 0xFC8, el]:u64 -00000554: #69 := R0 = 0 -0000054e: when #69 goto %0000054c -00000913: goto %0000056c - -0000056c: -00000570: R0 := 0x20000 -00000578: R0 := mem[R0 + 0x58, el]:u64 -0000057d: R30 := 0x8B0 -00000580: call @__cxa_finalize with return %0000054c - -0000054c: -00000559: R30 := 0x8B4 -0000055b: call @deregister_tm_clones with return %0000055d - -0000055d: -00000562: R0 := 1 -0000056a: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] -00000914: goto %00000379 - -00000379: -00000389: R19 := mem[R31 + 0x10, el]:u64 -00000393: R29 := mem[R31, el]:u64 -00000397: R30 := mem[R31 + 8, el]:u64 -0000039a: R31 := R31 + 0x20 -0000039f: call R30 with noreturn - -000008da: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -0000091f: __libc_start_main_main :: in u64 = R0 -00000920: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000921: __libc_start_main_arg3 :: in out u64 = R2 -00000922: __libc_start_main_auxv :: in out u64 = R3 -00000923: __libc_start_main_result :: out u32 = low:32[R0] - -00000286: -00000709: R16 := 0x20000 -00000711: R17 := mem[R16 + 0x10, el]:u64 -00000718: R16 := R16 + 0x10 -0000071d: call R17 with noreturn - -000008db: sub _fini(_fini_result) -00000924: _fini_result :: out u32 = low:32[R0] +0000087b: program +00000834: sub __cxa_finalize(__cxa_finalize_result) +0000087c: __cxa_finalize_result :: out u32 = low:32[R0] + +00000514: +00000698: R16 := 0x20000 +0000069f: R17 := mem[R16 + 0x18, el]:u64 +000006a5: R16 := R16 + 0x18 +000006aa: call R17 with noreturn + +00000835: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000087d: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000031f: +00000323: #3 := R31 - 0x20 +00000329: mem := mem with [#3, el]:u64 <- R29 +0000032f: mem := mem with [#3 + 8, el]:u64 <- R30 +00000333: R31 := #3 +00000339: R29 := R31 +00000341: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000346: R19 := 0x20000 +0000034d: R0 := pad:64[mem[R19 + 0x78]] +00000353: when 0:0[R0] goto %00000351 +00000871: goto %000004dd + +000004dd: +000004e0: R0 := 0x1F000 +000004e7: R0 := mem[R0 + 0xFC8, el]:u64 +000004ed: when R0 = 0 goto %000004eb +00000872: goto %00000504 + +00000504: +00000507: R0 := 0x20000 +0000050e: R0 := mem[R0 + 0x58, el]:u64 +00000513: R30 := 0x8B0 +00000516: call @__cxa_finalize with return %000004eb + +000004eb: +000004f3: R30 := 0x8B4 +000004f5: call @deregister_tm_clones with return %000004f7 + +000004f7: +000004fa: R0 := 1 +00000502: mem := mem with [R19 + 0x78] <- 7:0[R0] +00000873: goto %00000351 + +00000351: +0000035b: R19 := mem[R31 + 0x10, el]:u64 +00000362: R29 := mem[R31, el]:u64 +00000367: R30 := mem[R31 + 8, el]:u64 +0000036b: R31 := R31 + 0x20 +00000370: 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) +0000087e: __libc_start_main_main :: in u64 = R0 +0000087f: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000880: __libc_start_main_arg3 :: in out u64 = R2 +00000881: __libc_start_main_auxv :: in out u64 = R3 +00000882: __libc_start_main_result :: out u32 = low:32[R0] + +00000278: +00000682: R16 := 0x20000 +00000689: R17 := mem[R16 + 0x10, el]:u64 +0000068f: R16 := R16 + 0x10 +00000694: call R17 with noreturn + +0000083a: sub _fini(_fini_result) +00000883: _fini_result :: out u32 = low:32[R0] 00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -000008dc: sub _init(_init_result) -00000925: _init_result :: out u32 = low:32[R0] - -000007e8: -000007f1: #100 := R31 - 0x10 -000007f6: mem := mem with [#100, el]:u64 <- R29 -000007fb: mem := mem with [#100 + 8, el]:u64 <- R30 -000007ff: R31 := #100 -00000806: R29 := R31 -0000080b: R30 := 0x6E8 -0000080d: call @call_weak_fn with return %0000080f - -0000080f: -00000817: R29 := mem[R31, el]:u64 -0000081b: R30 := mem[R31 + 8, el]:u64 -0000081e: R31 := R31 + 0x10 -00000823: call R30 with noreturn - -000008dd: sub _start(_start_result) -00000926: _start_result :: out u32 = low:32[R0] - -0000023c: -00000242: R29 := 0 -00000248: R30 := 0 -00000250: R5 := R0 -00000258: R1 := mem[R31, el]:u64 -0000025f: R2 := R31 + 8 -00000266: R6 := R31 -0000026c: R0 := 0x1F000 -00000274: R0 := mem[R0 + 0xFD8, el]:u64 -0000027a: R3 := 0 -00000280: R4 := 0 -00000285: R30 := 0x7F0 -00000288: call @__libc_start_main with return %0000028a - -0000028a: -0000028d: R30 := 0x7F4 -00000290: call @abort with return %00000915 - -00000915: -00000916: call @call_weak_fn with noreturn - -000008e0: sub abort() - - -0000028e: -00000786: R16 := 0x20000 -0000078e: R17 := mem[R16 + 0x38, el]:u64 -00000795: R16 := R16 + 0x38 -0000079a: call R17 with noreturn - -000008e1: sub call_weak_fn(call_weak_fn_result) -00000927: call_weak_fn_result :: out u32 = low:32[R0] +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 + +0000083b: sub _init(_init_result) +00000884: _init_result :: out u32 = low:32[R0] + +0000074a: +00000750: #6 := R31 - 0x10 +00000756: mem := mem with [#6, el]:u64 <- R29 +0000075c: mem := mem with [#6 + 8, el]:u64 <- R30 +00000760: R31 := #6 +00000766: R29 := R31 +0000076b: R30 := 0x6E8 +0000076d: call @call_weak_fn with return %0000076f + +0000076f: +00000774: R29 := mem[R31, el]:u64 +00000779: R30 := mem[R31 + 8, el]:u64 +0000077d: R31 := R31 + 0x10 +00000782: call R30 with noreturn + +0000083c: sub _start(_start_result) +00000885: _start_result :: out u32 = low:32[R0] + +00000239: +0000023e: R29 := 0 +00000243: R30 := 0 +00000249: R5 := R0 +00000250: R1 := mem[R31, el]:u64 +00000256: R2 := R31 + 8 +0000025c: R6 := R31 +00000261: R0 := 0x1F000 +00000268: R0 := mem[R0 + 0xFD8, el]:u64 +0000026d: R3 := 0 +00000272: R4 := 0 +00000277: R30 := 0x7F0 +0000027a: call @__libc_start_main with return %0000027c + +0000027c: +0000027f: R30 := 0x7F4 +00000282: call @abort with return %00000874 + +00000874: +00000875: call @call_weak_fn with noreturn + +0000083f: sub abort() + + +00000280: +000006f0: R16 := 0x20000 +000006f7: R17 := mem[R16 + 0x38, el]:u64 +000006fd: R16 := R16 + 0x38 +00000702: call R17 with noreturn + +00000840: sub call_weak_fn(call_weak_fn_result) +00000886: call_weak_fn_result :: out u32 = low:32[R0] + +00000284: +00000287: R0 := 0x1F000 +0000028e: R0 := mem[R0 + 0xFD0, el]:u64 +00000294: when R0 = 0 goto %00000292 +00000876: goto %00000554 00000292: -00000296: R0 := 0x1F000 -0000029e: R0 := mem[R0 + 0xFD0, el]:u64 -000002aa: #12 := R0 = 0 -000002a4: when #12 goto %000002a2 -00000917: goto %000005d0 - -000002a2: -000002af: call R30 with noreturn - -000005d0: -000005d3: goto @__gmon_start__ - -000005d1: -0000076d: R16 := 0x20000 -00000775: R17 := mem[R16 + 0x30, el]:u64 -0000077c: R16 := R16 + 0x30 -00000781: call R17 with noreturn - -000008e3: sub deregister_tm_clones(deregister_tm_clones_result) -00000928: deregister_tm_clones_result :: out u32 = low:32[R0] - -000002b5: -000002b9: R0 := 0x20000 -000002c0: R0 := R0 + 0x78 -000002c6: R1 := 0x20000 -000002cd: R1 := R1 + 0x78 -000002d5: #16 := 1 + ~R0 + R1 -000002d9: NF := 63:63[#16] -000002dc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002df: ZF := #16 = 0 -000002e2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002f0: #21 := ZF -000002ea: when #21 goto %000002e8 -00000918: goto %000005a9 - -000005a9: -000005ad: R1 := 0x1F000 -000005b5: R1 := mem[R1 + 0xFC0, el]:u64 -000005c0: #77 := R1 = 0 -000005ba: when #77 goto %000002e8 -00000919: goto %000005c3 - -000002e8: -000002f5: call R30 with noreturn - -000005c3: -000005c9: R16 := R1 -000005ce: call R16 with noreturn - -000008e6: sub frame_dummy(frame_dummy_result) -00000929: frame_dummy_result :: out u32 = low:32[R0] - -000003a5: -000003a7: call @register_tm_clones with noreturn - -000008e7: sub free(free_ptr) -0000092a: free_ptr :: in out u64 = R0 - -00000513: -000007b8: R16 := 0x20000 -000007c0: R17 := mem[R16 + 0x48, el]:u64 -000007c7: R16 := R16 + 0x48 -000007cc: call R17 with noreturn - -000008e8: sub main(main_argc, main_argv, main_result) -0000092b: main_argc :: in u32 = low:32[R0] -0000092c: main_argv :: in out u64 = R1 -0000092d: main_result :: out u32 = low:32[R0] - -000003a9: -000003b0: #42 := R31 - 0x30 -000003b5: mem := mem with [#42, el]:u64 <- R29 -000003ba: mem := mem with [#42 + 8, el]:u64 <- R30 -000003be: R31 := #42 -000003c5: R29 := R31 -000003cd: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000003d5: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003dd: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003e3: R0 := 0xB -000003e8: R30 := 0x8F0 -000003eb: call @malloc with return %000003ed - -000003ed: -000003f3: R1 := R0 -000003f9: R0 := 0x20000 -00000400: R0 := R0 + 0x80 -00000408: mem := mem with [R0, el]:u64 <- R1 -0000040e: R0 := 0x20000 -00000415: R0 := R0 + 0x80 -0000041d: R19 := mem[R0, el]:u64 -00000423: R0 := 0x20000 -0000042a: R0 := R0 + 0x68 -0000042f: R30 := 0x918 -00000432: call @strlen with return %00000434 - -00000434: -0000043a: R2 := R0 -00000440: R0 := 0x20000 -00000447: R1 := R0 + 0x68 -0000044f: R0 := R19 -00000454: R30 := 0x92C -00000457: call @memcpy with return %00000459 - -00000459: -0000045d: R0 := 0x20000 -00000464: R0 := R0 + 0x80 -0000046c: R0 := mem[R0, el]:u64 -00000471: R30 := 0x93C -00000474: call @puts with return %00000476 - -00000476: -0000047a: R0 := 0x20000 -00000481: R0 := R0 + 0x80 -00000489: R0 := mem[R0, el]:u64 -00000490: R0 := R0 + 4 -00000498: mem := mem with [R31 + 0x28, el]:u64 <- R0 -000004a0: R0 := mem[R31 + 0x28, el]:u64 -000004a8: mem := mem with [R0] <- 0 -000004ae: R0 := 0x20000 -000004b5: R0 := R0 + 0x80 -000004bd: R19 := mem[R0, el]:u64 -000004c3: R0 := 0x20000 -000004ca: R0 := R0 + 0x80 -000004d2: R0 := mem[R0, el]:u64 -000004d7: R30 := 0x974 -000004d9: call @strlen with return %000004db - -000004db: -000004e1: R2 := R0 -000004e8: R1 := 1 -000004f0: R0 := R19 -000004f5: R30 := 0x984 -000004f8: call @memset with return %000004fa - -000004fa: -000004fe: R0 := 0x20000 -00000505: R0 := R0 + 0x80 -0000050d: R0 := mem[R0, el]:u64 -00000512: R30 := 0x994 -00000515: call @free with return %00000517 - -00000517: -0000051c: R0 := 0 -00000524: R19 := mem[R31 + 0x10, el]:u64 -0000052e: R29 := mem[R31, el]:u64 -00000532: R30 := mem[R31 + 8, el]:u64 -00000535: R31 := R31 + 0x30 -0000053a: call R30 with noreturn - -000008e9: sub malloc(malloc_size, malloc_result) -0000092e: malloc_size :: in u64 = R0 -0000092f: malloc_result :: out u64 = R0 - -000003e9: -0000073b: R16 := 0x20000 -00000743: R17 := mem[R16 + 0x20, el]:u64 -0000074a: R16 := R16 + 0x20 -0000074f: call R17 with noreturn - -000008ea: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000930: memcpy_dst :: in out u64 = R0 -00000931: memcpy_src :: in out u64 = R1 -00000932: memcpy_n :: in u64 = R2 -00000933: memcpy_result :: out u64 = R0 - -00000455: -000006d7: R16 := 0x20000 -000006df: R17 := mem[R16, el]:u64 -000006e6: R16 := R16 -000006eb: call R17 with noreturn - -000008eb: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000934: memset_buf :: in out u64 = R0 -00000935: memset_c :: in u32 = low:32[R1] -00000936: memset_n :: in u64 = R2 -00000937: memset_result :: out u64 = R0 - -000004f6: -00000754: R16 := 0x20000 -0000075c: R17 := mem[R16 + 0x28, el]:u64 -00000763: R16 := R16 + 0x28 -00000768: call R17 with noreturn - -000008ec: sub puts(puts_s, puts_result) -00000938: puts_s :: in u64 = R0 -00000939: puts_result :: out u32 = low:32[R0] - -00000472: -0000079f: R16 := 0x20000 -000007a7: R17 := mem[R16 + 0x40, el]:u64 -000007ae: R16 := R16 + 0x40 -000007b3: call R17 with noreturn - -000008ed: sub register_tm_clones(register_tm_clones_result) -0000093a: register_tm_clones_result :: out u32 = low:32[R0] - -000002f7: -000002fb: R0 := 0x20000 -00000302: R0 := R0 + 0x78 -00000308: R1 := 0x20000 -0000030f: R1 := R1 + 0x78 -00000317: R1 := R1 - R0 -0000031e: R2 := R1 >> 0x3F -00000326: R1 := R2 + (R1 ~>> 3) -0000032d: R1 := R1 >> 1 -00000339: #30 := R1 = 0 -00000333: when #30 goto %00000331 -0000091a: goto %00000582 - -00000582: -00000586: R2 := 0x1F000 -0000058e: R2 := mem[R2 + 0xFE0, el]:u64 -00000599: #72 := R2 = 0 -00000593: when #72 goto %00000331 -0000091b: goto %0000059c - -00000331: -0000033e: call R30 with noreturn - -0000059c: -000005a2: R16 := R2 -000005a7: call R16 with noreturn - -000008f0: sub strlen(strlen_s, strlen_result) -0000093b: strlen_s :: in u64 = R0 -0000093c: strlen_result :: out u64 = R0 +0000029a: call R30 with noreturn + +00000554: +00000557: goto @__gmon_start__ + +00000555: +000006da: R16 := 0x20000 +000006e1: R17 := mem[R16 + 0x30, el]:u64 +000006e7: R16 := R16 + 0x30 +000006ec: call R17 with noreturn + +00000842: sub deregister_tm_clones(deregister_tm_clones_result) +00000887: deregister_tm_clones_result :: out u32 = low:32[R0] + +000002a0: +000002a3: R0 := 0x20000 +000002a9: R0 := R0 + 0x78 +000002ae: R1 := 0x20000 +000002b4: R1 := R1 + 0x78 +000002ba: #1 := ~R0 +000002bf: #2 := R1 + ~R0 +000002c5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002cb: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002cf: ZF := #2 + 1 = 0 +000002d3: NF := 63:63[#2 + 1] +000002d9: when ZF goto %000002d7 +00000877: goto %00000536 + +00000536: +00000539: R1 := 0x1F000 +00000540: R1 := mem[R1 + 0xFC0, el]:u64 +00000545: when R1 = 0 goto %000002d7 +00000878: goto %00000549 + +000002d7: +000002df: call R30 with noreturn + +00000549: +0000054d: R16 := R1 +00000552: call R16 with noreturn + +00000845: sub frame_dummy(frame_dummy_result) +00000888: frame_dummy_result :: out u32 = low:32[R0] + +00000376: +00000378: call @register_tm_clones with noreturn + +00000846: sub free(free_ptr) +00000889: free_ptr :: in out u64 = R0 + +000004b8: +0000071c: R16 := 0x20000 +00000723: R17 := mem[R16 + 0x48, el]:u64 +00000729: R16 := R16 + 0x48 +0000072e: call R17 with noreturn + +00000847: sub main(main_argc, main_argv, main_result) +0000088a: main_argc :: in u32 = low:32[R0] +0000088b: main_argv :: in out u64 = R1 +0000088c: main_result :: out u32 = low:32[R0] + +0000037a: +0000037e: #4 := R31 - 0x30 +00000384: mem := mem with [#4, el]:u64 <- R29 +0000038a: mem := mem with [#4 + 8, el]:u64 <- R30 +0000038e: R31 := #4 +00000394: R29 := R31 +0000039c: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003a3: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003aa: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003af: R0 := 0xB +000003b4: R30 := 0x8F0 +000003b7: call @malloc with return %000003b9 + +000003b9: +000003bd: R1 := R0 +000003c2: R0 := 0x20000 +000003c8: R0 := R0 + 0x80 +000003d0: mem := mem with [R0, el]:u64 <- R1 +000003d5: R0 := 0x20000 +000003db: R0 := R0 + 0x80 +000003e2: R19 := mem[R0, el]:u64 +000003e7: R0 := 0x20000 +000003ed: R0 := R0 + 0x68 +000003f2: R30 := 0x918 +000003f5: call @strlen with return %000003f7 + +000003f7: +000003fb: R2 := R0 +00000400: R0 := 0x20000 +00000406: R1 := R0 + 0x68 +0000040c: R0 := R19 +00000411: R30 := 0x92C +00000414: call @memcpy with return %00000416 + +00000416: +00000419: R0 := 0x20000 +0000041f: R0 := R0 + 0x80 +00000426: R0 := mem[R0, el]:u64 +0000042b: R30 := 0x93C +0000042e: call @puts with return %00000430 00000430: -000006f0: R16 := 0x20000 -000006f8: R17 := mem[R16 + 8, el]:u64 -000006ff: R16 := R16 + 8 -00000704: call R17 with noreturn +00000433: R0 := 0x20000 +00000439: R0 := R0 + 0x80 +00000440: R0 := mem[R0, el]:u64 +00000446: R0 := R0 + 4 +0000044e: mem := mem with [R31 + 0x28, el]:u64 <- R0 +00000455: R0 := mem[R31 + 0x28, el]:u64 +0000045c: mem := mem with [R0] <- 0 +00000461: R0 := 0x20000 +00000467: R0 := R0 + 0x80 +0000046e: R19 := mem[R0, el]:u64 +00000473: R0 := 0x20000 +00000479: R0 := R0 + 0x80 +00000480: R0 := mem[R0, el]:u64 +00000485: R30 := 0x974 +00000487: call @strlen with return %00000489 + +00000489: +0000048d: R2 := R0 +00000492: R1 := 1 +00000498: R0 := R19 +0000049d: R30 := 0x984 +000004a0: call @memset with return %000004a2 + +000004a2: +000004a5: R0 := 0x20000 +000004ab: R0 := R0 + 0x80 +000004b2: R0 := mem[R0, el]:u64 +000004b7: R30 := 0x994 +000004ba: call @free with return %000004bc + +000004bc: +000004bf: R0 := 0 +000004c6: R19 := mem[R31 + 0x10, el]:u64 +000004cd: R29 := mem[R31, el]:u64 +000004d2: R30 := mem[R31 + 8, el]:u64 +000004d6: R31 := R31 + 0x30 +000004db: call R30 with noreturn + +00000848: sub malloc(malloc_size, malloc_result) +0000088d: malloc_size :: in u64 = R0 +0000088e: malloc_result :: out u64 = R0 + +000003b5: +000006ae: R16 := 0x20000 +000006b5: R17 := mem[R16 + 0x20, el]:u64 +000006bb: R16 := R16 + 0x20 +000006c0: call R17 with noreturn + +00000849: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +0000088f: memcpy_dst :: in out u64 = R0 +00000890: memcpy_src :: in out u64 = R1 +00000891: memcpy_n :: in u64 = R2 +00000892: memcpy_result :: out u64 = R0 + +00000412: +00000656: R16 := 0x20000 +0000065d: R17 := mem[R16, el]:u64 +00000663: R16 := R16 +00000668: call R17 with noreturn + +0000084a: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000893: memset_buf :: in out u64 = R0 +00000894: memset_c :: in u32 = low:32[R1] +00000895: memset_n :: in u64 = R2 +00000896: memset_result :: out u64 = R0 + +0000049e: +000006c4: R16 := 0x20000 +000006cb: R17 := mem[R16 + 0x28, el]:u64 +000006d1: R16 := R16 + 0x28 +000006d6: call R17 with noreturn + +0000084b: sub puts(puts_s, puts_result) +00000897: puts_s :: in u64 = R0 +00000898: puts_result :: out u32 = low:32[R0] + +0000042c: +00000706: R16 := 0x20000 +0000070d: R17 := mem[R16 + 0x40, el]:u64 +00000713: R16 := R16 + 0x40 +00000718: call R17 with noreturn + +0000084c: sub register_tm_clones(register_tm_clones_result) +00000899: register_tm_clones_result :: out u32 = low:32[R0] + +000002e1: +000002e4: R0 := 0x20000 +000002ea: R0 := R0 + 0x78 +000002ef: R1 := 0x20000 +000002f5: R1 := R1 + 0x78 +000002fc: R1 := R1 + ~R0 + 1 +00000302: R2 := 0.63:63[R1] +00000309: R1 := R2 + (R1 ~>> 3) +0000030f: R1 := extend:64[63:1[R1]] +00000315: when R1 = 0 goto %00000313 +00000879: goto %00000518 + +00000518: +0000051b: R2 := 0x1F000 +00000522: R2 := mem[R2 + 0xFE0, el]:u64 +00000527: when R2 = 0 goto %00000313 +0000087a: goto %0000052b + +00000313: +0000031b: call R30 with noreturn + +0000052b: +0000052f: R16 := R2 +00000534: call R16 with noreturn + +0000084f: sub strlen(strlen_s, strlen_result) +0000089a: strlen_s :: in u64 = R0 +0000089b: strlen_result :: out u64 = R0 + +000003f3: +0000066c: R16 := 0x20000 +00000673: R17 := mem[R16 + 8, el]:u64 +00000679: R16 := R16 + 8 +0000067e: call R17 with noreturn From a0ead2ce9ce0694671a3c4752b62d8a95694fea7 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Tue, 16 Jan 2024 14:30:29 +1000 Subject: [PATCH 34/36] remove unneccessary makefile --- src/test/correct/malloc_memcpy_strlen_memset_free/Makefile | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/Makefile diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/Makefile b/src/test/correct/malloc_memcpy_strlen_memset_free/Makefile deleted file mode 100644 index 9d5653fc7..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -include ../../make/lift-directories.mk - From 9d851ae5cf10bbd1ef746a9dd2d2ccce3fecd689 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Mon, 22 Jan 2024 13:00:18 +1000 Subject: [PATCH 35/36] only keep O2 case --- .../malloc_memcpy_strlen_memset_free.adt | 761 ------------ .../malloc_memcpy_strlen_memset_free.bir | 352 ------ .../malloc_memcpy_strlen_memset_free.relf | 145 --- .../malloc_memcpy_strlen_memset_free.adt | 761 ------------ .../malloc_memcpy_strlen_memset_free.bir | 352 ------ .../malloc_memcpy_strlen_memset_free.relf | 145 --- .../malloc_memcpy_strlen_memset_free.adt | 767 ------------ .../malloc_memcpy_strlen_memset_free.bir | 354 ------ .../malloc_memcpy_strlen_memset_free.relf | 147 --- .../config.mk | 1 + .../gcc/malloc_memcpy_strlen_memset_free.adt | 774 ------------ .../gcc/malloc_memcpy_strlen_memset_free.bir | 361 ------ .../malloc_memcpy_strlen_memset_free.expected | 822 ------------- .../gcc/malloc_memcpy_strlen_memset_free.relf | 143 --- .../malloc_memcpy_strlen_memset_free.adt | 791 ------------ .../malloc_memcpy_strlen_memset_free.bir | 369 ------ .../malloc_memcpy_strlen_memset_free.relf | 143 --- .../malloc_memcpy_strlen_memset_free.adt | 793 ------------ .../malloc_memcpy_strlen_memset_free.bir | 369 ------ .../malloc_memcpy_strlen_memset_free.relf | 145 --- .../malloc_memcpy_strlen_memset_free.adt | 767 ------------ .../malloc_memcpy_strlen_memset_free.bir | 354 ------ .../malloc_memcpy_strlen_memset_free.expected | 824 ------------- .../malloc_memcpy_strlen_memset_free.relf | 145 --- .../malloc_memcpy_strlen_memset_free.adt | 88 +- .../malloc_memcpy_strlen_memset_free.bir | 88 +- .../malloc_memcpy_strlen_memset_free.adt | 767 ------------ .../malloc_memcpy_strlen_memset_free.bir | 354 ------ .../malloc_memcpy_strlen_memset_free.expected | 824 ------------- .../malloc_memcpy_strlen_memset_free.relf | 145 --- .../malloc_memcpy_strlen_memset_free.adt | 773 ------------ .../malloc_memcpy_strlen_memset_free.bir | 356 ------ .../malloc_memcpy_strlen_memset_free.expected | 1068 ---------------- .../malloc_memcpy_strlen_memset_free.relf | 147 --- .../config.mk | 1 + .../gcc/malloc_memcpy_strlen_memset_free.adt | 780 ------------ .../gcc/malloc_memcpy_strlen_memset_free.bir | 363 ------ .../malloc_memcpy_strlen_memset_free.expected | 838 ------------- .../gcc/malloc_memcpy_strlen_memset_free.relf | 143 --- .../malloc_memcpy_strlen_memset_free.adt | 88 +- .../malloc_memcpy_strlen_memset_free.bir | 88 +- .../malloc_memcpy_strlen_memset_free.adt | 780 ------------ .../malloc_memcpy_strlen_memset_free.bir | 363 ------ .../malloc_memcpy_strlen_memset_free.expected | 838 ------------- .../malloc_memcpy_strlen_memset_free.relf | 143 --- .../malloc_memcpy_strlen_memset_free.adt | 799 ------------ .../malloc_memcpy_strlen_memset_free.bir | 371 ------ .../malloc_memcpy_strlen_memset_free.expected | 1087 ----------------- .../malloc_memcpy_strlen_memset_free.relf | 145 --- 49 files changed, 178 insertions(+), 21844 deletions(-) delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/config.mk delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.expected delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf create mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/config.mk delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.expected delete mode 100644 src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index 80e54b967..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,761 +0,0 @@ -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 2492 20 2492)\n(code-region 2048 444 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 168)\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 2492 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 2492 20)\n(llvm:code-entry .text 2048 444)\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 2516 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 2776)\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 2516 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 2776)\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 2576 200 2576)\n(llvm:section-entry .eh_frame_hdr 2516 60 2516)\n(llvm:section-entry .rodata 2512 4 2512)\n(llvm:section-entry .fini 2492 20 2492)\n(llvm:section-entry .text 2048 444 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 168 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 2492 0 2492 2492)\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 2776 0)\n(mapped 130488 692 64952)\n(named-region 0 2776 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 444 .text)\n(named-region 2492 20 .fini)\n(named-region 2512 4 .rodata)\n(named-region 2516 60 .eh_frame_hdr)\n(named-region 2576 200 .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 2492 _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 444)\n(section 2492 20)\n(section 2512 4)\n(section 2516 60)\n(section 2576 200)\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 2776 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 168 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 2492 2492)\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e"), -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", 0x9BC, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9D0, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9D4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x2c\xfe\xff\xff\x50\x00\x00\x00\x7c\xfe\xff\xff\x64\x00\x00\x00\xac\xfe\xff\xff\x78\x00\x00\x00\xec\xfe\xff\xff\x8c\x00\x00\x00\x3c\xff\xff\xff\xb0\x00\x00\x00\x40\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0xA10, "\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\xd4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x10\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x2c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x58\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\x84\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\x24\x00\x00\x00\x18\x00\x00\x00\x60\xfe\xff\xff\xa8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x90\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\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\xbc\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x80\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x9d\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x79\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x85\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x92\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xAD7), Attr("segment","02 0 2776")), -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,0x9BB), Attr("symbol","\"main\"")), -Annotation(Region(0x914,0x9BB), Attr("symbol-info","main 0x914 168")), -Annotation(Region(0x9BC,0x9CF), Attr("section","\".fini\"")), -Annotation(Region(0x9D0,0x9D3), Attr("section","\".rodata\"")), -Annotation(Region(0x9D4,0xA0F), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0xA10,0xAD7), 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,0x9BB), Attr("section","\".text\"")), -Annotation(Region(0x800,0x9BB), Attr("code-region","()")), -Annotation(Region(0x9BC,0x9CF), Attr("code-region","()"))]), -Program(Tid(2_191, "%0000088f"), Attrs([]), - Subs([Sub(Tid(2_120, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_192, "%00000890"), - 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_212, "@__cxa_finalize"), - Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), 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_618, "%00000652"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_121, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_193, "%00000891"), - 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(759, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(763, "%000002fb"), - 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(769, "%00000301"), 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(775, "%00000307"), 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(779, "%0000030b"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(785, "%00000311"), - Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(793, "%00000319"), - 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(798, "%0000031e"), Attrs([Attr("address","0x8CC"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(805, "%00000325"), 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(811, "%0000032b"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(809, "%00000329"))), -Goto(Tid(2_181, "%00000885"), Attrs([]), Int(1,1), -Direct(Tid(1_157, "%00000485")))])), Blk(Tid(1_157, "%00000485"), - Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x8D8"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_167, "%0000048f"), 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_173, "%00000495"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_171, "%00000493"))), Goto(Tid(2_182, "%00000886"), Attrs([]), - Int(1,1), Direct(Tid(1_196, "%000004ac")))])), Blk(Tid(1_196, "%000004ac"), - Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x8E4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_206, "%000004b6"), 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_211, "%000004bb"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_214, "%000004be"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_120, "@__cxa_finalize")),Direct(Tid(1_171, "%00000493"))))])), -Blk(Tid(1_171, "%00000493"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_134, "@deregister_tm_clones")),Direct(Tid(1_183, "%0000049f"))))])), -Blk(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8F4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_194, "%000004aa"), 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_183, "%00000887"), Attrs([]), Int(1,1), -Direct(Tid(809, "%00000329")))])), Blk(Tid(809, "%00000329"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(819, "%00000333"), - 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(826, "%0000033a"), 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(831, "%0000033f"), 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(835, "%00000343"), 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(840, "%00000348"), - Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_125, "@__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_194, "%00000892"), - 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_195, "%00000893"), 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_196, "%00000894"), 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_197, "%00000895"), 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_198, "%00000896"), 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(592, "@__libc_start_main"), - Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_578, "%0000062a"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_585, "%00000631"), 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_591, "%00000637"), 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_596, "%0000063c"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_126, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9BC")]), - "_fini", Args([Arg(Tid(2_199, "%00000897"), - 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","0x9BC")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0x9C0"), -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","0x9C0"), -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","0x9C0"), -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","0x9C0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9C4"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9C8"), -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","0x9C8"), -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","0x9C8"), -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","0x9CC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_127, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), - "_init", Args([Arg(Tid(2_200, "%00000898"), - 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_896, "@_init"), - Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_908, "%00000774"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_914, "%0000077a"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_918, "%0000077e"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#7",Imm(64))), Def(Tid(1_924, "%00000784"), - Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_929, "%00000789"), - Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), - Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_931, "%0000078b"), - Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), -(Direct(Tid(2_132, "@call_weak_fn")),Direct(Tid(1_933, "%0000078d"))))])), -Blk(Tid(1_933, "%0000078d"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(1_938, "%00000792"), 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_943, "%00000797"), 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_947, "%0000079b"), 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_952, "%000007a0"), - Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_128, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), -Attr("stub","()"), Attr("entry-point","()")]), "_start", - Args([Arg(Tid(2_201, "%00000899"), 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(529, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(534, "%00000216"), Attrs([Attr("address","0x804"), -Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), -Def(Tid(539, "%0000021b"), Attrs([Attr("address","0x808"), -Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(545, "%00000221"), Attrs([Attr("address","0x80C"), -Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), -Def(Tid(552, "%00000228"), 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(558, "%0000022e"), Attrs([Attr("address","0x814"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(564, "%00000234"), - Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(569, "%00000239"), - Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(576, "%00000240"), - 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(581, "%00000245"), Attrs([Attr("address","0x824"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(586, "%0000024a"), Attrs([Attr("address","0x828"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(591, "%0000024f"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(594, "%00000252"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_125, "@__libc_start_main")),Direct(Tid(596, "%00000254"))))])), -Blk(Tid(596, "%00000254"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(599, "%00000257"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_131, "@abort")),Direct(Tid(2_184, "%00000888"))))])), -Blk(Tid(2_184, "%00000888"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_185, "%00000889"), Attrs([]), Int(1,1), -(Direct(Tid(2_132, "@call_weak_fn")),))]))])), Sub(Tid(2_131, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(600, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x7D0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), - Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_132, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), - "call_weak_fn", Args([Arg(Tid(2_202, "%0000089a"), - 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(604, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(607, "%0000025f"), - Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(614, "%00000266"), - 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(620, "%0000026c"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(618, "%0000026a"))), Goto(Tid(2_186, "%0000088a"), Attrs([]), - Int(1,1), Direct(Tid(1_276, "%000004fc")))])), Blk(Tid(618, "%0000026a"), - Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x844"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x840"), -Attr("insn","b #-0x80")]), Int(1,1), -Direct(Tid(1_277, "@__gmon_start__")))])), Blk(Tid(1_277, "@__gmon_start__"), - Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x7C0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_134, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_203, "%0000089b"), - 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(632, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(635, "%0000027b"), - Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(641, "%00000281"), - Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(646, "%00000286"), Attrs([Attr("address","0x858"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(652, "%0000028c"), Attrs([Attr("address","0x85C"), -Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(658, "%00000292"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(663, "%00000297"), - 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(669, "%0000029d"), 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(675, "%000002a3"), 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(679, "%000002a7"), 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(683, "%000002ab"), - 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(689, "%000002b1"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(687, "%000002af"))), Goto(Tid(2_187, "%0000088b"), Attrs([]), - Int(1,1), Direct(Tid(1_246, "%000004de")))])), Blk(Tid(1_246, "%000004de"), - Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x868"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_256, "%000004e8"), 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_261, "%000004ed"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(687, "%000002af"))), Goto(Tid(2_188, "%0000088c"), Attrs([]), - Int(1,1), Direct(Tid(1_265, "%000004f1")))])), Blk(Tid(687, "%000002af"), - Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(695, "%000002b7"), Attrs([Attr("address","0x87C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x874"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x878"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_137, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_204, "%0000089c"), - 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(846, "@frame_dummy"), - Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x910"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_144, "@register_tm_clones")),))]))])), Sub(Tid(2_138, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_205, "%0000089d"), - 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_121, "@free"), Attrs([Attr("address","0x7F0")]), - Phis([]), Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7F0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), - Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_139, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_206, "%0000089e"), - 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_207, "%0000089f"), - 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_208, "%000008a0"), - 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(850, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(854, "%00000356"), - Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), -Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x918"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(866, "%00000362"), - Attrs([Attr("address","0x918"), 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(872, "%00000368"), Attrs([Attr("address","0x918"), -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(878, "%0000036e"), Attrs([Attr("address","0x91C"), -Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(885, "%00000375"), - Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x924"), -Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(897, "%00000381"), Attrs([Attr("address","0x928"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(902, "%00000386"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(905, "%00000389"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_140, "@malloc")),Direct(Tid(907, "%0000038b"))))])), -Blk(Tid(907, "%0000038b"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x930"), -Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(918, "%00000396"), Attrs([Attr("address","0x934"), -Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x938"), -Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(933, "%000003a5"), Attrs([Attr("address","0x93C"), -Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x940"), -Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x944"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(952, "%000003b8"), Attrs([Attr("address","0x948"), -Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(960, "%000003c0"), - Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x950"), -Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), -Jmps([Call(Tid(968, "%000003c8"), Attrs([Attr("address","0x950"), -Attr("insn","bl #-0x1e0")]), Int(1,1), -(Direct(Tid(2_147, "@strlen")),Direct(Tid(970, "%000003ca"))))])), -Blk(Tid(970, "%000003ca"), Attrs([Attr("address","0x954")]), Phis([]), -Defs([Def(Tid(975, "%000003cf"), Attrs([Attr("address","0x954"), -Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x958"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(988, "%000003dc"), Attrs([Attr("address","0x95C"), -Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), -Jmps([Call(Tid(996, "%000003e4"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_141, "@memcpy")),Direct(Tid(998, "%000003e6"))))])), -Blk(Tid(998, "%000003e6"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x964"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x968"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x96C"), -Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), -Jmps([Call(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x96C"), -Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_143, "@puts")),Direct(Tid(1_020, "%000003fc"))))])), -Blk(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x970")]), Phis([]), -Defs([Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x970"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x974"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x978"), -Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_046, "%00000416"), - Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x980"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x984"), -Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x988"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x98C"), -Attr("insn","bl #-0x21c")]), Var("R30",Imm(64)), Int(2448,64))]), -Jmps([Call(Tid(1_075, "%00000433"), Attrs([Attr("address","0x98C"), -Attr("insn","bl #-0x21c")]), Int(1,1), -(Direct(Tid(2_147, "@strlen")),Direct(Tid(1_077, "%00000435"))))])), -Blk(Tid(1_077, "%00000435"), Attrs([Attr("address","0x990")]), Phis([]), -Defs([Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x990"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x994"), -Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x998"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x99C"), -Attr("insn","bl #-0x1ec")]), Var("R30",Imm(64)), Int(2464,64))]), -Jmps([Call(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x99C"), -Attr("insn","bl #-0x1ec")]), Int(1,1), -(Direct(Tid(2_142, "@memset")),Direct(Tid(1_103, "%0000044f"))))])), -Blk(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x9A0")]), Phis([]), -Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x9A0"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x9A4"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x9A8"), -Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2476,64))]), -Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x9A8"), -Attr("insn","bl #-0x1b8")]), Int(1,1), -(Direct(Tid(2_138, "@free")),Direct(Tid(1_125, "%00000465"))))])), -Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x9AC")]), Phis([]), -Defs([Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x9AC"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x9B0"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_139, "%00000473"), - Attrs([Attr("address","0x9B0"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), - Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), -Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x9B0"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x9B4"), -Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_155, "%00000483"), - Attrs([Attr("address","0x9B8"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_140, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_209, "%000008a1"), 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_210, "%000008a2"), - 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(903, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_141, "@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_211, "%000008a3"), 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_212, "%000008a4"), - 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_213, "%000008a5"), 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_214, "%000008a6"), 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(994, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_534, "%000005fe"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_541, "%00000605"), 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_547, "%0000060b"), Attrs([Attr("address","0x768"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_552, "%00000610"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_142, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x7B0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_215, "%000008a7"), 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_216, "%000008a8"), - 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_217, "%000008a9"), - 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_218, "%000008aa"), 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_099, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x7B0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), - Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_143, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x7E0"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_219, "%000008ab"), 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_220, "%000008ac"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_016, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x7E0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), - Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_144, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_221, "%000008ad"), - 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(697, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x880"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(706, "%000002c2"), Attrs([Attr("address","0x884"), -Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(711, "%000002c7"), - Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(717, "%000002cd"), - Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(724, "%000002d4"), 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(730, "%000002da"), 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(737, "%000002e1"), 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(743, "%000002e7"), 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(749, "%000002ed"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(747, "%000002eb"))), Goto(Tid(2_189, "%0000088d"), Attrs([]), - Int(1,1), Direct(Tid(1_216, "%000004c0")))])), Blk(Tid(1_216, "%000004c0"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_226, "%000004ca"), 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_231, "%000004cf"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(747, "%000002eb"))), Goto(Tid(2_190, "%0000088e"), Attrs([]), - Int(1,1), Direct(Tid(1_235, "%000004d3")))])), Blk(Tid(747, "%000002eb"), - Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(755, "%000002f3"), Attrs([Attr("address","0x8B8"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8B0"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x8B4"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_147, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_222, "%000008ae"), 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_223, "%000008af"), - 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(966, "@strlen"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_563, "%0000061b"), 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_569, "%00000621"), 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_574, "%00000626"), - 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/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index 546f63944..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,352 +0,0 @@ -0000088f: program -00000848: sub __cxa_finalize(__cxa_finalize_result) -00000890: __cxa_finalize_result :: out u32 = low:32[R0] - -000004bc: -00000640: R16 := 0x20000 -00000647: R17 := mem[R16 + 0x18, el]:u64 -0000064d: R16 := R16 + 0x18 -00000652: call R17 with noreturn - -00000849: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000891: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -000002f7: -000002fb: #3 := R31 - 0x20 -00000301: mem := mem with [#3, el]:u64 <- R29 -00000307: mem := mem with [#3 + 8, el]:u64 <- R30 -0000030b: R31 := #3 -00000311: R29 := R31 -00000319: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000031e: R19 := 0x20000 -00000325: R0 := pad:64[mem[R19 + 0x70]] -0000032b: when 0:0[R0] goto %00000329 -00000885: goto %00000485 - -00000485: -00000488: R0 := 0x1F000 -0000048f: R0 := mem[R0 + 0xFC8, el]:u64 -00000495: when R0 = 0 goto %00000493 -00000886: goto %000004ac - -000004ac: -000004af: R0 := 0x20000 -000004b6: R0 := mem[R0 + 0x58, el]:u64 -000004bb: R30 := 0x8F0 -000004be: call @__cxa_finalize with return %00000493 - -00000493: -0000049b: R30 := 0x8F4 -0000049d: call @deregister_tm_clones with return %0000049f - -0000049f: -000004a2: R0 := 1 -000004aa: mem := mem with [R19 + 0x70] <- 7:0[R0] -00000887: goto %00000329 - -00000329: -00000333: R19 := mem[R31 + 0x10, el]:u64 -0000033a: R29 := mem[R31, el]:u64 -0000033f: R30 := mem[R31 + 8, el]:u64 -00000343: R31 := R31 + 0x20 -00000348: call R30 with noreturn - -0000084d: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000892: __libc_start_main_main :: in u64 = R0 -00000893: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000894: __libc_start_main_arg3 :: in out u64 = R2 -00000895: __libc_start_main_auxv :: in out u64 = R3 -00000896: __libc_start_main_result :: out u32 = low:32[R0] - -00000250: -0000062a: R16 := 0x20000 -00000631: R17 := mem[R16 + 0x10, el]:u64 -00000637: R16 := R16 + 0x10 -0000063c: call R17 with noreturn - -0000084e: sub _fini(_fini_result) -00000897: _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 - -0000084f: sub _init(_init_result) -00000898: _init_result :: out u32 = low:32[R0] - -00000768: -0000076e: #7 := R31 - 0x10 -00000774: mem := mem with [#7, el]:u64 <- R29 -0000077a: mem := mem with [#7 + 8, el]:u64 <- R30 -0000077e: R31 := #7 -00000784: R29 := R31 -00000789: R30 := 0x738 -0000078b: call @call_weak_fn with return %0000078d - -0000078d: -00000792: R29 := mem[R31, el]:u64 -00000797: R30 := mem[R31 + 8, el]:u64 -0000079b: R31 := R31 + 0x10 -000007a0: call R30 with noreturn - -00000850: sub _start(_start_result) -00000899: _start_result :: out u32 = low:32[R0] - -00000211: -00000216: R29 := 0 -0000021b: R30 := 0 -00000221: R5 := R0 -00000228: R1 := mem[R31, el]:u64 -0000022e: R2 := R31 + 8 -00000234: R6 := R31 -00000239: R0 := 0x1F000 -00000240: R0 := mem[R0 + 0xFD8, el]:u64 -00000245: R3 := 0 -0000024a: R4 := 0 -0000024f: R30 := 0x830 -00000252: call @__libc_start_main with return %00000254 - -00000254: -00000257: R30 := 0x834 -0000025a: call @abort with return %00000888 - -00000888: -00000889: call @call_weak_fn with noreturn - -00000853: sub abort() - - -00000258: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x38, el]:u64 -000006a5: R16 := R16 + 0x38 -000006aa: call R17 with noreturn - -00000854: sub call_weak_fn(call_weak_fn_result) -0000089a: call_weak_fn_result :: out u32 = low:32[R0] - -0000025c: -0000025f: R0 := 0x1F000 -00000266: R0 := mem[R0 + 0xFD0, el]:u64 -0000026c: when R0 = 0 goto %0000026a -0000088a: goto %000004fc - -0000026a: -00000272: call R30 with noreturn - -000004fc: -000004ff: goto @__gmon_start__ - -000004fd: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x30, el]:u64 -0000068f: R16 := R16 + 0x30 -00000694: call R17 with noreturn - -00000856: sub deregister_tm_clones(deregister_tm_clones_result) -0000089b: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000278: -0000027b: R0 := 0x20000 -00000281: R0 := R0 + 0x70 -00000286: R1 := 0x20000 -0000028c: R1 := R1 + 0x70 -00000292: #1 := ~R0 -00000297: #2 := R1 + ~R0 -0000029d: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002a3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002a7: ZF := #2 + 1 = 0 -000002ab: NF := 63:63[#2 + 1] -000002b1: when ZF goto %000002af -0000088b: goto %000004de - -000004de: -000004e1: R1 := 0x1F000 -000004e8: R1 := mem[R1 + 0xFC0, el]:u64 -000004ed: when R1 = 0 goto %000002af -0000088c: goto %000004f1 - -000002af: -000002b7: call R30 with noreturn - -000004f1: -000004f5: R16 := R1 -000004fa: call R16 with noreturn - -00000859: sub frame_dummy(frame_dummy_result) -0000089c: frame_dummy_result :: out u32 = low:32[R0] - -0000034e: -00000350: call @register_tm_clones with noreturn - -0000085a: sub free(free_ptr) -0000089d: free_ptr :: in out u64 = R0 - -00000461: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x48, el]:u64 -000006d1: R16 := R16 + 0x48 -000006d6: call R17 with noreturn - -0000085b: sub main(main_argc, main_argv, main_result) -0000089e: main_argc :: in u32 = low:32[R0] -0000089f: main_argv :: in out u64 = R1 -000008a0: main_result :: out u32 = low:32[R0] - -00000352: -00000356: R31 := R31 - 0x40 -0000035c: #4 := R31 + 0x30 -00000362: mem := mem with [#4, el]:u64 <- R29 -00000368: mem := mem with [#4 + 8, el]:u64 <- R30 -0000036e: R29 := R31 + 0x30 -00000375: mem := mem with [R29 - 8, el]:u64 <- 0 -0000037c: mem := mem with [R29 - 0x10, el]:u64 <- 0 -00000381: R0 := 0xB -00000386: R30 := 0x930 -00000389: call @malloc with return %0000038b - -0000038b: -0000038e: R8 := 0x20000 -00000396: mem := mem with [R31 + 0x18, el]:u64 <- R8 -0000039e: mem := mem with [R8 + 0x78, el]:u64 <- R0 -000003a5: R8 := mem[R8 + 0x78, el]:u64 -000003ad: mem := mem with [R31 + 8, el]:u64 <- R8 -000003b2: R0 := 0x20000 -000003b8: R0 := R0 + 0x61 -000003c0: mem := mem with [R31, el]:u64 <- R0 -000003c5: R30 := 0x954 -000003c8: call @strlen with return %000003ca - -000003ca: -000003cf: R1 := mem[R31, el]:u64 -000003d5: R2 := R0 -000003dc: R0 := mem[R31 + 8, el]:u64 -000003e1: R30 := 0x964 -000003e4: call @memcpy with return %000003e6 - -000003e6: -000003eb: R8 := mem[R31 + 0x18, el]:u64 -000003f2: R0 := mem[R8 + 0x78, el]:u64 -000003f7: R30 := 0x970 -000003fa: call @puts with return %000003fc - -000003fc: -00000401: R8 := mem[R31 + 0x18, el]:u64 -00000408: R9 := mem[R8 + 0x78, el]:u64 -0000040e: R9 := R9 + 4 -00000416: mem := mem with [R29 - 8, el]:u64 <- R9 -0000041d: R9 := mem[R8 + 0x78, el]:u64 -00000425: mem := mem with [R31 + 0x10, el]:u64 <- R9 -0000042c: R0 := mem[R8 + 0x78, el]:u64 -00000431: R30 := 0x990 -00000433: call @strlen with return %00000435 - -00000435: -00000439: R2 := R0 -00000440: R0 := mem[R31 + 0x10, el]:u64 -00000445: R1 := 1 -0000044a: R30 := 0x9A0 -0000044d: call @memset with return %0000044f - -0000044f: -00000454: R8 := mem[R31 + 0x18, el]:u64 -0000045b: R0 := mem[R8 + 0x78, el]:u64 -00000460: R30 := 0x9AC -00000463: call @free with return %00000465 - -00000465: -00000468: R0 := 0 -0000046e: #5 := R31 + 0x30 -00000473: R29 := mem[#5, el]:u64 -00000478: R30 := mem[#5 + 8, el]:u64 -0000047e: R31 := R31 + 0x40 -00000483: call R30 with noreturn - -0000085c: sub malloc(malloc_size, malloc_result) -000008a1: malloc_size :: in u64 = R0 -000008a2: malloc_result :: out u64 = R0 - -00000387: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16 + 0x20, el]:u64 -00000663: R16 := R16 + 0x20 -00000668: call R17 with noreturn - -0000085d: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008a3: memcpy_dst :: in out u64 = R0 -000008a4: memcpy_src :: in out u64 = R1 -000008a5: memcpy_n :: in u64 = R2 -000008a6: memcpy_result :: out u64 = R0 - -000003e2: -000005fe: R16 := 0x20000 -00000605: R17 := mem[R16, el]:u64 -0000060b: R16 := R16 -00000610: call R17 with noreturn - -0000085e: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008a7: memset_buf :: in out u64 = R0 -000008a8: memset_c :: in u32 = low:32[R1] -000008a9: memset_n :: in u64 = R2 -000008aa: memset_result :: out u64 = R0 - -0000044b: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 0x28, el]:u64 -00000679: R16 := R16 + 0x28 -0000067e: call R17 with noreturn - -0000085f: sub puts(puts_s, puts_result) -000008ab: puts_s :: in u64 = R0 -000008ac: puts_result :: out u32 = low:32[R0] - -000003f8: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x40, el]:u64 -000006bb: R16 := R16 + 0x40 -000006c0: call R17 with noreturn - -00000860: sub register_tm_clones(register_tm_clones_result) -000008ad: register_tm_clones_result :: out u32 = low:32[R0] - -000002b9: -000002bc: R0 := 0x20000 -000002c2: R0 := R0 + 0x70 -000002c7: R1 := 0x20000 -000002cd: R1 := R1 + 0x70 -000002d4: R1 := R1 + ~R0 + 1 -000002da: R2 := 0.63:63[R1] -000002e1: R1 := R2 + (R1 ~>> 3) -000002e7: R1 := extend:64[63:1[R1]] -000002ed: when R1 = 0 goto %000002eb -0000088d: goto %000004c0 - -000004c0: -000004c3: R2 := 0x1F000 -000004ca: R2 := mem[R2 + 0xFE0, el]:u64 -000004cf: when R2 = 0 goto %000002eb -0000088e: goto %000004d3 - -000002eb: -000002f3: call R30 with noreturn - -000004d3: -000004d7: R16 := R2 -000004dc: call R16 with noreturn - -00000863: sub strlen(strlen_s, strlen_result) -000008ae: strlen_s :: in u64 = R0 -000008af: strlen_result :: out u64 = R0 - -000003c6: -00000614: R16 := 0x20000 -0000061b: R17 := mem[R16 + 8, el]:u64 -00000621: R16 := R16 + 8 -00000626: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index ff00bf9d2..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,145 +0,0 @@ - -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: 00000000000009bc 0 SECTION LOCAL DEFAULT 15 .fini - 16: 00000000000009d0 0 SECTION LOCAL DEFAULT 16 .rodata - 17: 00000000000009d4 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr - 18: 0000000000000a10 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: 0000000000000a24 0 NOTYPE LOCAL DEFAULT 18 $d - 32: 00000000000009d0 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: 00000000000009bc 0 NOTYPE LOCAL DEFAULT 15 $x - 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 39: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x - 40: 00000000000009c8 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: 0000000000000a38 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: 0000000000000a98 0 NOTYPE LOCAL DEFAULT 18 $d.4 - 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 62: 0000000000000ad4 0 NOTYPE LOCAL DEFAULT 18 $d - 63: 0000000000000ad4 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ - 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 65: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 66: 00000000000009d4 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: 00000000000009bc 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: 00000000000009d0 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 168 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/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index 80e54b967..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,761 +0,0 @@ -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 2492 20 2492)\n(code-region 2048 444 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 168)\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 2492 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 2492 20)\n(llvm:code-entry .text 2048 444)\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 2516 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 2776)\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 2516 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 2776)\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 2576 200 2576)\n(llvm:section-entry .eh_frame_hdr 2516 60 2516)\n(llvm:section-entry .rodata 2512 4 2512)\n(llvm:section-entry .fini 2492 20 2492)\n(llvm:section-entry .text 2048 444 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 168 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 2492 0 2492 2492)\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 2776 0)\n(mapped 130488 692 64952)\n(named-region 0 2776 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 444 .text)\n(named-region 2492 20 .fini)\n(named-region 2512 4 .rodata)\n(named-region 2516 60 .eh_frame_hdr)\n(named-region 2576 200 .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 2492 _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 444)\n(section 2492 20)\n(section 2512 4)\n(section 2516 60)\n(section 2576 200)\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 2776 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 168 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 2492 2492)\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e\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\xd8\x0a\x00\x00\x00\x00\x00\x00\xd8\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\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\x09\x00\x00\x00\x00\x00\x00\xd4\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\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\xf8\x2b\x75\x79\x61\xb5\xdb\xca\xf1\x1a\x80\xe2\x19\xfe\xd4\x6b\x7e\x87\xbf\x2e"), -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", 0x9BC, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9D0, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9D4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x2c\xfe\xff\xff\x50\x00\x00\x00\x7c\xfe\xff\xff\x64\x00\x00\x00\xac\xfe\xff\xff\x78\x00\x00\x00\xec\xfe\xff\xff\x8c\x00\x00\x00\x3c\xff\xff\xff\xb0\x00\x00\x00\x40\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0xA10, "\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\xd4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x10\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x2c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x58\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\x84\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\x24\x00\x00\x00\x18\x00\x00\x00\x60\xfe\xff\xff\xa8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x90\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\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\xbc\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x80\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x9d\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x79\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x85\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x92\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xAD7), Attr("segment","02 0 2776")), -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,0x9BB), Attr("symbol","\"main\"")), -Annotation(Region(0x914,0x9BB), Attr("symbol-info","main 0x914 168")), -Annotation(Region(0x9BC,0x9CF), Attr("section","\".fini\"")), -Annotation(Region(0x9D0,0x9D3), Attr("section","\".rodata\"")), -Annotation(Region(0x9D4,0xA0F), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0xA10,0xAD7), 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,0x9BB), Attr("section","\".text\"")), -Annotation(Region(0x800,0x9BB), Attr("code-region","()")), -Annotation(Region(0x9BC,0x9CF), Attr("code-region","()"))]), -Program(Tid(2_191, "%0000088f"), Attrs([]), - Subs([Sub(Tid(2_120, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_192, "%00000890"), - 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_212, "@__cxa_finalize"), - Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), 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_618, "%00000652"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_121, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_193, "%00000891"), - 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(759, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(763, "%000002fb"), - 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(769, "%00000301"), 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(775, "%00000307"), 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(779, "%0000030b"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(785, "%00000311"), - Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(793, "%00000319"), - 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(798, "%0000031e"), Attrs([Attr("address","0x8CC"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(805, "%00000325"), 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(811, "%0000032b"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(809, "%00000329"))), -Goto(Tid(2_181, "%00000885"), Attrs([]), Int(1,1), -Direct(Tid(1_157, "%00000485")))])), Blk(Tid(1_157, "%00000485"), - Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x8D8"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_167, "%0000048f"), 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_173, "%00000495"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_171, "%00000493"))), Goto(Tid(2_182, "%00000886"), Attrs([]), - Int(1,1), Direct(Tid(1_196, "%000004ac")))])), Blk(Tid(1_196, "%000004ac"), - Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_199, "%000004af"), Attrs([Attr("address","0x8E4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_206, "%000004b6"), 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_211, "%000004bb"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_214, "%000004be"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_120, "@__cxa_finalize")),Direct(Tid(1_171, "%00000493"))))])), -Blk(Tid(1_171, "%00000493"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_134, "@deregister_tm_clones")),Direct(Tid(1_183, "%0000049f"))))])), -Blk(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8F4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_194, "%000004aa"), 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_183, "%00000887"), Attrs([]), Int(1,1), -Direct(Tid(809, "%00000329")))])), Blk(Tid(809, "%00000329"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(819, "%00000333"), - 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(826, "%0000033a"), 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(831, "%0000033f"), 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(835, "%00000343"), 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(840, "%00000348"), - Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_125, "@__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_194, "%00000892"), - 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_195, "%00000893"), 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_196, "%00000894"), 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_197, "%00000895"), 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_198, "%00000896"), 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(592, "@__libc_start_main"), - Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_578, "%0000062a"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_585, "%00000631"), 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_591, "%00000637"), 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_596, "%0000063c"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_126, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9BC")]), - "_fini", Args([Arg(Tid(2_199, "%00000897"), - 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","0x9BC")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0x9C0"), -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","0x9C0"), -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","0x9C0"), -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","0x9C0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9C4"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9C8"), -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","0x9C8"), -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","0x9C8"), -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","0x9CC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_127, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), - "_init", Args([Arg(Tid(2_200, "%00000898"), - 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_896, "@_init"), - Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_908, "%00000774"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_914, "%0000077a"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_918, "%0000077e"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#7",Imm(64))), Def(Tid(1_924, "%00000784"), - Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_929, "%00000789"), - Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), - Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_931, "%0000078b"), - Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), -(Direct(Tid(2_132, "@call_weak_fn")),Direct(Tid(1_933, "%0000078d"))))])), -Blk(Tid(1_933, "%0000078d"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(1_938, "%00000792"), 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_943, "%00000797"), 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_947, "%0000079b"), 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_952, "%000007a0"), - Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_128, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), -Attr("stub","()"), Attr("entry-point","()")]), "_start", - Args([Arg(Tid(2_201, "%00000899"), 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(529, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(534, "%00000216"), Attrs([Attr("address","0x804"), -Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), -Def(Tid(539, "%0000021b"), Attrs([Attr("address","0x808"), -Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(545, "%00000221"), Attrs([Attr("address","0x80C"), -Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), -Def(Tid(552, "%00000228"), 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(558, "%0000022e"), Attrs([Attr("address","0x814"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(564, "%00000234"), - Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(569, "%00000239"), - Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(576, "%00000240"), - 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(581, "%00000245"), Attrs([Attr("address","0x824"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(586, "%0000024a"), Attrs([Attr("address","0x828"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(591, "%0000024f"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(594, "%00000252"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_125, "@__libc_start_main")),Direct(Tid(596, "%00000254"))))])), -Blk(Tid(596, "%00000254"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(599, "%00000257"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_131, "@abort")),Direct(Tid(2_184, "%00000888"))))])), -Blk(Tid(2_184, "%00000888"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_185, "%00000889"), Attrs([]), Int(1,1), -(Direct(Tid(2_132, "@call_weak_fn")),))]))])), Sub(Tid(2_131, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(600, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x7D0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), - Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_132, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), - "call_weak_fn", Args([Arg(Tid(2_202, "%0000089a"), - 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(604, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(607, "%0000025f"), - Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(614, "%00000266"), - 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(620, "%0000026c"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(618, "%0000026a"))), Goto(Tid(2_186, "%0000088a"), Attrs([]), - Int(1,1), Direct(Tid(1_276, "%000004fc")))])), Blk(Tid(618, "%0000026a"), - Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x844"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x840"), -Attr("insn","b #-0x80")]), Int(1,1), -Direct(Tid(1_277, "@__gmon_start__")))])), Blk(Tid(1_277, "@__gmon_start__"), - Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x7C0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_134, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_203, "%0000089b"), - 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(632, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(635, "%0000027b"), - Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(641, "%00000281"), - Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(646, "%00000286"), Attrs([Attr("address","0x858"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(652, "%0000028c"), Attrs([Attr("address","0x85C"), -Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(658, "%00000292"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(663, "%00000297"), - 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(669, "%0000029d"), 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(675, "%000002a3"), 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(679, "%000002a7"), 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(683, "%000002ab"), - 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(689, "%000002b1"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(687, "%000002af"))), Goto(Tid(2_187, "%0000088b"), Attrs([]), - Int(1,1), Direct(Tid(1_246, "%000004de")))])), Blk(Tid(1_246, "%000004de"), - Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x868"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_256, "%000004e8"), 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_261, "%000004ed"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(687, "%000002af"))), Goto(Tid(2_188, "%0000088c"), Attrs([]), - Int(1,1), Direct(Tid(1_265, "%000004f1")))])), Blk(Tid(687, "%000002af"), - Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(695, "%000002b7"), Attrs([Attr("address","0x87C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x874"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x878"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_137, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_204, "%0000089c"), - 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(846, "@frame_dummy"), - Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(848, "%00000350"), Attrs([Attr("address","0x910"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_144, "@register_tm_clones")),))]))])), Sub(Tid(2_138, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_205, "%0000089d"), - 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_121, "@free"), Attrs([Attr("address","0x7F0")]), - Phis([]), Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7F0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), - Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_139, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_206, "%0000089e"), - 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_207, "%0000089f"), - 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_208, "%000008a0"), - 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(850, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(854, "%00000356"), - Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), -Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x918"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(866, "%00000362"), - Attrs([Attr("address","0x918"), 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(872, "%00000368"), Attrs([Attr("address","0x918"), -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(878, "%0000036e"), Attrs([Attr("address","0x91C"), -Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(885, "%00000375"), - Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x924"), -Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(897, "%00000381"), Attrs([Attr("address","0x928"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(902, "%00000386"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(905, "%00000389"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_140, "@malloc")),Direct(Tid(907, "%0000038b"))))])), -Blk(Tid(907, "%0000038b"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x930"), -Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(918, "%00000396"), Attrs([Attr("address","0x934"), -Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x938"), -Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(933, "%000003a5"), Attrs([Attr("address","0x93C"), -Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x940"), -Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x944"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(952, "%000003b8"), Attrs([Attr("address","0x948"), -Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(960, "%000003c0"), - Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(965, "%000003c5"), Attrs([Attr("address","0x950"), -Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), -Jmps([Call(Tid(968, "%000003c8"), Attrs([Attr("address","0x950"), -Attr("insn","bl #-0x1e0")]), Int(1,1), -(Direct(Tid(2_147, "@strlen")),Direct(Tid(970, "%000003ca"))))])), -Blk(Tid(970, "%000003ca"), Attrs([Attr("address","0x954")]), Phis([]), -Defs([Def(Tid(975, "%000003cf"), Attrs([Attr("address","0x954"), -Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x958"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(988, "%000003dc"), Attrs([Attr("address","0x95C"), -Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), -Jmps([Call(Tid(996, "%000003e4"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_141, "@memcpy")),Direct(Tid(998, "%000003e6"))))])), -Blk(Tid(998, "%000003e6"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x964"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x968"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x96C"), -Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), -Jmps([Call(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x96C"), -Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_143, "@puts")),Direct(Tid(1_020, "%000003fc"))))])), -Blk(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x970")]), Phis([]), -Defs([Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x970"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_032, "%00000408"), Attrs([Attr("address","0x974"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x978"), -Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_046, "%00000416"), - Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x980"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x984"), -Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x988"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x98C"), -Attr("insn","bl #-0x21c")]), Var("R30",Imm(64)), Int(2448,64))]), -Jmps([Call(Tid(1_075, "%00000433"), Attrs([Attr("address","0x98C"), -Attr("insn","bl #-0x21c")]), Int(1,1), -(Direct(Tid(2_147, "@strlen")),Direct(Tid(1_077, "%00000435"))))])), -Blk(Tid(1_077, "%00000435"), Attrs([Attr("address","0x990")]), Phis([]), -Defs([Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x990"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_088, "%00000440"), Attrs([Attr("address","0x994"), -Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x998"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x99C"), -Attr("insn","bl #-0x1ec")]), Var("R30",Imm(64)), Int(2464,64))]), -Jmps([Call(Tid(1_101, "%0000044d"), Attrs([Attr("address","0x99C"), -Attr("insn","bl #-0x1ec")]), Int(1,1), -(Direct(Tid(2_142, "@memset")),Direct(Tid(1_103, "%0000044f"))))])), -Blk(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x9A0")]), Phis([]), -Defs([Def(Tid(1_108, "%00000454"), Attrs([Attr("address","0x9A0"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x9A4"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x9A8"), -Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2476,64))]), -Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x9A8"), -Attr("insn","bl #-0x1b8")]), Int(1,1), -(Direct(Tid(2_138, "@free")),Direct(Tid(1_125, "%00000465"))))])), -Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x9AC")]), Phis([]), -Defs([Def(Tid(1_128, "%00000468"), Attrs([Attr("address","0x9AC"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x9B0"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_139, "%00000473"), - Attrs([Attr("address","0x9B0"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), - Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), -Def(Tid(1_144, "%00000478"), Attrs([Attr("address","0x9B0"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x9B4"), -Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_155, "%00000483"), - Attrs([Attr("address","0x9B8"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_140, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_209, "%000008a1"), 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_210, "%000008a2"), - 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(903, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_141, "@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_211, "%000008a3"), 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_212, "%000008a4"), - 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_213, "%000008a5"), 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_214, "%000008a6"), 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(994, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_534, "%000005fe"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_541, "%00000605"), 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_547, "%0000060b"), Attrs([Attr("address","0x768"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_552, "%00000610"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_142, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x7B0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_215, "%000008a7"), 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_216, "%000008a8"), - 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_217, "%000008a9"), - 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_218, "%000008aa"), 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_099, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x7B0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), - Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_143, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x7E0"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_219, "%000008ab"), 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_220, "%000008ac"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_016, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x7E0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), - Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_144, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_221, "%000008ad"), - 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(697, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(700, "%000002bc"), Attrs([Attr("address","0x880"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(706, "%000002c2"), Attrs([Attr("address","0x884"), -Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(711, "%000002c7"), - Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(717, "%000002cd"), - Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(724, "%000002d4"), 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(730, "%000002da"), 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(737, "%000002e1"), 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(743, "%000002e7"), 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(749, "%000002ed"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(747, "%000002eb"))), Goto(Tid(2_189, "%0000088d"), Attrs([]), - Int(1,1), Direct(Tid(1_216, "%000004c0")))])), Blk(Tid(1_216, "%000004c0"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_226, "%000004ca"), 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_231, "%000004cf"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(747, "%000002eb"))), Goto(Tid(2_190, "%0000088e"), Attrs([]), - Int(1,1), Direct(Tid(1_235, "%000004d3")))])), Blk(Tid(747, "%000002eb"), - Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(755, "%000002f3"), Attrs([Attr("address","0x8B8"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_235, "%000004d3"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8B0"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x8B4"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_147, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_222, "%000008ae"), 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_223, "%000008af"), - 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(966, "@strlen"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_563, "%0000061b"), 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_569, "%00000621"), 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_574, "%00000626"), - 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index 546f63944..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,352 +0,0 @@ -0000088f: program -00000848: sub __cxa_finalize(__cxa_finalize_result) -00000890: __cxa_finalize_result :: out u32 = low:32[R0] - -000004bc: -00000640: R16 := 0x20000 -00000647: R17 := mem[R16 + 0x18, el]:u64 -0000064d: R16 := R16 + 0x18 -00000652: call R17 with noreturn - -00000849: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000891: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -000002f7: -000002fb: #3 := R31 - 0x20 -00000301: mem := mem with [#3, el]:u64 <- R29 -00000307: mem := mem with [#3 + 8, el]:u64 <- R30 -0000030b: R31 := #3 -00000311: R29 := R31 -00000319: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000031e: R19 := 0x20000 -00000325: R0 := pad:64[mem[R19 + 0x70]] -0000032b: when 0:0[R0] goto %00000329 -00000885: goto %00000485 - -00000485: -00000488: R0 := 0x1F000 -0000048f: R0 := mem[R0 + 0xFC8, el]:u64 -00000495: when R0 = 0 goto %00000493 -00000886: goto %000004ac - -000004ac: -000004af: R0 := 0x20000 -000004b6: R0 := mem[R0 + 0x58, el]:u64 -000004bb: R30 := 0x8F0 -000004be: call @__cxa_finalize with return %00000493 - -00000493: -0000049b: R30 := 0x8F4 -0000049d: call @deregister_tm_clones with return %0000049f - -0000049f: -000004a2: R0 := 1 -000004aa: mem := mem with [R19 + 0x70] <- 7:0[R0] -00000887: goto %00000329 - -00000329: -00000333: R19 := mem[R31 + 0x10, el]:u64 -0000033a: R29 := mem[R31, el]:u64 -0000033f: R30 := mem[R31 + 8, el]:u64 -00000343: R31 := R31 + 0x20 -00000348: call R30 with noreturn - -0000084d: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000892: __libc_start_main_main :: in u64 = R0 -00000893: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000894: __libc_start_main_arg3 :: in out u64 = R2 -00000895: __libc_start_main_auxv :: in out u64 = R3 -00000896: __libc_start_main_result :: out u32 = low:32[R0] - -00000250: -0000062a: R16 := 0x20000 -00000631: R17 := mem[R16 + 0x10, el]:u64 -00000637: R16 := R16 + 0x10 -0000063c: call R17 with noreturn - -0000084e: sub _fini(_fini_result) -00000897: _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 - -0000084f: sub _init(_init_result) -00000898: _init_result :: out u32 = low:32[R0] - -00000768: -0000076e: #7 := R31 - 0x10 -00000774: mem := mem with [#7, el]:u64 <- R29 -0000077a: mem := mem with [#7 + 8, el]:u64 <- R30 -0000077e: R31 := #7 -00000784: R29 := R31 -00000789: R30 := 0x738 -0000078b: call @call_weak_fn with return %0000078d - -0000078d: -00000792: R29 := mem[R31, el]:u64 -00000797: R30 := mem[R31 + 8, el]:u64 -0000079b: R31 := R31 + 0x10 -000007a0: call R30 with noreturn - -00000850: sub _start(_start_result) -00000899: _start_result :: out u32 = low:32[R0] - -00000211: -00000216: R29 := 0 -0000021b: R30 := 0 -00000221: R5 := R0 -00000228: R1 := mem[R31, el]:u64 -0000022e: R2 := R31 + 8 -00000234: R6 := R31 -00000239: R0 := 0x1F000 -00000240: R0 := mem[R0 + 0xFD8, el]:u64 -00000245: R3 := 0 -0000024a: R4 := 0 -0000024f: R30 := 0x830 -00000252: call @__libc_start_main with return %00000254 - -00000254: -00000257: R30 := 0x834 -0000025a: call @abort with return %00000888 - -00000888: -00000889: call @call_weak_fn with noreturn - -00000853: sub abort() - - -00000258: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x38, el]:u64 -000006a5: R16 := R16 + 0x38 -000006aa: call R17 with noreturn - -00000854: sub call_weak_fn(call_weak_fn_result) -0000089a: call_weak_fn_result :: out u32 = low:32[R0] - -0000025c: -0000025f: R0 := 0x1F000 -00000266: R0 := mem[R0 + 0xFD0, el]:u64 -0000026c: when R0 = 0 goto %0000026a -0000088a: goto %000004fc - -0000026a: -00000272: call R30 with noreturn - -000004fc: -000004ff: goto @__gmon_start__ - -000004fd: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x30, el]:u64 -0000068f: R16 := R16 + 0x30 -00000694: call R17 with noreturn - -00000856: sub deregister_tm_clones(deregister_tm_clones_result) -0000089b: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000278: -0000027b: R0 := 0x20000 -00000281: R0 := R0 + 0x70 -00000286: R1 := 0x20000 -0000028c: R1 := R1 + 0x70 -00000292: #1 := ~R0 -00000297: #2 := R1 + ~R0 -0000029d: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002a3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002a7: ZF := #2 + 1 = 0 -000002ab: NF := 63:63[#2 + 1] -000002b1: when ZF goto %000002af -0000088b: goto %000004de - -000004de: -000004e1: R1 := 0x1F000 -000004e8: R1 := mem[R1 + 0xFC0, el]:u64 -000004ed: when R1 = 0 goto %000002af -0000088c: goto %000004f1 - -000002af: -000002b7: call R30 with noreturn - -000004f1: -000004f5: R16 := R1 -000004fa: call R16 with noreturn - -00000859: sub frame_dummy(frame_dummy_result) -0000089c: frame_dummy_result :: out u32 = low:32[R0] - -0000034e: -00000350: call @register_tm_clones with noreturn - -0000085a: sub free(free_ptr) -0000089d: free_ptr :: in out u64 = R0 - -00000461: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x48, el]:u64 -000006d1: R16 := R16 + 0x48 -000006d6: call R17 with noreturn - -0000085b: sub main(main_argc, main_argv, main_result) -0000089e: main_argc :: in u32 = low:32[R0] -0000089f: main_argv :: in out u64 = R1 -000008a0: main_result :: out u32 = low:32[R0] - -00000352: -00000356: R31 := R31 - 0x40 -0000035c: #4 := R31 + 0x30 -00000362: mem := mem with [#4, el]:u64 <- R29 -00000368: mem := mem with [#4 + 8, el]:u64 <- R30 -0000036e: R29 := R31 + 0x30 -00000375: mem := mem with [R29 - 8, el]:u64 <- 0 -0000037c: mem := mem with [R29 - 0x10, el]:u64 <- 0 -00000381: R0 := 0xB -00000386: R30 := 0x930 -00000389: call @malloc with return %0000038b - -0000038b: -0000038e: R8 := 0x20000 -00000396: mem := mem with [R31 + 0x18, el]:u64 <- R8 -0000039e: mem := mem with [R8 + 0x78, el]:u64 <- R0 -000003a5: R8 := mem[R8 + 0x78, el]:u64 -000003ad: mem := mem with [R31 + 8, el]:u64 <- R8 -000003b2: R0 := 0x20000 -000003b8: R0 := R0 + 0x61 -000003c0: mem := mem with [R31, el]:u64 <- R0 -000003c5: R30 := 0x954 -000003c8: call @strlen with return %000003ca - -000003ca: -000003cf: R1 := mem[R31, el]:u64 -000003d5: R2 := R0 -000003dc: R0 := mem[R31 + 8, el]:u64 -000003e1: R30 := 0x964 -000003e4: call @memcpy with return %000003e6 - -000003e6: -000003eb: R8 := mem[R31 + 0x18, el]:u64 -000003f2: R0 := mem[R8 + 0x78, el]:u64 -000003f7: R30 := 0x970 -000003fa: call @puts with return %000003fc - -000003fc: -00000401: R8 := mem[R31 + 0x18, el]:u64 -00000408: R9 := mem[R8 + 0x78, el]:u64 -0000040e: R9 := R9 + 4 -00000416: mem := mem with [R29 - 8, el]:u64 <- R9 -0000041d: R9 := mem[R8 + 0x78, el]:u64 -00000425: mem := mem with [R31 + 0x10, el]:u64 <- R9 -0000042c: R0 := mem[R8 + 0x78, el]:u64 -00000431: R30 := 0x990 -00000433: call @strlen with return %00000435 - -00000435: -00000439: R2 := R0 -00000440: R0 := mem[R31 + 0x10, el]:u64 -00000445: R1 := 1 -0000044a: R30 := 0x9A0 -0000044d: call @memset with return %0000044f - -0000044f: -00000454: R8 := mem[R31 + 0x18, el]:u64 -0000045b: R0 := mem[R8 + 0x78, el]:u64 -00000460: R30 := 0x9AC -00000463: call @free with return %00000465 - -00000465: -00000468: R0 := 0 -0000046e: #5 := R31 + 0x30 -00000473: R29 := mem[#5, el]:u64 -00000478: R30 := mem[#5 + 8, el]:u64 -0000047e: R31 := R31 + 0x40 -00000483: call R30 with noreturn - -0000085c: sub malloc(malloc_size, malloc_result) -000008a1: malloc_size :: in u64 = R0 -000008a2: malloc_result :: out u64 = R0 - -00000387: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16 + 0x20, el]:u64 -00000663: R16 := R16 + 0x20 -00000668: call R17 with noreturn - -0000085d: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008a3: memcpy_dst :: in out u64 = R0 -000008a4: memcpy_src :: in out u64 = R1 -000008a5: memcpy_n :: in u64 = R2 -000008a6: memcpy_result :: out u64 = R0 - -000003e2: -000005fe: R16 := 0x20000 -00000605: R17 := mem[R16, el]:u64 -0000060b: R16 := R16 -00000610: call R17 with noreturn - -0000085e: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008a7: memset_buf :: in out u64 = R0 -000008a8: memset_c :: in u32 = low:32[R1] -000008a9: memset_n :: in u64 = R2 -000008aa: memset_result :: out u64 = R0 - -0000044b: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 0x28, el]:u64 -00000679: R16 := R16 + 0x28 -0000067e: call R17 with noreturn - -0000085f: sub puts(puts_s, puts_result) -000008ab: puts_s :: in u64 = R0 -000008ac: puts_result :: out u32 = low:32[R0] - -000003f8: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x40, el]:u64 -000006bb: R16 := R16 + 0x40 -000006c0: call R17 with noreturn - -00000860: sub register_tm_clones(register_tm_clones_result) -000008ad: register_tm_clones_result :: out u32 = low:32[R0] - -000002b9: -000002bc: R0 := 0x20000 -000002c2: R0 := R0 + 0x70 -000002c7: R1 := 0x20000 -000002cd: R1 := R1 + 0x70 -000002d4: R1 := R1 + ~R0 + 1 -000002da: R2 := 0.63:63[R1] -000002e1: R1 := R2 + (R1 ~>> 3) -000002e7: R1 := extend:64[63:1[R1]] -000002ed: when R1 = 0 goto %000002eb -0000088d: goto %000004c0 - -000004c0: -000004c3: R2 := 0x1F000 -000004ca: R2 := mem[R2 + 0xFE0, el]:u64 -000004cf: when R2 = 0 goto %000002eb -0000088e: goto %000004d3 - -000002eb: -000002f3: call R30 with noreturn - -000004d3: -000004d7: R16 := R2 -000004dc: call R16 with noreturn - -00000863: sub strlen(strlen_s, strlen_result) -000008ae: strlen_s :: in u64 = R0 -000008af: strlen_result :: out u64 = R0 - -000003c6: -00000614: R16 := 0x20000 -0000061b: R17 := mem[R16 + 8, el]:u64 -00000621: R16 := R16 + 8 -00000626: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index ff00bf9d2..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,145 +0,0 @@ - -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: 00000000000009bc 0 SECTION LOCAL DEFAULT 15 .fini - 16: 00000000000009d0 0 SECTION LOCAL DEFAULT 16 .rodata - 17: 00000000000009d4 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr - 18: 0000000000000a10 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: 0000000000000a24 0 NOTYPE LOCAL DEFAULT 18 $d - 32: 00000000000009d0 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: 00000000000009bc 0 NOTYPE LOCAL DEFAULT 15 $x - 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 39: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x - 40: 00000000000009c8 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: 0000000000000a38 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: 0000000000000a98 0 NOTYPE LOCAL DEFAULT 18 $d.4 - 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 62: 0000000000000ad4 0 NOTYPE LOCAL DEFAULT 18 $d - 63: 0000000000000ad4 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ - 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 65: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 66: 00000000000009d4 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: 00000000000009bc 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: 00000000000009d0 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 168 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/clang_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index 8f91289fb..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,767 +0,0 @@ -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 2564 20 2564)\n(code-region 2112 452 2112)\n(code-region 1904 192 1904)\n(code-region 1880 24 1880)\n(code-start 2164)\n(code-start 2112)\n(code-start 2388)\n(entry-point 2112)\n(external-reference 130992 _ITM_deregisterTMCloneTable)\n(external-reference 131000 __cxa_finalize)\n(external-reference 131008 __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 1880 0)\n(llvm:code-entry main 2388 176)\n(llvm:code-entry _start 2112 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 2564 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 2384 0)\n(llvm:code-entry __do_global_dtors_aux 2304 0)\n(llvm:code-entry register_tm_clones 2240 0)\n(llvm:code-entry deregister_tm_clones 2192 0)\n(llvm:code-entry call_weak_fn 2164 20)\n(llvm:code-entry .fini 2564 20)\n(llvm:code-entry .text 2112 452)\n(llvm:code-entry .plt 1904 192)\n(llvm:code-entry .init 1880 24)\n(llvm:elf-program-header 08 64936 600)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2588 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64952 496)\n(llvm:elf-program-header 03 64936 708)\n(llvm:elf-program-header 02 0 2848)\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 2588 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130488 496)\n(llvm:elf-virtual-program-header 03 130472 728)\n(llvm:elf-virtual-program-header 02 0 2848)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 2112)\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 131008 __gmon_start__)\n(llvm:name-reference 131000 __cxa_finalize)\n(llvm:name-reference 130992 _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 130984 64 65448)\n(llvm:section-entry .dynamic 130488 496 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 2648 200 2648)\n(llvm:section-entry .eh_frame_hdr 2588 60 2588)\n(llvm:section-entry .rodata 2584 4 2584)\n(llvm:section-entry .fini 2564 20 2564)\n(llvm:section-entry .text 2112 452 2112)\n(llvm:section-entry .plt 1904 192 1904)\n(llvm:section-entry .init 1880 24 1880)\n(llvm:section-entry .rela.plt 1640 240 1640)\n(llvm:section-entry .rela.dyn 1400 240 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 1880 0 1880 1880)\n(llvm:symbol-entry main 2388 176 2388 2388)\n(llvm:symbol-entry _start 2112 52 2112 2112)\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 2564 0 2564 2564)\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 2384 0 2384 2384)\n(llvm:symbol-entry __do_global_dtors_aux 2304 0 2304 2304)\n(llvm:symbol-entry register_tm_clones 2240 0 2240 2240)\n(llvm:symbol-entry deregister_tm_clones 2192 0 2192 2192)\n(llvm:symbol-entry call_weak_fn 2164 20 2164 2164)\n(mapped 0 2848 0)\n(mapped 130472 708 64936)\n(named-region 0 2848 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 179 .dynstr)\n(named-region 1316 30 .gnu.version)\n(named-region 1352 48 .gnu.version_r)\n(named-region 1400 240 .rela.dyn)\n(named-region 1640 240 .rela.plt)\n(named-region 1880 24 .init)\n(named-region 1904 192 .plt)\n(named-region 2112 452 .text)\n(named-region 2564 20 .fini)\n(named-region 2584 4 .rodata)\n(named-region 2588 60 .eh_frame_hdr)\n(named-region 2648 200 .eh_frame)\n(named-region 130472 8 .init_array)\n(named-region 130480 8 .fini_array)\n(named-region 130488 496 .dynamic)\n(named-region 130984 64 .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 2164 call_weak_fn)\n(named-symbol 2192 deregister_tm_clones)\n(named-symbol 2240 register_tm_clones)\n(named-symbol 2304 __do_global_dtors_aux)\n(named-symbol 2384 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 2564 _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 2112 _start)\n(named-symbol 2388 main)\n(named-symbol 1880 _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 240)\n(section 1640 240)\n(section 1880 24)\n(section 1904 192)\n(section 2112 452)\n(section 2564 20)\n(section 2584 4)\n(section 2588 60)\n(section 2648 200)\n(section 130472 8)\n(section 130480 8)\n(section 130488 496)\n(section 130984 64)\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 2848 true false true)\n(segment 130472 728 true true false)\n(subarch v8)\n(symbol-chunk 2164 20 2164)\n(symbol-chunk 2112 52 2112)\n(symbol-chunk 2388 176 2388)\n(symbol-value 2164 2164)\n(symbol-value 2192 2192)\n(symbol-value 2240 2240)\n(symbol-value 2304 2304)\n(symbol-value 2384 2384)\n(symbol-value 2564 2564)\n(symbol-value 2112 2112)\n(symbol-value 2388 2388)\n(symbol-value 1880 1880)\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\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\x20\x0b\x00\x00\x00\x00\x00\x00\x20\x0b\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"), -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\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\x20\x0b\x00\x00\x00\x00\x00\x00\x20\x0b\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\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\x1c\x0a\x00\x00\x00\x00\x00\x00\x1c\x0a\x00\x00\x00\x00\x00\x00\x1c\x0a\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\x1f\xc2\x4d\xc4\x01\x0e\x07\x9b\x94\x0e\xcf\xf6\x4e\xe1\x2b\x70\xe7\xdf\xe6\x36\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\x40\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\x20\x0b\x00\x00\x00\x00\x00\x00\x20\x0b\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\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\x1c\x0a\x00\x00\x00\x00\x00\x00\x1c\x0a\x00\x00\x00\x00\x00\x00\x1c\x0a\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\x1f\xc2\x4d\xc4\x01\x0e\x07\x9b\x94\x0e\xcf\xf6\x4e\xe1\x2b\x70\xe7\xdf\xe6\x36\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\x58\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\xa8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x50\x09\x00\x00\x00\x00\x00\x00\xb0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x54\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91"), -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\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\x1f\xc2\x4d\xc4\x01\x0e\x07\x9b\x94\x0e\xcf\xf6\x4e\xe1\x2b\x70\xe7\xdf\xe6\x36"), -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\x58\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, "\xa8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x50\x09\x00\x00\x00\x00\x00\x00\xb0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x54\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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", 0x668, "\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", 0x758, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x770, "\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", 0xA04, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0xA18, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0xA1C, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x24\xfe\xff\xff\x50\x00\x00\x00\x74\xfe\xff\xff\x64\x00\x00\x00\xa4\xfe\xff\xff\x78\x00\x00\x00\xe4\xfe\xff\xff\x8c\x00\x00\x00\x34\xff\xff\xff\xb0\x00\x00\x00\x38\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0xA58, "\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\xcc\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x08\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x24\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x50\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\x7c\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\x24\x00\x00\x00\x18\x00\x00\x00\x58\xfe\xff\xff\xb0\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x98\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDB0, "\x00\x09\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\x0c\x00\x00\x00\x00\x00\x00\x00\x58\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x04\x0a\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\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\x68\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\xf0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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, "\x50\x09\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFA8, "\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\x78\x00\x02\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\x54\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\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\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", 0x840, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xe8\x00\x00\xf0\x08\xe5\x47\xf9\xe8\x0f\x00\xf9\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x96\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x00\xf9\x08\x01\x40\xf9\xe8\x07\x00\xf9\xe0\x00\x00\xf0\x00\xe8\x47\xf9\xe0\x03\x00\xf9\x82\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7a\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x97\xff\xff\x97\xe8\x0f\x40\xf9\x09\x01\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\x09\x01\x40\xf9\xe9\x0b\x00\xf9\x00\x01\x40\xf9\x73\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x7f\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x8c\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xB1F), Attr("segment","02 0 2848")), -Annotation(Region(0x840,0x873), 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,0x667), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x668,0x757), Attr("section","\".rela.plt\"")), -Annotation(Region(0x758,0x76F), Attr("section","\".init\"")), -Annotation(Region(0x770,0x82F), Attr("section","\".plt\"")), -Annotation(Region(0x758,0x76F), Attr("code-region","()")), -Annotation(Region(0x770,0x82F), Attr("code-region","()")), -Annotation(Region(0x840,0x873), Attr("symbol-info","_start 0x840 52")), -Annotation(Region(0x874,0x887), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x874,0x887), Attr("symbol-info","call_weak_fn 0x874 20")), -Annotation(Region(0x954,0xA03), Attr("symbol","\"main\"")), -Annotation(Region(0x954,0xA03), Attr("symbol-info","main 0x954 176")), -Annotation(Region(0xA04,0xA17), Attr("section","\".fini\"")), -Annotation(Region(0xA18,0xA1B), Attr("section","\".rodata\"")), -Annotation(Region(0xA1C,0xA57), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0xA58,0xB1F), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDA8,0x2006B), Attr("segment","03 0x1FDA8 728")), -Annotation(Region(0x1FDB0,0x1FDB7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDB8,0x1FFA7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDA8,0x1FDAF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFA8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), -Annotation(Region(0x840,0xA03), Attr("section","\".text\"")), -Annotation(Region(0x840,0xA03), Attr("code-region","()")), -Annotation(Region(0xA04,0xA17), Attr("code-region","()"))]), -Program(Tid(2_098, "%00000832"), Attrs([]), - Subs([Sub(Tid(2_027, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_099, "%00000833"), - 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_235, "@__cxa_finalize"), - Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_623, "%00000657"), Attrs([Attr("address","0x7C0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_630, "%0000065e"), Attrs([Attr("address","0x7C4"), -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_636, "%00000664"), Attrs([Attr("address","0x7C8"), -Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_641, "%00000669"), - Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_028, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_100, "%00000834"), - 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(767, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x900")]), Phis([]), Defs([Def(Tid(771, "%00000303"), - Attrs([Attr("address","0x900"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(777, "%00000309"), Attrs([Attr("address","0x900"), -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(783, "%0000030f"), Attrs([Attr("address","0x900"), -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(787, "%00000313"), Attrs([Attr("address","0x900"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(793, "%00000319"), - Attrs([Attr("address","0x904"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(801, "%00000321"), - Attrs([Attr("address","0x908"), 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(806, "%00000326"), Attrs([Attr("address","0x90C"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x910"), -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(819, "%00000333"), Attrs([Attr("address","0x914"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(817, "%00000331"))), -Goto(Tid(2_088, "%00000828"), Attrs([]), Int(1,1), -Direct(Tid(1_180, "%0000049c")))])), Blk(Tid(1_180, "%0000049c"), - Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x918"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x91C"), -Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x920"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_194, "%000004aa"))), Goto(Tid(2_089, "%00000829"), Attrs([]), - Int(1,1), Direct(Tid(1_219, "%000004c3")))])), Blk(Tid(1_219, "%000004c3"), - Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x924"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_229, "%000004cd"), Attrs([Attr("address","0x928"), -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_234, "%000004d2"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_027, "@__cxa_finalize")),Direct(Tid(1_194, "%000004aa"))))])), -Blk(Tid(1_194, "%000004aa"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x930"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2356,64))]), -Jmps([Call(Tid(1_204, "%000004b4"), Attrs([Attr("address","0x930"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_041, "@deregister_tm_clones")),Direct(Tid(1_206, "%000004b6"))))])), -Blk(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x934")]), Phis([]), -Defs([Def(Tid(1_209, "%000004b9"), Attrs([Attr("address","0x934"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_217, "%000004c1"), Attrs([Attr("address","0x938"), -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_090, "%0000082a"), Attrs([]), Int(1,1), -Direct(Tid(817, "%00000331")))])), Blk(Tid(817, "%00000331"), - Attrs([Attr("address","0x93C")]), Phis([]), Defs([Def(Tid(827, "%0000033b"), - Attrs([Attr("address","0x93C"), 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(834, "%00000342"), Attrs([Attr("address","0x940"), -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(839, "%00000347"), Attrs([Attr("address","0x940"), -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(843, "%0000034b"), Attrs([Attr("address","0x940"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(848, "%00000350"), - Attrs([Attr("address","0x944"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_032, "@__libc_start_main"), - Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), -Attr("address","0x7B0"), Attr("stub","()")]), "__libc_start_main", - Args([Arg(Tid(2_101, "%00000835"), - 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_102, "%00000836"), 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_103, "%00000837"), 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_104, "%00000838"), 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_105, "%00000839"), 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(600, "@__libc_start_main"), - Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_601, "%00000641"), Attrs([Attr("address","0x7B0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_608, "%00000648"), Attrs([Attr("address","0x7B4"), -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_614, "%0000064e"), Attrs([Attr("address","0x7B8"), -Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_619, "%00000653"), - Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_033, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0xA04")]), - "_fini", Args([Arg(Tid(2_106, "%0000083a"), - 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","0xA04")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0xA08"), -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","0xA08"), -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","0xA08"), -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","0xA08"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0xA0C"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0xA10"), -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","0xA10"), -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","0xA10"), -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","0xA14"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_034, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x758")]), - "_init", Args([Arg(Tid(2_107, "%0000083b"), - 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_801, "@_init"), - Attrs([Attr("address","0x758")]), Phis([]), -Defs([Def(Tid(1_807, "%0000070f"), Attrs([Attr("address","0x75C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_813, "%00000715"), Attrs([Attr("address","0x75C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x75C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_823, "%0000071f"), Attrs([Attr("address","0x75C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#7",Imm(64))), Def(Tid(1_829, "%00000725"), - Attrs([Attr("address","0x760"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_834, "%0000072a"), - Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1896,64))]), Jmps([Call(Tid(1_836, "%0000072c"), - Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_039, "@call_weak_fn")),Direct(Tid(1_838, "%0000072e"))))])), -Blk(Tid(1_838, "%0000072e"), Attrs([Attr("address","0x768")]), Phis([]), -Defs([Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x768"), -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_848, "%00000738"), Attrs([Attr("address","0x768"), -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_852, "%0000073c"), Attrs([Attr("address","0x768"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_857, "%00000741"), - Attrs([Attr("address","0x76C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_035, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_108, "%0000083c"), - 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(537, "@_start"), - Attrs([Attr("address","0x840")]), Phis([]), Defs([Def(Tid(542, "%0000021e"), - Attrs([Attr("address","0x844"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(547, "%00000223"), - Attrs([Attr("address","0x848"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(553, "%00000229"), - Attrs([Attr("address","0x84C"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(560, "%00000230"), - Attrs([Attr("address","0x850"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(566, "%00000236"), Attrs([Attr("address","0x854"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(572, "%0000023c"), - Attrs([Attr("address","0x858"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(577, "%00000241"), - Attrs([Attr("address","0x85C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(584, "%00000248"), - Attrs([Attr("address","0x860"), 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(589, "%0000024d"), Attrs([Attr("address","0x864"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(594, "%00000252"), Attrs([Attr("address","0x868"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(599, "%00000257"), Attrs([Attr("address","0x86C"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2160,64))]), -Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x86C"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_032, "@__libc_start_main")),Direct(Tid(604, "%0000025c"))))])), -Blk(Tid(604, "%0000025c"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x870"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2164,64))]), -Jmps([Call(Tid(610, "%00000262"), Attrs([Attr("address","0x870"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_038, "@abort")),Direct(Tid(2_091, "%0000082b"))))])), -Blk(Tid(2_091, "%0000082b"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_092, "%0000082c"), Attrs([]), Int(1,1), -(Direct(Tid(2_039, "@call_weak_fn")),))]))])), Sub(Tid(2_038, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x800"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(608, "@abort"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(1_711, "%000006af"), Attrs([Attr("address","0x800"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x804"), -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_724, "%000006bc"), Attrs([Attr("address","0x808"), -Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_729, "%000006c1"), - Attrs([Attr("address","0x80C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_039, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x874")]), - "call_weak_fn", Args([Arg(Tid(2_109, "%0000083d"), - 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(612, "@call_weak_fn"), - Attrs([Attr("address","0x874")]), Phis([]), Defs([Def(Tid(615, "%00000267"), - Attrs([Attr("address","0x874"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(622, "%0000026e"), - Attrs([Attr("address","0x878"), Attr("insn","ldr x0, [x0, #0xfc0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(628, "%00000274"), Attrs([Attr("address","0x87C"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(626, "%00000272"))), Goto(Tid(2_093, "%0000082d"), Attrs([]), - Int(1,1), Direct(Tid(1_299, "%00000513")))])), Blk(Tid(626, "%00000272"), - Attrs([Attr("address","0x884")]), Phis([]), Defs([]), -Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x884"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_299, "%00000513"), Attrs([Attr("address","0x880")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_302, "%00000516"), Attrs([Attr("address","0x880"), -Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_300, "@__gmon_start__")))])), Blk(Tid(1_300, "@__gmon_start__"), - Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(1_689, "%00000699"), Attrs([Attr("address","0x7F0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_696, "%000006a0"), Attrs([Attr("address","0x7F4"), -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_702, "%000006a6"), Attrs([Attr("address","0x7F8"), -Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_707, "%000006ab"), - Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_041, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x890")]), - "deregister_tm_clones", Args([Arg(Tid(2_110, "%0000083e"), - 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(640, "@deregister_tm_clones"), - Attrs([Attr("address","0x890")]), Phis([]), Defs([Def(Tid(643, "%00000283"), - Attrs([Attr("address","0x890"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(649, "%00000289"), - Attrs([Attr("address","0x894"), Attr("insn","add x0, x0, #0x70")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(654, "%0000028e"), Attrs([Attr("address","0x898"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(660, "%00000294"), Attrs([Attr("address","0x89C"), -Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(666, "%0000029a"), - Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(671, "%0000029f"), - Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(677, "%000002a5"), Attrs([Attr("address","0x8A0"), -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(683, "%000002ab"), Attrs([Attr("address","0x8A0"), -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(687, "%000002af"), Attrs([Attr("address","0x8A0"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(691, "%000002b3"), - Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(697, "%000002b9"), Attrs([Attr("address","0x8A4"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(695, "%000002b7"))), Goto(Tid(2_094, "%0000082e"), Attrs([]), - Int(1,1), Direct(Tid(1_269, "%000004f5")))])), Blk(Tid(1_269, "%000004f5"), - Attrs([Attr("address","0x8A8")]), Phis([]), -Defs([Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x8A8"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x8AC"), -Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_284, "%00000504"), Attrs([Attr("address","0x8B0"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(695, "%000002b7"))), Goto(Tid(2_095, "%0000082f"), Attrs([]), - Int(1,1), Direct(Tid(1_288, "%00000508")))])), Blk(Tid(695, "%000002b7"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([]), -Jmps([Call(Tid(703, "%000002bf"), Attrs([Attr("address","0x8BC"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_288, "%00000508"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x8B4"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_297, "%00000511"), Attrs([Attr("address","0x8B8"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_044, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x950")]), "frame_dummy", Args([Arg(Tid(2_111, "%0000083f"), - 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(854, "@frame_dummy"), - Attrs([Attr("address","0x950")]), Phis([]), Defs([]), -Jmps([Call(Tid(856, "%00000358"), Attrs([Attr("address","0x950"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_051, "@register_tm_clones")),))]))])), Sub(Tid(2_045, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x820"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_112, "%00000840"), - 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_144, "@free"), Attrs([Attr("address","0x820")]), - Phis([]), Defs([Def(Tid(1_755, "%000006db"), Attrs([Attr("address","0x820"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_762, "%000006e2"), Attrs([Attr("address","0x824"), -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_768, "%000006e8"), Attrs([Attr("address","0x828"), -Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_773, "%000006ed"), - Attrs([Attr("address","0x82C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_046, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x954")]), "main", Args([Arg(Tid(2_113, "%00000841"), - 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_114, "%00000842"), - 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_115, "%00000843"), - 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(858, "@main"), - Attrs([Attr("address","0x954")]), Phis([]), Defs([Def(Tid(862, "%0000035e"), - Attrs([Attr("address","0x954"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), -Def(Tid(868, "%00000364"), Attrs([Attr("address","0x958"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(874, "%0000036a"), - Attrs([Attr("address","0x958"), 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(880, "%00000370"), Attrs([Attr("address","0x958"), -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(886, "%00000376"), Attrs([Attr("address","0x95C"), -Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(891, "%0000037b"), - Attrs([Attr("address","0x960"), Attr("insn","adrp x8, #0x1f000")]), - Var("R8",Imm(64)), Int(126976,64)), Def(Tid(898, "%00000382"), - Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [x8, #0xfc8]")]), - Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(4040,64)),LittleEndian(),64)), -Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x968"), -Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(913, "%00000391"), Attrs([Attr("address","0x96C"), -Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(920, "%00000398"), Attrs([Attr("address","0x970"), -Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(925, "%0000039d"), Attrs([Attr("address","0x974"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(933, "%000003a5"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_047, "@malloc")),Direct(Tid(935, "%000003a7"))))])), -Blk(Tid(935, "%000003a7"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(940, "%000003ac"), Attrs([Attr("address","0x97C"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x980"), -Attr("insn","str x0, [x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R8",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(955, "%000003bb"), Attrs([Attr("address","0x984"), -Attr("insn","ldr x8, [x8]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x988"), -Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x98C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(975, "%000003cf"), Attrs([Attr("address","0x990"), -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)), -Def(Tid(983, "%000003d7"), Attrs([Attr("address","0x994"), -Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(988, "%000003dc"), Attrs([Attr("address","0x998"), -Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2460,64))]), -Jmps([Call(Tid(991, "%000003df"), Attrs([Attr("address","0x998"), -Attr("insn","bl #-0x1f8")]), Int(1,1), -(Direct(Tid(2_054, "@strlen")),Direct(Tid(993, "%000003e1"))))])), -Blk(Tid(993, "%000003e1"), Attrs([Attr("address","0x99C")]), Phis([]), -Defs([Def(Tid(998, "%000003e6"), Attrs([Attr("address","0x99C"), -Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_004, "%000003ec"), Attrs([Attr("address","0x9A0"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x9A4"), -Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x9A8"), -Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2476,64))]), -Jmps([Call(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x9A8"), -Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_048, "@memcpy")),Direct(Tid(1_021, "%000003fd"))))])), -Blk(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x9AC")]), Phis([]), -Defs([Def(Tid(1_026, "%00000402"), Attrs([Attr("address","0x9AC"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x9B0"), -Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x9B4"), -Attr("insn","bl #-0x1a4")]), Var("R30",Imm(64)), Int(2488,64))]), -Jmps([Call(Tid(1_041, "%00000411"), Attrs([Attr("address","0x9B4"), -Attr("insn","bl #-0x1a4")]), Int(1,1), -(Direct(Tid(2_050, "@puts")),Direct(Tid(1_043, "%00000413"))))])), -Blk(Tid(1_043, "%00000413"), Attrs([Attr("address","0x9B8")]), Phis([]), -Defs([Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x9B8"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x9BC"), -Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x9C0"), -Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_069, "%0000042d"), - Attrs([Attr("address","0x9C4"), Attr("insn","stur x9, [x29, #-0x8]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_076, "%00000434"), Attrs([Attr("address","0x9C8"), -Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x9CC"), -Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x9D0"), -Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x9D4"), -Attr("insn","bl #-0x234")]), Var("R30",Imm(64)), Int(2520,64))]), -Jmps([Call(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x9D4"), -Attr("insn","bl #-0x234")]), Int(1,1), -(Direct(Tid(2_054, "@strlen")),Direct(Tid(1_100, "%0000044c"))))])), -Blk(Tid(1_100, "%0000044c"), Attrs([Attr("address","0x9D8")]), Phis([]), -Defs([Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x9D8"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x9DC"), -Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x9E0"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x9E4"), -Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2536,64))]), -Jmps([Call(Tid(1_124, "%00000464"), Attrs([Attr("address","0x9E4"), -Attr("insn","bl #-0x204")]), Int(1,1), -(Direct(Tid(2_049, "@memset")),Direct(Tid(1_126, "%00000466"))))])), -Blk(Tid(1_126, "%00000466"), Attrs([Attr("address","0x9E8")]), Phis([]), -Defs([Def(Tid(1_131, "%0000046b"), Attrs([Attr("address","0x9E8"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x9EC"), -Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x9F0"), -Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2548,64))]), -Jmps([Call(Tid(1_146, "%0000047a"), Attrs([Attr("address","0x9F0"), -Attr("insn","bl #-0x1d0")]), Int(1,1), -(Direct(Tid(2_045, "@free")),Direct(Tid(1_148, "%0000047c"))))])), -Blk(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x9F4")]), Phis([]), -Defs([Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x9F4"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x9F8"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_162, "%0000048a"), - Attrs([Attr("address","0x9F8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), - Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), -Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x9F8"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x9FC"), -Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_178, "%0000049a"), - Attrs([Attr("address","0xA00"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_047, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x7D0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_116, "%00000844"), 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_117, "%00000845"), - 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(931, "@malloc"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_645, "%0000066d"), Attrs([Attr("address","0x7D0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_652, "%00000674"), Attrs([Attr("address","0x7D4"), -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_658, "%0000067a"), Attrs([Attr("address","0x7D8"), -Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_663, "%0000067f"), - Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_048, "@memcpy"), - Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), -Attr("address","0x790"), Attr("stub","()")]), "memcpy", - Args([Arg(Tid(2_118, "%00000846"), 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_119, "%00000847"), - 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_120, "%00000848"), 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_121, "%00000849"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_017, "@memcpy"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_557, "%00000615"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_564, "%0000061c"), Attrs([Attr("address","0x794"), -Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), -Def(Tid(1_570, "%00000622"), Attrs([Attr("address","0x798"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_575, "%00000627"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_049, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x7E0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_122, "%0000084a"), 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_123, "%0000084b"), - 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_124, "%0000084c"), - 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_125, "%0000084d"), 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_122, "@memset"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_667, "%00000683"), Attrs([Attr("address","0x7E0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_674, "%0000068a"), Attrs([Attr("address","0x7E4"), -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_680, "%00000690"), Attrs([Attr("address","0x7E8"), -Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_685, "%00000695"), - Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_050, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x810"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_126, "%0000084e"), 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_127, "%0000084f"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_039, "@puts"), Attrs([Attr("address","0x810")]), Phis([]), -Defs([Def(Tid(1_733, "%000006c5"), Attrs([Attr("address","0x810"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_740, "%000006cc"), Attrs([Attr("address","0x814"), -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_746, "%000006d2"), Attrs([Attr("address","0x818"), -Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_751, "%000006d7"), - Attrs([Attr("address","0x81C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_051, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "register_tm_clones", Args([Arg(Tid(2_128, "%00000850"), - 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(705, "@register_tm_clones"), Attrs([Attr("address","0x8C0")]), - Phis([]), Defs([Def(Tid(708, "%000002c4"), Attrs([Attr("address","0x8C0"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(714, "%000002ca"), Attrs([Attr("address","0x8C4"), -Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(719, "%000002cf"), - Attrs([Attr("address","0x8C8"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(725, "%000002d5"), - Attrs([Attr("address","0x8CC"), Attr("insn","add x1, x1, #0x70")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x8D0"), -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(738, "%000002e2"), Attrs([Attr("address","0x8D4"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(745, "%000002e9"), Attrs([Attr("address","0x8D8"), -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(751, "%000002ef"), Attrs([Attr("address","0x8DC"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(757, "%000002f5"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(755, "%000002f3"))), Goto(Tid(2_096, "%00000830"), Attrs([]), - Int(1,1), Direct(Tid(1_239, "%000004d7")))])), Blk(Tid(1_239, "%000004d7"), - Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_242, "%000004da"), Attrs([Attr("address","0x8E4"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8E8"), -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_254, "%000004e6"), Attrs([Attr("address","0x8EC"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(755, "%000002f3"))), Goto(Tid(2_097, "%00000831"), Attrs([]), - Int(1,1), Direct(Tid(1_258, "%000004ea")))])), Blk(Tid(755, "%000002f3"), - Attrs([Attr("address","0x8F8")]), Phis([]), Defs([]), -Jmps([Call(Tid(763, "%000002fb"), Attrs([Attr("address","0x8F8"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_258, "%000004ea"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x8F0"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_267, "%000004f3"), Attrs([Attr("address","0x8F4"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_054, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x7A0"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_129, "%00000851"), 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_130, "%00000852"), - 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(989, "@strlen"), - Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_579, "%0000062b"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_586, "%00000632"), Attrs([Attr("address","0x7A4"), -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_592, "%00000638"), Attrs([Attr("address","0x7A8"), -Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_597, "%0000063d"), - Attrs([Attr("address","0x7AC"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index eabcefde8..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,354 +0,0 @@ -00000832: program -000007eb: sub __cxa_finalize(__cxa_finalize_result) -00000833: __cxa_finalize_result :: out u32 = low:32[R0] - -000004d3: -00000657: R16 := 0x20000 -0000065e: R17 := mem[R16 + 0x18, el]:u64 -00000664: R16 := R16 + 0x18 -00000669: call R17 with noreturn - -000007ec: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000834: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -000002ff: -00000303: #3 := R31 - 0x20 -00000309: mem := mem with [#3, el]:u64 <- R29 -0000030f: mem := mem with [#3 + 8, el]:u64 <- R30 -00000313: R31 := #3 -00000319: R29 := R31 -00000321: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000326: R19 := 0x20000 -0000032d: R0 := pad:64[mem[R19 + 0x70]] -00000333: when 0:0[R0] goto %00000331 -00000828: goto %0000049c - -0000049c: -0000049f: R0 := 0x1F000 -000004a6: R0 := mem[R0 + 0xFB8, el]:u64 -000004ac: when R0 = 0 goto %000004aa -00000829: goto %000004c3 - -000004c3: -000004c6: R0 := 0x20000 -000004cd: R0 := mem[R0 + 0x58, el]:u64 -000004d2: R30 := 0x930 -000004d5: call @__cxa_finalize with return %000004aa - -000004aa: -000004b2: R30 := 0x934 -000004b4: call @deregister_tm_clones with return %000004b6 - -000004b6: -000004b9: R0 := 1 -000004c1: mem := mem with [R19 + 0x70] <- 7:0[R0] -0000082a: goto %00000331 - -00000331: -0000033b: R19 := mem[R31 + 0x10, el]:u64 -00000342: R29 := mem[R31, el]:u64 -00000347: R30 := mem[R31 + 8, el]:u64 -0000034b: R31 := R31 + 0x20 -00000350: call R30 with noreturn - -000007f0: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000835: __libc_start_main_main :: in u64 = R0 -00000836: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000837: __libc_start_main_arg3 :: in out u64 = R2 -00000838: __libc_start_main_auxv :: in out u64 = R3 -00000839: __libc_start_main_result :: out u32 = low:32[R0] - -00000258: -00000641: R16 := 0x20000 -00000648: R17 := mem[R16 + 0x10, el]:u64 -0000064e: R16 := R16 + 0x10 -00000653: call R17 with noreturn - -000007f1: sub _fini(_fini_result) -0000083a: _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 - -000007f2: sub _init(_init_result) -0000083b: _init_result :: out u32 = low:32[R0] - -00000709: -0000070f: #7 := R31 - 0x10 -00000715: mem := mem with [#7, el]:u64 <- R29 -0000071b: mem := mem with [#7 + 8, el]:u64 <- R30 -0000071f: R31 := #7 -00000725: R29 := R31 -0000072a: R30 := 0x768 -0000072c: call @call_weak_fn with return %0000072e - -0000072e: -00000733: R29 := mem[R31, el]:u64 -00000738: R30 := mem[R31 + 8, el]:u64 -0000073c: R31 := R31 + 0x10 -00000741: call R30 with noreturn - -000007f3: sub _start(_start_result) -0000083c: _start_result :: out u32 = low:32[R0] - -00000219: -0000021e: R29 := 0 -00000223: R30 := 0 -00000229: R5 := R0 -00000230: R1 := mem[R31, el]:u64 -00000236: R2 := R31 + 8 -0000023c: R6 := R31 -00000241: R0 := 0x1F000 -00000248: R0 := mem[R0 + 0xFD8, el]:u64 -0000024d: R3 := 0 -00000252: R4 := 0 -00000257: R30 := 0x870 -0000025a: call @__libc_start_main with return %0000025c - -0000025c: -0000025f: R30 := 0x874 -00000262: call @abort with return %0000082b - -0000082b: -0000082c: call @call_weak_fn with noreturn - -000007f6: sub abort() - - -00000260: -000006af: R16 := 0x20000 -000006b6: R17 := mem[R16 + 0x38, el]:u64 -000006bc: R16 := R16 + 0x38 -000006c1: call R17 with noreturn - -000007f7: sub call_weak_fn(call_weak_fn_result) -0000083d: call_weak_fn_result :: out u32 = low:32[R0] - -00000264: -00000267: R0 := 0x1F000 -0000026e: R0 := mem[R0 + 0xFC0, el]:u64 -00000274: when R0 = 0 goto %00000272 -0000082d: goto %00000513 - -00000272: -0000027a: call R30 with noreturn - -00000513: -00000516: goto @__gmon_start__ - -00000514: -00000699: R16 := 0x20000 -000006a0: R17 := mem[R16 + 0x30, el]:u64 -000006a6: R16 := R16 + 0x30 -000006ab: call R17 with noreturn - -000007f9: sub deregister_tm_clones(deregister_tm_clones_result) -0000083e: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000280: -00000283: R0 := 0x20000 -00000289: R0 := R0 + 0x70 -0000028e: R1 := 0x20000 -00000294: R1 := R1 + 0x70 -0000029a: #1 := ~R0 -0000029f: #2 := R1 + ~R0 -000002a5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002ab: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002af: ZF := #2 + 1 = 0 -000002b3: NF := 63:63[#2 + 1] -000002b9: when ZF goto %000002b7 -0000082e: goto %000004f5 - -000004f5: -000004f8: R1 := 0x1F000 -000004ff: R1 := mem[R1 + 0xFB0, el]:u64 -00000504: when R1 = 0 goto %000002b7 -0000082f: goto %00000508 - -000002b7: -000002bf: call R30 with noreturn - -00000508: -0000050c: R16 := R1 -00000511: call R16 with noreturn - -000007fc: sub frame_dummy(frame_dummy_result) -0000083f: frame_dummy_result :: out u32 = low:32[R0] - -00000356: -00000358: call @register_tm_clones with noreturn - -000007fd: sub free(free_ptr) -00000840: free_ptr :: in out u64 = R0 - -00000478: -000006db: R16 := 0x20000 -000006e2: R17 := mem[R16 + 0x48, el]:u64 -000006e8: R16 := R16 + 0x48 -000006ed: call R17 with noreturn - -000007fe: sub main(main_argc, main_argv, main_result) -00000841: main_argc :: in u32 = low:32[R0] -00000842: main_argv :: in out u64 = R1 -00000843: main_result :: out u32 = low:32[R0] - -0000035a: -0000035e: R31 := R31 - 0x40 -00000364: #4 := R31 + 0x30 -0000036a: mem := mem with [#4, el]:u64 <- R29 -00000370: mem := mem with [#4 + 8, el]:u64 <- R30 -00000376: R29 := R31 + 0x30 -0000037b: R8 := 0x1F000 -00000382: R8 := mem[R8 + 0xFC8, el]:u64 -0000038a: mem := mem with [R31 + 0x18, el]:u64 <- R8 -00000391: mem := mem with [R29 - 8, el]:u64 <- 0 -00000398: mem := mem with [R29 - 0x10, el]:u64 <- 0 -0000039d: R0 := 0xB -000003a2: R30 := 0x97C -000003a5: call @malloc with return %000003a7 - -000003a7: -000003ac: R8 := mem[R31 + 0x18, el]:u64 -000003b4: mem := mem with [R8, el]:u64 <- R0 -000003bb: R8 := mem[R8, el]:u64 -000003c3: mem := mem with [R31 + 8, el]:u64 <- R8 -000003c8: R0 := 0x1F000 -000003cf: R0 := mem[R0 + 0xFD0, el]:u64 -000003d7: mem := mem with [R31, el]:u64 <- R0 -000003dc: R30 := 0x99C -000003df: call @strlen with return %000003e1 - -000003e1: -000003e6: R1 := mem[R31, el]:u64 -000003ec: R2 := R0 -000003f3: R0 := mem[R31 + 8, el]:u64 -000003f8: R30 := 0x9AC -000003fb: call @memcpy with return %000003fd - -000003fd: -00000402: R8 := mem[R31 + 0x18, el]:u64 -00000409: R0 := mem[R8, el]:u64 -0000040e: R30 := 0x9B8 -00000411: call @puts with return %00000413 - -00000413: -00000418: R8 := mem[R31 + 0x18, el]:u64 -0000041f: R9 := mem[R8, el]:u64 -00000425: R9 := R9 + 4 -0000042d: mem := mem with [R29 - 8, el]:u64 <- R9 -00000434: R9 := mem[R8, el]:u64 -0000043c: mem := mem with [R31 + 0x10, el]:u64 <- R9 -00000443: R0 := mem[R8, el]:u64 -00000448: R30 := 0x9D8 -0000044a: call @strlen with return %0000044c - -0000044c: -00000450: R2 := R0 -00000457: R0 := mem[R31 + 0x10, el]:u64 -0000045c: R1 := 1 -00000461: R30 := 0x9E8 -00000464: call @memset with return %00000466 - -00000466: -0000046b: R8 := mem[R31 + 0x18, el]:u64 -00000472: R0 := mem[R8, el]:u64 -00000477: R30 := 0x9F4 -0000047a: call @free with return %0000047c - -0000047c: -0000047f: R0 := 0 -00000485: #5 := R31 + 0x30 -0000048a: R29 := mem[#5, el]:u64 -0000048f: R30 := mem[#5 + 8, el]:u64 -00000495: R31 := R31 + 0x40 -0000049a: call R30 with noreturn - -000007ff: sub malloc(malloc_size, malloc_result) -00000844: malloc_size :: in u64 = R0 -00000845: malloc_result :: out u64 = R0 - -000003a3: -0000066d: R16 := 0x20000 -00000674: R17 := mem[R16 + 0x20, el]:u64 -0000067a: R16 := R16 + 0x20 -0000067f: call R17 with noreturn - -00000800: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000846: memcpy_dst :: in out u64 = R0 -00000847: memcpy_src :: in out u64 = R1 -00000848: memcpy_n :: in u64 = R2 -00000849: memcpy_result :: out u64 = R0 - -000003f9: -00000615: R16 := 0x20000 -0000061c: R17 := mem[R16, el]:u64 -00000622: R16 := R16 -00000627: call R17 with noreturn - -00000801: sub memset(memset_buf, memset_c, memset_n, memset_result) -0000084a: memset_buf :: in out u64 = R0 -0000084b: memset_c :: in u32 = low:32[R1] -0000084c: memset_n :: in u64 = R2 -0000084d: memset_result :: out u64 = R0 - -00000462: -00000683: R16 := 0x20000 -0000068a: R17 := mem[R16 + 0x28, el]:u64 -00000690: R16 := R16 + 0x28 -00000695: call R17 with noreturn - -00000802: sub puts(puts_s, puts_result) -0000084e: puts_s :: in u64 = R0 -0000084f: puts_result :: out u32 = low:32[R0] - -0000040f: -000006c5: R16 := 0x20000 -000006cc: R17 := mem[R16 + 0x40, el]:u64 -000006d2: R16 := R16 + 0x40 -000006d7: call R17 with noreturn - -00000803: sub register_tm_clones(register_tm_clones_result) -00000850: register_tm_clones_result :: out u32 = low:32[R0] - -000002c1: -000002c4: R0 := 0x20000 -000002ca: R0 := R0 + 0x70 -000002cf: R1 := 0x20000 -000002d5: R1 := R1 + 0x70 -000002dc: R1 := R1 + ~R0 + 1 -000002e2: R2 := 0.63:63[R1] -000002e9: R1 := R2 + (R1 ~>> 3) -000002ef: R1 := extend:64[63:1[R1]] -000002f5: when R1 = 0 goto %000002f3 -00000830: goto %000004d7 - -000004d7: -000004da: R2 := 0x1F000 -000004e1: R2 := mem[R2 + 0xFE0, el]:u64 -000004e6: when R2 = 0 goto %000002f3 -00000831: goto %000004ea - -000002f3: -000002fb: call R30 with noreturn - -000004ea: -000004ee: R16 := R2 -000004f3: call R16 with noreturn - -00000806: sub strlen(strlen_s, strlen_result) -00000851: strlen_s :: in u64 = R0 -00000852: strlen_result :: out u64 = R0 - -000003dd: -0000062b: R16 := 0x20000 -00000632: R17 := mem[R16 + 8, el]:u64 -00000638: R16 := R16 + 8 -0000063d: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index f837a2922..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,147 +0,0 @@ - -Relocation section '.rela.dyn' at offset 0x578 contains 10 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fda8 0000000000000403 R_AARCH64_RELATIVE 950 -000000000001fdb0 0000000000000403 R_AARCH64_RELATIVE 900 -000000000001ffc8 0000000000000403 R_AARCH64_RELATIVE 20078 -000000000001ffd0 0000000000000403 R_AARCH64_RELATIVE 20061 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 954 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffb0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffb8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffc0 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 0x668 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: 0000000000000758 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: 0000000000000668 0 SECTION LOCAL DEFAULT 11 .rela.plt - 12: 0000000000000758 0 SECTION LOCAL DEFAULT 12 .init - 13: 0000000000000770 0 SECTION LOCAL DEFAULT 13 .plt - 14: 0000000000000840 0 SECTION LOCAL DEFAULT 14 .text - 15: 0000000000000a04 0 SECTION LOCAL DEFAULT 15 .fini - 16: 0000000000000a18 0 SECTION LOCAL DEFAULT 16 .rodata - 17: 0000000000000a1c 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr - 18: 0000000000000a58 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: 000000000001ffa8 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: 0000000000000840 0 NOTYPE LOCAL DEFAULT 14 $x - 31: 0000000000000a6c 0 NOTYPE LOCAL DEFAULT 18 $d - 32: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 16 $d - 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 34: 0000000000000874 0 NOTYPE LOCAL DEFAULT 14 $x - 35: 0000000000000874 20 FUNC LOCAL DEFAULT 14 call_weak_fn - 36: 0000000000000758 0 NOTYPE LOCAL DEFAULT 12 $x - 37: 0000000000000a04 0 NOTYPE LOCAL DEFAULT 15 $x - 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 39: 0000000000000768 0 NOTYPE LOCAL DEFAULT 12 $x - 40: 0000000000000a10 0 NOTYPE LOCAL DEFAULT 15 $x - 41: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 42: 0000000000000890 0 NOTYPE LOCAL DEFAULT 14 $x - 43: 0000000000000890 0 FUNC LOCAL DEFAULT 14 deregister_tm_clones - 44: 00000000000008c0 0 FUNC LOCAL DEFAULT 14 register_tm_clones - 45: 0000000000020058 0 NOTYPE LOCAL DEFAULT 24 $d - 46: 0000000000000900 0 FUNC LOCAL DEFAULT 14 __do_global_dtors_aux - 47: 0000000000020070 1 OBJECT LOCAL DEFAULT 25 completed.0 - 48: 000000000001fdb0 0 NOTYPE LOCAL DEFAULT 20 $d - 49: 000000000001fdb0 0 OBJECT LOCAL DEFAULT 20 __do_global_dtors_aux_fini_array_entry - 50: 0000000000000950 0 FUNC LOCAL DEFAULT 14 frame_dummy - 51: 000000000001fda8 0 NOTYPE LOCAL DEFAULT 19 $d - 52: 000000000001fda8 0 OBJECT LOCAL DEFAULT 19 __frame_dummy_init_array_entry - 53: 0000000000000a80 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: 0000000000000954 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: 0000000000000ae0 0 NOTYPE LOCAL DEFAULT 18 $d.4 - 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 62: 0000000000000b1c 0 NOTYPE LOCAL DEFAULT 18 $d - 63: 0000000000000b1c 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ - 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 65: 000000000001fdb8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 66: 0000000000000a1c 0 NOTYPE LOCAL DEFAULT 17 __GNU_EH_FRAME_HDR - 67: 000000000001ffa8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 68: 0000000000000770 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: 0000000000000a04 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: 0000000000000a18 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: 0000000000000840 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: 0000000000000954 176 FUNC GLOBAL DEFAULT 14 main - 97: 0000000000020070 0 OBJECT GLOBAL HIDDEN 24 __TMC_END__ - 98: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 99: 0000000000000758 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/gcc/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index 3ef42699d..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,774 +0,0 @@ -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 2460 20 2460)\n(code-region 1984 476 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 200)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2460 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2460 20)\n(llvm:code-entry .text 1984 476)\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 2484 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2720)\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 2484 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2720)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2544 176 2544)\n(llvm:section-entry .eh_frame_hdr 2484 60 2484)\n(llvm:section-entry .rodata 2480 4 2480)\n(llvm:section-entry .fini 2460 20 2460)\n(llvm:section-entry .text 1984 476 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 200 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2460 0 2460 2460)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2720 0)\n(mapped 130504 683 64968)\n(named-region 0 2720 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 476 .text)\n(named-region 2460 20 .fini)\n(named-region 2480 4 .rodata)\n(named-region 2484 60 .eh_frame_hdr)\n(named-region 2544 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2460 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 476)\n(section 2460 20)\n(section 2480 4)\n(section 2484 60)\n(section 2544 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2720 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 200 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2460 2460)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), -Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), -Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), -Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00"), -Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x99C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9B0, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9B4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x0c\xfe\xff\xff\x50\x00\x00\x00\x5c\xfe\xff\xff\x64\x00\x00\x00\x8c\xfe\xff\xff\x78\x00\x00\x00\xcc\xfe\xff\xff\x8c\x00\x00\x00\x1c\xff\xff\xff\xb0\x00\x00\x00\x20\xff\xff\xff\xc4\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\xb4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xf0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x0c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x38\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\x64\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x54\xfe\xff\xff\xc8\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x6e\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x9c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), -Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), -Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6e\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x86\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xA9F), Attr("segment","02 0 2720")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), -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,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x99B), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x99B), Attr("symbol-info","main 0x8D4 200")), -Annotation(Region(0x99C,0x9AF), Attr("section","\".fini\"")), -Annotation(Region(0x9B0,0x9B3), Attr("section","\".rodata\"")), -Annotation(Region(0x9B4,0x9EF), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x9F0,0xA9F), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), -Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), -Annotation(Region(0x7C0,0x99B), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x99B), Attr("code-region","()")), -Annotation(Region(0x99C,0x9AF), Attr("code-region","()"))]), -Program(Tid(2_147, "%00000863"), Attrs([]), - Subs([Sub(Tid(2_076, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_148, "%00000864"), - 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_278, "@__cxa_finalize"), - Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x740"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_077, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_149, "%00000865"), - 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(791, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(795, "%0000031b"), - Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(801, "%00000321"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(807, "%00000327"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(817, "%00000331"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(825, "%00000339"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(830, "%0000033e"), Attrs([Attr("address","0x88C"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(837, "%00000345"), Attrs([Attr("address","0x890"), -Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), -Jmps([Goto(Tid(843, "%0000034b"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(841, "%00000349"))), -Goto(Tid(2_137, "%00000859"), Attrs([]), Int(1,1), -Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x898"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x89C"), -Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_237, "%000004d5"))), Goto(Tid(2_138, "%0000085a"), Attrs([]), - Int(1,1), Direct(Tid(1_262, "%000004ee")))])), Blk(Tid(1_262, "%000004ee"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_265, "%000004f1"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x8A8"), -Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_280, "%00000500"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_076, "@__cxa_finalize")),Direct(Tid(1_237, "%000004d5"))))])), -Blk(Tid(1_237, "%000004d5"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_247, "%000004df"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_090, "@deregister_tm_clones")),Direct(Tid(1_249, "%000004e1"))))])), -Blk(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_252, "%000004e4"), Attrs([Attr("address","0x8B4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_260, "%000004ec"), Attrs([Attr("address","0x8B8"), -Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), -Jmps([Goto(Tid(2_139, "%0000085b"), Attrs([]), Int(1,1), -Direct(Tid(841, "%00000349")))])), Blk(Tid(841, "%00000349"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(851, "%00000353"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(858, "%0000035a"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(863, "%0000035f"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(867, "%00000363"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(872, "%00000368"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_081, "@__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_150, "%00000866"), - 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_151, "%00000867"), 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_152, "%00000868"), 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_153, "%00000869"), 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_154, "%0000086a"), 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(624, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x730"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_082, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x99C")]), - "_fini", Args([Arg(Tid(2_155, "%0000086b"), - 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","0x99C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0x9A0"), -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","0x9A0"), -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","0x9A0"), -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","0x9A0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9A4"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9A8"), -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","0x9A8"), -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","0x9A8"), -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","0x9AC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_083, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_156, "%0000086c"), - 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_844, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_850, "%0000073a"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_856, "%00000740"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_862, "%00000746"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_866, "%0000074a"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#6",Imm(64))), Def(Tid(1_872, "%00000750"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_877, "%00000755"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_879, "%00000757"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_088, "@call_weak_fn")),Direct(Tid(1_881, "%00000759"))))])), -Blk(Tid(1_881, "%00000759"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_886, "%0000075e"), 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_891, "%00000763"), 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_895, "%00000767"), 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_900, "%0000076c"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_084, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_157, "%0000086d"), - 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(561, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(566, "%00000236"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(571, "%0000023b"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(577, "%00000241"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(584, "%00000248"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(590, "%0000024e"), Attrs([Attr("address","0x7D4"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(596, "%00000254"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(601, "%00000259"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(608, "%00000260"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(613, "%00000265"), Attrs([Attr("address","0x7E4"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(618, "%0000026a"), Attrs([Attr("address","0x7E8"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(623, "%0000026f"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(626, "%00000272"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_081, "@__libc_start_main")),Direct(Tid(628, "%00000274"))))])), -Blk(Tid(628, "%00000274"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_087, "@abort")),Direct(Tid(2_140, "%0000085c"))))])), -Blk(Tid(2_140, "%0000085c"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_141, "%0000085d"), Attrs([]), Int(1,1), -(Direct(Tid(2_088, "@call_weak_fn")),))]))])), Sub(Tid(2_087, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(632, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_761, "%000006e1"), 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_767, "%000006e7"), 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_772, "%000006ec"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_088, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_158, "%0000086e"), - 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(636, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(639, "%0000027f"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(646, "%00000286"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(652, "%0000028c"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(650, "%0000028a"))), Goto(Tid(2_142, "%0000085e"), Attrs([]), - Int(1,1), Direct(Tid(1_342, "%0000053e")))])), Blk(Tid(650, "%0000028a"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(658, "%00000292"), Attrs([Attr("address","0x804"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_342, "%0000053e"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_345, "%00000541"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_343, "@__gmon_start__")))])), Blk(Tid(1_343, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_090, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_159, "%0000086f"), - 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(664, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(667, "%0000029b"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(673, "%000002a1"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x818"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(684, "%000002ac"), Attrs([Attr("address","0x81C"), -Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(690, "%000002b2"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(695, "%000002b7"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), -NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(707, "%000002c3"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), -NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(711, "%000002c7"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(715, "%000002cb"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(721, "%000002d1"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(719, "%000002cf"))), Goto(Tid(2_143, "%0000085f"), Attrs([]), - Int(1,1), Direct(Tid(1_312, "%00000520")))])), Blk(Tid(1_312, "%00000520"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_315, "%00000523"), Attrs([Attr("address","0x828"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_322, "%0000052a"), Attrs([Attr("address","0x82C"), -Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(719, "%000002cf"))), Goto(Tid(2_144, "%00000860"), Attrs([]), - Int(1,1), Direct(Tid(1_331, "%00000533")))])), Blk(Tid(719, "%000002cf"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(727, "%000002d7"), Attrs([Attr("address","0x83C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_331, "%00000533"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_335, "%00000537"), Attrs([Attr("address","0x834"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x838"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_093, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_160, "%00000870"), - 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(878, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(880, "%00000370"), Attrs([Attr("address","0x8D0"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_100, "@register_tm_clones")),))]))])), Sub(Tid(2_094, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_161, "%00000871"), - 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_186, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_805, "%0000070d"), 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_811, "%00000713"), 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_816, "%00000718"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_095, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_162, "%00000872"), - 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_163, "%00000873"), - 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_164, "%00000874"), - 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(882, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(886, "%00000376"), - Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(898, "%00000382"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(902, "%00000386"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#4",Imm(64))), Def(Tid(908, "%0000038c"), - Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(916, "%00000394"), - Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x8E0"), -Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(930, "%000003a2"), Attrs([Attr("address","0x8E4"), -Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x8E8"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(940, "%000003ac"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(943, "%000003af"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_096, "@malloc")),Direct(Tid(945, "%000003b1"))))])), -Blk(Tid(945, "%000003b1"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x8F0"), -Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x8F4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x8F8"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(968, "%000003c8"), - Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x900"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(979, "%000003d3"), Attrs([Attr("address","0x904"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(986, "%000003da"), - Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(991, "%000003df"), Attrs([Attr("address","0x90C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(997, "%000003e5"), Attrs([Attr("address","0x910"), -Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_002, "%000003ea"), - Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), - Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_005, "%000003ed"), - Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_007, "%000003ef"))))])), -Blk(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x918"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x91C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x920"), -Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_028, "%00000404"), - Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_033, "%00000409"), - Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_036, "%0000040c"), - Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_097, "@memcpy")),Direct(Tid(1_038, "%0000040e"))))])), -Blk(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x92C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x930"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_054, "%0000041e"), - Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_062, "%00000426"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_099, "@puts")),Direct(Tid(1_064, "%00000428"))))])), -Blk(Tid(1_064, "%00000428"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x93C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x940"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_080, "%00000438"), - Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x948"), -Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_094, "%00000446"), - Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x950"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_105, "%00000451"), Attrs([Attr("address","0x954"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_112, "%00000458"), - Attrs([Attr("address","0x958"), Attr("insn","ldr x19, [x0]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x95C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x960"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_130, "%0000046a"), - Attrs([Attr("address","0x964"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x248")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_137, "%00000471"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x248")]), Int(1,1), -(Direct(Tid(2_103, "@strlen")),Direct(Tid(1_139, "%00000473"))))])), -Blk(Tid(1_139, "%00000473"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x96C"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x970"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_154, "%00000482"), Attrs([Attr("address","0x974"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(1_162, "%0000048a"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_098, "@memset")),Direct(Tid(1_164, "%0000048c"))))])), -Blk(Tid(1_164, "%0000048c"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x97C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x980"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_180, "%0000049c"), - Attrs([Attr("address","0x984"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_185, "%000004a1"), Attrs([Attr("address","0x988"), -Attr("insn","bl #-0x1e8")]), Var("R30",Imm(64)), Int(2444,64))]), -Jmps([Call(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x988"), -Attr("insn","bl #-0x1e8")]), Int(1,1), -(Direct(Tid(2_094, "@free")),Direct(Tid(1_190, "%000004a6"))))])), -Blk(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x98C")]), Phis([]), -Defs([Def(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x98C"), -Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x990"), -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_207, "%000004b7"), Attrs([Attr("address","0x994"), -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_212, "%000004bc"), Attrs([Attr("address","0x994"), -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_216, "%000004c0"), Attrs([Attr("address","0x994"), -Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_221, "%000004c5"), - Attrs([Attr("address","0x998"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_096, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_165, "%00000875"), 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_166, "%00000876"), - 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(941, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x750"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_097, "@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_167, "%00000877"), 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_168, "%00000878"), - 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_169, "%00000879"), 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_170, "%0000087a"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_034, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x710"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), Attrs([Attr("address","0x718"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_618, "%00000652"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_098, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_171, "%0000087b"), 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_172, "%0000087c"), - 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_173, "%0000087d"), - 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_174, "%0000087e"), 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_160, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_099, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_175, "%0000087f"), 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_176, "%00000880"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_060, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_783, "%000006f7"), 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_789, "%000006fd"), 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_794, "%00000702"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_100, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_177, "%00000881"), - 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(729, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x840"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(738, "%000002e2"), Attrs([Attr("address","0x844"), -Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(743, "%000002e7"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(749, "%000002ed"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(756, "%000002f4"), Attrs([Attr("address","0x850"), -Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x854"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(769, "%00000301"), Attrs([Attr("address","0x858"), -Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(775, "%00000307"), Attrs([Attr("address","0x85C"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(781, "%0000030d"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(779, "%0000030b"))), Goto(Tid(2_145, "%00000861"), Attrs([]), - Int(1,1), Direct(Tid(1_282, "%00000502")))])), Blk(Tid(1_282, "%00000502"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_285, "%00000505"), Attrs([Attr("address","0x864"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x868"), -Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_297, "%00000511"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(779, "%0000030b"))), Goto(Tid(2_146, "%00000862"), Attrs([]), - Int(1,1), Direct(Tid(1_301, "%00000515")))])), Blk(Tid(779, "%0000030b"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(787, "%00000313"), Attrs([Attr("address","0x878"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_301, "%00000515"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_305, "%00000519"), Attrs([Attr("address","0x870"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x874"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_103, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_178, "%00000882"), 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_179, "%00000883"), - Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), -Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_003, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x720"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), - 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/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index c1288beb8..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,361 +0,0 @@ -00000863: program -0000081c: sub __cxa_finalize(__cxa_finalize_result) -00000864: __cxa_finalize_result :: out u32 = low:32[R0] - -000004fe: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x18, el]:u64 -0000068f: R16 := R16 + 0x18 -00000694: call R17 with noreturn - -0000081d: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000865: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000317: -0000031b: #3 := R31 - 0x20 -00000321: mem := mem with [#3, el]:u64 <- R29 -00000327: mem := mem with [#3 + 8, el]:u64 <- R30 -0000032b: R31 := #3 -00000331: R29 := R31 -00000339: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000033e: R19 := 0x20000 -00000345: R0 := pad:64[mem[R19 + 0x78]] -0000034b: when 0:0[R0] goto %00000349 -00000859: goto %000004c7 - -000004c7: -000004ca: R0 := 0x1F000 -000004d1: R0 := mem[R0 + 0xFC8, el]:u64 -000004d7: when R0 = 0 goto %000004d5 -0000085a: goto %000004ee - -000004ee: -000004f1: R0 := 0x20000 -000004f8: R0 := mem[R0 + 0x58, el]:u64 -000004fd: R30 := 0x8B0 -00000500: call @__cxa_finalize with return %000004d5 - -000004d5: -000004dd: R30 := 0x8B4 -000004df: call @deregister_tm_clones with return %000004e1 - -000004e1: -000004e4: R0 := 1 -000004ec: mem := mem with [R19 + 0x78] <- 7:0[R0] -0000085b: goto %00000349 - -00000349: -00000353: R19 := mem[R31 + 0x10, el]:u64 -0000035a: R29 := mem[R31, el]:u64 -0000035f: R30 := mem[R31 + 8, el]:u64 -00000363: R31 := R31 + 0x20 -00000368: call R30 with noreturn - -00000821: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000866: __libc_start_main_main :: in u64 = R0 -00000867: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000868: __libc_start_main_arg3 :: in out u64 = R2 -00000869: __libc_start_main_auxv :: in out u64 = R3 -0000086a: __libc_start_main_result :: out u32 = low:32[R0] - -00000270: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 0x10, el]:u64 -00000679: R16 := R16 + 0x10 -0000067e: call R17 with noreturn - -00000822: sub _fini(_fini_result) -0000086b: _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 - -00000823: sub _init(_init_result) -0000086c: _init_result :: out u32 = low:32[R0] - -00000734: -0000073a: #6 := R31 - 0x10 -00000740: mem := mem with [#6, el]:u64 <- R29 -00000746: mem := mem with [#6 + 8, el]:u64 <- R30 -0000074a: R31 := #6 -00000750: R29 := R31 -00000755: R30 := 0x6E8 -00000757: call @call_weak_fn with return %00000759 - -00000759: -0000075e: R29 := mem[R31, el]:u64 -00000763: R30 := mem[R31 + 8, el]:u64 -00000767: R31 := R31 + 0x10 -0000076c: call R30 with noreturn - -00000824: sub _start(_start_result) -0000086d: _start_result :: out u32 = low:32[R0] - -00000231: -00000236: R29 := 0 -0000023b: R30 := 0 -00000241: R5 := R0 -00000248: R1 := mem[R31, el]:u64 -0000024e: R2 := R31 + 8 -00000254: R6 := R31 -00000259: R0 := 0x1F000 -00000260: R0 := mem[R0 + 0xFD8, el]:u64 -00000265: R3 := 0 -0000026a: R4 := 0 -0000026f: R30 := 0x7F0 -00000272: call @__libc_start_main with return %00000274 - -00000274: -00000277: R30 := 0x7F4 -0000027a: call @abort with return %0000085c - -0000085c: -0000085d: call @call_weak_fn with noreturn - -00000827: sub abort() - - -00000278: -000006da: R16 := 0x20000 -000006e1: R17 := mem[R16 + 0x38, el]:u64 -000006e7: R16 := R16 + 0x38 -000006ec: call R17 with noreturn - -00000828: sub call_weak_fn(call_weak_fn_result) -0000086e: call_weak_fn_result :: out u32 = low:32[R0] - -0000027c: -0000027f: R0 := 0x1F000 -00000286: R0 := mem[R0 + 0xFD0, el]:u64 -0000028c: when R0 = 0 goto %0000028a -0000085e: goto %0000053e - -0000028a: -00000292: call R30 with noreturn - -0000053e: -00000541: goto @__gmon_start__ - -0000053f: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x30, el]:u64 -000006d1: R16 := R16 + 0x30 -000006d6: call R17 with noreturn - -0000082a: sub deregister_tm_clones(deregister_tm_clones_result) -0000086f: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000298: -0000029b: R0 := 0x20000 -000002a1: R0 := R0 + 0x78 -000002a6: R1 := 0x20000 -000002ac: R1 := R1 + 0x78 -000002b2: #1 := ~R0 -000002b7: #2 := R1 + ~R0 -000002bd: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002c3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002c7: ZF := #2 + 1 = 0 -000002cb: NF := 63:63[#2 + 1] -000002d1: when ZF goto %000002cf -0000085f: goto %00000520 - -00000520: -00000523: R1 := 0x1F000 -0000052a: R1 := mem[R1 + 0xFC0, el]:u64 -0000052f: when R1 = 0 goto %000002cf -00000860: goto %00000533 - -000002cf: -000002d7: call R30 with noreturn - -00000533: -00000537: R16 := R1 -0000053c: call R16 with noreturn - -0000082d: sub frame_dummy(frame_dummy_result) -00000870: frame_dummy_result :: out u32 = low:32[R0] - -0000036e: -00000370: call @register_tm_clones with noreturn - -0000082e: sub free(free_ptr) -00000871: free_ptr :: in out u64 = R0 - -000004a2: -00000706: R16 := 0x20000 -0000070d: R17 := mem[R16 + 0x48, el]:u64 -00000713: R16 := R16 + 0x48 -00000718: call R17 with noreturn - -0000082f: sub main(main_argc, main_argv, main_result) -00000872: main_argc :: in u32 = low:32[R0] -00000873: main_argv :: in out u64 = R1 -00000874: main_result :: out u32 = low:32[R0] - -00000372: -00000376: #4 := R31 - 0x30 -0000037c: mem := mem with [#4, el]:u64 <- R29 -00000382: mem := mem with [#4 + 8, el]:u64 <- R30 -00000386: R31 := #4 -0000038c: R29 := R31 -00000394: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000039b: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003a2: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003a7: R0 := 0xB -000003ac: R30 := 0x8F0 -000003af: call @malloc with return %000003b1 - -000003b1: -000003b5: R1 := R0 -000003ba: R0 := 0x20000 -000003c0: R0 := R0 + 0x80 -000003c8: mem := mem with [R0, el]:u64 <- R1 -000003cd: R0 := 0x20000 -000003d3: R0 := R0 + 0x80 -000003da: R19 := mem[R0, el]:u64 -000003df: R0 := 0x20000 -000003e5: R0 := R0 + 0x68 -000003ea: R30 := 0x918 -000003ed: call @strlen with return %000003ef - -000003ef: -000003f3: R2 := R0 -000003f8: R0 := 0x20000 -000003fe: R1 := R0 + 0x68 -00000404: R0 := R19 -00000409: R30 := 0x92C -0000040c: call @memcpy with return %0000040e - -0000040e: -00000411: R0 := 0x20000 -00000417: R0 := R0 + 0x80 -0000041e: R0 := mem[R0, el]:u64 -00000423: R30 := 0x93C -00000426: call @puts with return %00000428 - -00000428: -0000042b: R0 := 0x20000 -00000431: R0 := R0 + 0x80 -00000438: R0 := mem[R0, el]:u64 -0000043e: R0 := R0 + 4 -00000446: mem := mem with [R31 + 0x28, el]:u64 <- R0 -0000044b: R0 := 0x20000 -00000451: R0 := R0 + 0x80 -00000458: R19 := mem[R0, el]:u64 -0000045d: R0 := 0x20000 -00000463: R0 := R0 + 0x80 -0000046a: R0 := mem[R0, el]:u64 -0000046f: R30 := 0x96C -00000471: call @strlen with return %00000473 - -00000473: -00000477: R2 := R0 -0000047c: R1 := 1 -00000482: R0 := R19 -00000487: R30 := 0x97C -0000048a: call @memset with return %0000048c - -0000048c: -0000048f: R0 := 0x20000 -00000495: R0 := R0 + 0x80 -0000049c: R0 := mem[R0, el]:u64 -000004a1: R30 := 0x98C -000004a4: call @free with return %000004a6 - -000004a6: -000004a9: R0 := 0 -000004b0: R19 := mem[R31 + 0x10, el]:u64 -000004b7: R29 := mem[R31, el]:u64 -000004bc: R30 := mem[R31 + 8, el]:u64 -000004c0: R31 := R31 + 0x30 -000004c5: call R30 with noreturn - -00000830: sub malloc(malloc_size, malloc_result) -00000875: malloc_size :: in u64 = R0 -00000876: malloc_result :: out u64 = R0 - -000003ad: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x20, el]:u64 -000006a5: R16 := R16 + 0x20 -000006aa: call R17 with noreturn - -00000831: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000877: memcpy_dst :: in out u64 = R0 -00000878: memcpy_src :: in out u64 = R1 -00000879: memcpy_n :: in u64 = R2 -0000087a: memcpy_result :: out u64 = R0 - -0000040a: -00000640: R16 := 0x20000 -00000647: R17 := mem[R16, el]:u64 -0000064d: R16 := R16 -00000652: call R17 with noreturn - -00000832: sub memset(memset_buf, memset_c, memset_n, memset_result) -0000087b: memset_buf :: in out u64 = R0 -0000087c: memset_c :: in u32 = low:32[R1] -0000087d: memset_n :: in u64 = R2 -0000087e: memset_result :: out u64 = R0 - -00000488: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x28, el]:u64 -000006bb: R16 := R16 + 0x28 -000006c0: call R17 with noreturn - -00000833: sub puts(puts_s, puts_result) -0000087f: puts_s :: in u64 = R0 -00000880: puts_result :: out u32 = low:32[R0] - -00000424: -000006f0: R16 := 0x20000 -000006f7: R17 := mem[R16 + 0x40, el]:u64 -000006fd: R16 := R16 + 0x40 -00000702: call R17 with noreturn - -00000834: sub register_tm_clones(register_tm_clones_result) -00000881: register_tm_clones_result :: out u32 = low:32[R0] - -000002d9: -000002dc: R0 := 0x20000 -000002e2: R0 := R0 + 0x78 -000002e7: R1 := 0x20000 -000002ed: R1 := R1 + 0x78 -000002f4: R1 := R1 + ~R0 + 1 -000002fa: R2 := 0.63:63[R1] -00000301: R1 := R2 + (R1 ~>> 3) -00000307: R1 := extend:64[63:1[R1]] -0000030d: when R1 = 0 goto %0000030b -00000861: goto %00000502 - -00000502: -00000505: R2 := 0x1F000 -0000050c: R2 := mem[R2 + 0xFE0, el]:u64 -00000511: when R2 = 0 goto %0000030b -00000862: goto %00000515 - -0000030b: -00000313: call R30 with noreturn - -00000515: -00000519: R16 := R2 -0000051e: call R16 with noreturn - -00000837: sub strlen(strlen_s, strlen_result) -00000882: strlen_s :: in u64 = R0 -00000883: strlen_result :: out u64 = R0 - -000003eb: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16 + 8, el]:u64 -00000663: R16 := R16 + 8 -00000668: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected deleted file mode 100644 index 8952ee7a6..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected +++ /dev/null @@ -1,822 +0,0 @@ -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_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} 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 == 131200bv64); -const {:extern} $password_addr: bv64; -axiom ($password_addr == 131168bv64); -const {:extern} $stext_addr: bv64; -axiom ($stext_addr == 131176bv64); -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, 2480bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free requires (memory_load8_le(mem, 2481bv64) == 0bv8); - free requires (memory_load8_le(mem, 2482bv64) == 2bv8); - free requires (memory_load8_le(mem, 2483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, 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) == 0bv8); - free requires (memory_load8_le(mem, 131170bv64) == 0bv8); - free requires (memory_load8_le(mem, 131171bv64) == 0bv8); - 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) == 117bv8); - free requires (memory_load8_le(mem, 131177bv64) == 115bv8); - free requires (memory_load8_le(mem, 131178bv64) == 101bv8); - free requires (memory_load8_le(mem, 131179bv64) == 114bv8); - free requires (memory_load8_le(mem, 131180bv64) == 58bv8); - free requires (memory_load8_le(mem, 131181bv64) == 112bv8); - free requires (memory_load8_le(mem, 131182bv64) == 97bv8); - free requires (memory_load8_le(mem, 131183bv64) == 115bv8); - free requires (memory_load8_le(mem, 131184bv64) == 115bv8); - free requires (memory_load8_le(mem, 131185bv64) == 0bv8); - free requires (memory_load8_le(mem, 131186bv64) == 0bv8); - free requires (memory_load8_le(mem, 2480bv64) == 1bv8); - free requires (memory_load8_le(mem, 2481bv64) == 0bv8); - free requires (memory_load8_le(mem, 2482bv64) == 2bv8); - free requires (memory_load8_le(mem, 2483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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_R29 == old(Gamma_R29)); - free ensures (Gamma_R31 == old(Gamma_R31)); - free ensures (R19 == old(R19)); - free ensures (R29 == old(R29)); - free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2480bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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 #42: bv64; - var Gamma_#42: bool; - lmain: - assume {:captureState "lmain"} true; - #42, Gamma_#42 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); - assume {:captureState "%000003ad"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); - assume {:captureState "%000003b2"} true; - R31, Gamma_R31 := #42, Gamma_#42; - R29, Gamma_R29 := R31, Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); - assume {:captureState "%000003c5"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); - assume {:captureState "%000003cd"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); - assume {:captureState "%000003d5"} true; - R0, Gamma_R0 := 11bv64, true; - R30, Gamma_R30 := 2288bv64, true; - call malloc(); - goto l000003e5; - l000003e5: - assume {:captureState "l000003e5"} true; - R1, Gamma_R1 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - assert (L(mem, R0) ==> Gamma_R1); - mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%00000400"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; - R30, Gamma_R30 := 2328bv64, true; - call strlen(); - goto l0000042c; - l0000042c: - assume {:captureState "l0000042c"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2348bv64, true; - call memcpy(); - goto l00000451; - l00000451: - assume {:captureState "l00000451"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2364bv64, true; - call puts(); - goto l0000046e; - l0000046e: - assume {:captureState "l0000046e"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := bvadd64(R0, 4bv64), Gamma_R0; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); - assume {:captureState "%00000490"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2412bv64, true; - call strlen(); - goto l000004c3; - l000004c3: - assume {:captureState "l000004c3"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R1, Gamma_R1 := 1bv64, true; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2428bv64, true; - call memset(); - goto l000004e2; - l000004e2: - assume {:captureState "l000004e2"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2444bv64, true; - call #free(); - goto l000004ff; - l000004ff: - assume {:captureState "l000004ff"} true; - R0, Gamma_R0 := 0bv64, true; - R19, Gamma_R19 := 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, 2480bv64) == 1bv8); - free requires (memory_load8_le(mem, 2481bv64) == 0bv8); - free requires (memory_load8_le(mem, 2482bv64) == 2bv8); - free requires (memory_load8_le(mem, 2483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free requires (memory_load8_le(mem, 2481bv64) == 0bv8); - free requires (memory_load8_le(mem, 2482bv64) == 2bv8); - free requires (memory_load8_le(mem, 2483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free requires (memory_load8_le(mem, 2481bv64) == 0bv8); - free requires (memory_load8_le(mem, 2482bv64) == 2bv8); - free requires (memory_load8_le(mem, 2483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free requires (memory_load8_le(mem, 2481bv64) == 0bv8); - free requires (memory_load8_le(mem, 2482bv64) == 2bv8); - free requires (memory_load8_le(mem, 2483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free requires (memory_load8_le(mem, 2481bv64) == 0bv8); - free requires (memory_load8_le(mem, 2482bv64) == 2bv8); - free requires (memory_load8_le(mem, 2483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 2480bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2481bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2482bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index 3ddb9e515..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,143 +0,0 @@ - -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 -000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 - -Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 -0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 -0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 -0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 -0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 -0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 -0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 -0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 -0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 - -Symbol table '.dynsym' contains 15 entries: - Num: Value Size Type Bind Vis Ndx Name - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init - 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) - 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) - 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) - 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) - 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) - 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) - 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) - 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) - 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) - 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - -Symbol table '.symtab' contains 98 entries: - Num: Value Size Type Bind Vis Ndx Name - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp - 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id - 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag - 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash - 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym - 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr - 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version - 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r - 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn - 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt - 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init - 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt - 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text - 14: 000000000000099c 0 SECTION LOCAL DEFAULT 14 .fini - 15: 00000000000009b0 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 00000000000009b4 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009f0 0 SECTION LOCAL DEFAULT 17 .eh_frame - 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array - 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array - 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic - 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got - 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt - 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss - 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment - 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o - 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d - 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag - 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 0000000000000a04 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 000000000000099c 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 00000000000009a8 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d - 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d - 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x - 58: 0000000000000a78 0 NOTYPE LOCAL DEFAULT 17 $d - 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 60: 0000000000000a9c 0 NOTYPE LOCAL DEFAULT 17 $d - 61: 0000000000000a9c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 64: 00000000000009b4 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata - 76: 000000000000099c 0 FUNC GLOBAL HIDDEN 14 _fini - 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 85: 00000000000009b0 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end - 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf - 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext - 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 94: 00000000000008d4 200 FUNC GLOBAL DEFAULT 13 main - 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index b97fefcf3..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,791 +0,0 @@ -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 2460 20 2460)\n(code-region 1984 476 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 200)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2460 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2460 20)\n(llvm:code-entry .text 1984 476)\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 2484 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2720)\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 2484 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2720)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2544 176 2544)\n(llvm:section-entry .eh_frame_hdr 2484 60 2484)\n(llvm:section-entry .rodata 2480 4 2480)\n(llvm:section-entry .fini 2460 20 2460)\n(llvm:section-entry .text 1984 476 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 200 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2460 0 2460 2460)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2720 0)\n(mapped 130504 683 64968)\n(named-region 0 2720 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 476 .text)\n(named-region 2460 20 .fini)\n(named-region 2480 4 .rodata)\n(named-region 2484 60 .eh_frame_hdr)\n(named-region 2544 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2460 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 476)\n(section 2460 20)\n(section 2480 4)\n(section 2484 60)\n(section 2544 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2720 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 200 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2460 2460)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), -Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa0\x0a\x00\x00\x00\x00\x00\x00\xa0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\x09\x00\x00\x00\x00\x00\x00\xb4\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\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), -Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), -Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x32\x6f\x74\x8d\x0f\x05\x3e\xc1\xf4\xd2\x2d\xe1\x09\x5c\x4b\x83\x32\x17\xe6\x00"), -Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 0x99C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9B0, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9B4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x0c\xfe\xff\xff\x50\x00\x00\x00\x5c\xfe\xff\xff\x64\x00\x00\x00\x8c\xfe\xff\xff\x78\x00\x00\x00\xcc\xfe\xff\xff\x8c\x00\x00\x00\x1c\xff\xff\xff\xb0\x00\x00\x00\x20\xff\xff\xff\xc4\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\xb4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xf0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x0c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x38\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\x64\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x54\xfe\xff\xff\xc8\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x6e\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x9c\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), -Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), -Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6e\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x86\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xA9F), Attr("segment","02 0 2720")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), -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,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x99B), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x99B), Attr("symbol-info","main 0x8D4 200")), -Annotation(Region(0x99C,0x9AF), Attr("section","\".fini\"")), -Annotation(Region(0x9B0,0x9B3), Attr("section","\".rodata\"")), -Annotation(Region(0x9B4,0x9EF), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0x9F0,0xA9F), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), -Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), -Annotation(Region(0x7C0,0x99B), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x99B), Attr("code-region","()")), -Annotation(Region(0x99C,0x9AF), Attr("code-region","()"))]), -Program(Tid(2_306, "%00000902"), Attrs([]), - Subs([Sub(Tid(2_235, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_307, "%00000903"), - 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_382, "@__cxa_finalize"), - Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_802, "%0000070a"), Attrs([Attr("address","0x740"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_810, "%00000712"), 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_817, "%00000719"), 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_822, "%0000071e"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_236, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_308, "%00000904"), - 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(826, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(833, "%00000341"), - Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(838, "%00000346"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(843, "%0000034b"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(847, "%0000034f"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(854, "%00000356"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(862, "%0000035e"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(868, "%00000364"), Attrs([Attr("address","0x88C"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(877, "%0000036d"), Attrs([Attr("address","0x890"), -Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), -Def(Tid(889, "%00000379"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(883, "%00000373"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(881, "%00000371"))), Goto(Tid(2_296, "%000008f8"), Attrs([]), - Int(1,1), Direct(Tid(1_316, "%00000524")))])), Blk(Tid(1_316, "%00000524"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_320, "%00000528"), Attrs([Attr("address","0x898"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_328, "%00000530"), Attrs([Attr("address","0x89C"), -Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64)), -Def(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), Var("#68",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_334, "%00000536"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x0, #0x10")]), - Var("#68",Imm(1)), Direct(Tid(1_332, "%00000534"))), -Goto(Tid(2_297, "%000008f9"), Attrs([]), Int(1,1), -Direct(Tid(1_364, "%00000554")))])), Blk(Tid(1_364, "%00000554"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_368, "%00000558"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_376, "%00000560"), Attrs([Attr("address","0x8A8"), -Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_381, "%00000565"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_235, "@__cxa_finalize")),Direct(Tid(1_332, "%00000534"))))])), -Blk(Tid(1_332, "%00000534"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_345, "%00000541"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_347, "%00000543"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_249, "@deregister_tm_clones")),Direct(Tid(1_349, "%00000545"))))])), -Blk(Tid(1_349, "%00000545"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x8B4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_362, "%00000552"), Attrs([Attr("address","0x8B8"), -Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_298, "%000008fa"), Attrs([]), Int(1,1), -Direct(Tid(881, "%00000371")))])), Blk(Tid(881, "%00000371"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(897, "%00000381"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(907, "%0000038b"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(911, "%0000038f"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(914, "%00000392"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(919, "%00000397"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_240, "@__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_309, "%00000905"), - 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_310, "%00000906"), 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_311, "%00000907"), 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_312, "%00000908"), 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_313, "%00000909"), 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(638, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x730"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_785, "%000006f9"), 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_792, "%00000700"), 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_797, "%00000705"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_241, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x99C")]), - "_fini", Args([Arg(Tid(2_314, "%0000090a"), - 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","0x99C")]), Phis([]), Defs([Def(Tid(41, "%00000029"), - Attrs([Attr("address","0x9A0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9A0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9A0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9A0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9A4"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9A8"), -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(76, "%0000004c"), Attrs([Attr("address","0x9A8"), -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(79, "%0000004f"), Attrs([Attr("address","0x9A8"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), - Attrs([Attr("address","0x9AC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_242, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_315, "%0000090b"), - 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(2_000, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(2_009, "%000007d9"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#99",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(2_014, "%000007de"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#99",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(2_019, "%000007e3"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#99",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(2_023, "%000007e7"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#99",Imm(64))), Def(Tid(2_030, "%000007ee"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_035, "%000007f3"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(2_037, "%000007f5"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_247, "@call_weak_fn")),Direct(Tid(2_039, "%000007f7"))))])), -Blk(Tid(2_039, "%000007f7"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x6E8"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(2_051, "%00000803"), Attrs([Attr("address","0x6E8"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(2_054, "%00000806"), Attrs([Attr("address","0x6E8"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_059, "%0000080b"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_243, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_316, "%0000090c"), - 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(564, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(570, "%0000023a"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(576, "%00000240"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(599, "%00000257"), Attrs([Attr("address","0x7D4"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(606, "%0000025e"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(612, "%00000264"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(620, "%0000026c"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(626, "%00000272"), Attrs([Attr("address","0x7E4"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(632, "%00000278"), Attrs([Attr("address","0x7E8"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(637, "%0000027d"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(640, "%00000280"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_240, "@__libc_start_main")),Direct(Tid(642, "%00000282"))))])), -Blk(Tid(642, "%00000282"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(645, "%00000285"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_246, "@abort")),Direct(Tid(2_299, "%000008fb"))))])), -Blk(Tid(2_299, "%000008fb"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_300, "%000008fc"), Attrs([]), Int(1,1), -(Direct(Tid(2_247, "@call_weak_fn")),))]))])), Sub(Tid(2_246, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(646, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_902, "%0000076e"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_910, "%00000776"), 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_917, "%0000077d"), 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_922, "%00000782"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_247, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_317, "%0000090d"), - 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(650, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(654, "%0000028e"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(662, "%00000296"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), -Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(668, "%0000029c"), - Attrs([Attr("address","0x7FC"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(666, "%0000029a"))), -Goto(Tid(2_301, "%000008fd"), Attrs([]), Int(1,1), -Direct(Tid(1_464, "%000005b8")))])), Blk(Tid(666, "%0000029a"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(679, "%000002a7"), Attrs([Attr("address","0x804"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_464, "%000005b8"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_467, "%000005bb"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_465, "@__gmon_start__")))])), Blk(Tid(1_465, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_877, "%00000755"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_885, "%0000075d"), 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_892, "%00000764"), 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_897, "%00000769"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_249, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_318, "%0000090e"), - 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(685, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(689, "%000002b1"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(696, "%000002b8"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(702, "%000002be"), Attrs([Attr("address","0x818"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x81C"), -Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(717, "%000002cd"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(721, "%000002d1"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(724, "%000002d4"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(727, "%000002d7"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(730, "%000002da"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(744, "%000002e8"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(738, "%000002e2"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(736, "%000002e0"))), Goto(Tid(2_302, "%000008fe"), Attrs([]), - Int(1,1), Direct(Tid(1_425, "%00000591")))])), Blk(Tid(1_425, "%00000591"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_429, "%00000595"), Attrs([Attr("address","0x828"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_437, "%0000059d"), Attrs([Attr("address","0x82C"), -Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64)), -Def(Tid(1_448, "%000005a8"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), Var("#76",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_442, "%000005a2"), - Attrs([Attr("address","0x830"), Attr("insn","cbz x1, #0xc")]), - Var("#76",Imm(1)), Direct(Tid(736, "%000002e0"))), -Goto(Tid(2_303, "%000008ff"), Attrs([]), Int(1,1), -Direct(Tid(1_451, "%000005ab")))])), Blk(Tid(736, "%000002e0"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(749, "%000002ed"), Attrs([Attr("address","0x83C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_457, "%000005b1"), Attrs([Attr("address","0x834"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_462, "%000005b6"), Attrs([Attr("address","0x838"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_252, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_319, "%0000090f"), - 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(925, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(927, "%0000039f"), Attrs([Attr("address","0x8D0"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_259, "@register_tm_clones")),))]))])), Sub(Tid(2_253, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_320, "%00000910"), - 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_275, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_952, "%000007a0"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_960, "%000007a8"), 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_967, "%000007af"), 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_972, "%000007b4"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_254, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_321, "%00000911"), - 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_322, "%00000912"), - 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_323, "%00000913"), - 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(929, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(936, "%000003a8"), - Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(950, "%000003b6"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#42",Imm(64))), Def(Tid(957, "%000003bd"), - Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(965, "%000003c5"), - Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x8E0"), -Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x8E4"), -Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x8E8"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(992, "%000003e0"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(995, "%000003e3"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_255, "@malloc")),Direct(Tid(997, "%000003e5"))))])), -Blk(Tid(997, "%000003e5"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8F0"), -Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x8F4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_016, "%000003f8"), Attrs([Attr("address","0x8F8"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_024, "%00000400"), - Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x900"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x904"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_045, "%00000415"), - Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x90C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_058, "%00000422"), Attrs([Attr("address","0x910"), -Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_063, "%00000427"), - Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), - Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_066, "%0000042a"), - Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_262, "@strlen")),Direct(Tid(1_068, "%0000042c"))))])), -Blk(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x918"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x91C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_087, "%0000043f"), Attrs([Attr("address","0x920"), -Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_095, "%00000447"), - Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_100, "%0000044c"), - Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_103, "%0000044f"), - Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_256, "@memcpy")),Direct(Tid(1_105, "%00000451"))))])), -Blk(Tid(1_105, "%00000451"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x92C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x930"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_124, "%00000464"), - Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_132, "%0000046c"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_258, "@puts")),Direct(Tid(1_134, "%0000046e"))))])), -Blk(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x93C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x940"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_153, "%00000481"), - Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x948"), -Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_168, "%00000490"), - Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x950"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x954"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_189, "%000004a5"), - Attrs([Attr("address","0x958"), Attr("insn","ldr x19, [x0]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x95C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x960"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_210, "%000004ba"), - Attrs([Attr("address","0x964"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x248")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_217, "%000004c1"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x248")]), Int(1,1), -(Direct(Tid(2_262, "@strlen")),Direct(Tid(1_219, "%000004c3"))))])), -Blk(Tid(1_219, "%000004c3"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_225, "%000004c9"), Attrs([Attr("address","0x96C"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_232, "%000004d0"), Attrs([Attr("address","0x970"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x974"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_245, "%000004dd"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_257, "@memset")),Direct(Tid(1_250, "%000004e2"))))])), -Blk(Tid(1_250, "%000004e2"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_254, "%000004e6"), Attrs([Attr("address","0x97C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x980"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_269, "%000004f5"), - Attrs([Attr("address","0x984"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x988"), -Attr("insn","bl #-0x1e8")]), Var("R30",Imm(64)), Int(2444,64))]), -Jmps([Call(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x988"), -Attr("insn","bl #-0x1e8")]), Int(1,1), -(Direct(Tid(2_253, "@free")),Direct(Tid(1_279, "%000004ff"))))])), -Blk(Tid(1_279, "%000004ff"), Attrs([Attr("address","0x98C")]), Phis([]), -Defs([Def(Tid(1_284, "%00000504"), Attrs([Attr("address","0x98C"), -Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_292, "%0000050c"), Attrs([Attr("address","0x990"), -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_302, "%00000516"), Attrs([Attr("address","0x994"), -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_306, "%0000051a"), Attrs([Attr("address","0x994"), -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_309, "%0000051d"), Attrs([Attr("address","0x994"), -Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_314, "%00000522"), - Attrs([Attr("address","0x998"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_255, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_324, "%00000914"), 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_325, "%00000915"), - 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(993, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_827, "%00000723"), Attrs([Attr("address","0x750"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_835, "%0000072b"), 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_842, "%00000732"), 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_847, "%00000737"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_256, "@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_326, "%00000916"), 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_327, "%00000917"), - 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_328, "%00000918"), 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_329, "%00000919"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_101, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x710"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_735, "%000006c7"), 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_742, "%000006ce"), Attrs([Attr("address","0x718"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_747, "%000006d3"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_257, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_330, "%0000091a"), 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_331, "%0000091b"), - 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_332, "%0000091c"), - 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_333, "%0000091d"), 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_246, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_852, "%0000073c"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_860, "%00000744"), 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_867, "%0000074b"), 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_872, "%00000750"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_258, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_334, "%0000091e"), 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_335, "%0000091f"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_130, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_927, "%00000787"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_935, "%0000078f"), 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_942, "%00000796"), 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_947, "%0000079b"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_259, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_336, "%00000920"), - 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(751, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x840"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x844"), -Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(768, "%00000300"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(775, "%00000307"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x850"), -Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(790, "%00000316"), - Attrs([Attr("address","0x854"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(798, "%0000031e"), Attrs([Attr("address","0x858"), -Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,64)))), -Def(Tid(805, "%00000325"), Attrs([Attr("address","0x85C"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(817, "%00000331"), - Attrs([Attr("address","0x860"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(811, "%0000032b"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(809, "%00000329"))), Goto(Tid(2_304, "%00000900"), Attrs([]), - Int(1,1), Direct(Tid(1_386, "%0000056a")))])), Blk(Tid(1_386, "%0000056a"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_390, "%0000056e"), Attrs([Attr("address","0x864"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_398, "%00000576"), Attrs([Attr("address","0x868"), -Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64)), -Def(Tid(1_409, "%00000581"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), Var("#71",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_403, "%0000057b"), - Attrs([Attr("address","0x86C"), Attr("insn","cbz x2, #0xc")]), - Var("#71",Imm(1)), Direct(Tid(809, "%00000329"))), -Goto(Tid(2_305, "%00000901"), Attrs([]), Int(1,1), -Direct(Tid(1_412, "%00000584")))])), Blk(Tid(809, "%00000329"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(822, "%00000336"), Attrs([Attr("address","0x878"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_412, "%00000584"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_418, "%0000058a"), Attrs([Attr("address","0x870"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_423, "%0000058f"), Attrs([Attr("address","0x874"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_262, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_337, "%00000921"), 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_338, "%00000922"), - Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), -Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_064, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_752, "%000006d8"), Attrs([Attr("address","0x720"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_760, "%000006e0"), 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_767, "%000006e7"), 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_772, "%000006ec"), - 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index fd154ed39..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,369 +0,0 @@ -00000902: program -000008bb: sub __cxa_finalize(__cxa_finalize_result) -00000903: __cxa_finalize_result :: out u32 = low:32[R0] - -00000566: -0000070a: R16 := 0x20000 -00000712: R17 := mem[R16 + 0x18, el]:u64 -00000719: R16 := R16 + 0x18 -0000071e: call R17 with noreturn - -000008bc: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000904: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -0000033a: -00000341: #34 := R31 - 0x20 -00000346: mem := mem with [#34, el]:u64 <- R29 -0000034b: mem := mem with [#34 + 8, el]:u64 <- R30 -0000034f: R31 := #34 -00000356: R29 := R31 -0000035e: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000364: R19 := 0x20000 -0000036d: R0 := pad:32[mem[R19 + 0x78]] -00000379: #36 := ~~0:0[R0] -00000373: when #36 goto %00000371 -000008f8: goto %00000524 - -00000524: -00000528: R0 := 0x1F000 -00000530: R0 := mem[R0 + 0xFC8, el]:u64 -0000053c: #68 := R0 = 0 -00000536: when #68 goto %00000534 -000008f9: goto %00000554 - -00000554: -00000558: R0 := 0x20000 -00000560: R0 := mem[R0 + 0x58, el]:u64 -00000565: R30 := 0x8B0 -00000568: call @__cxa_finalize with return %00000534 - -00000534: -00000541: R30 := 0x8B4 -00000543: call @deregister_tm_clones with return %00000545 - -00000545: -0000054a: R0 := 1 -00000552: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] -000008fa: goto %00000371 - -00000371: -00000381: R19 := mem[R31 + 0x10, el]:u64 -0000038b: R29 := mem[R31, el]:u64 -0000038f: R30 := mem[R31 + 8, el]:u64 -00000392: R31 := R31 + 0x20 -00000397: call R30 with noreturn - -000008c0: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000905: __libc_start_main_main :: in u64 = R0 -00000906: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000907: __libc_start_main_arg3 :: in out u64 = R2 -00000908: __libc_start_main_auxv :: in out u64 = R3 -00000909: __libc_start_main_result :: out u32 = low:32[R0] - -0000027e: -000006f1: R16 := 0x20000 -000006f9: R17 := mem[R16 + 0x10, el]:u64 -00000700: R16 := R16 + 0x10 -00000705: call R17 with noreturn - -000008c1: sub _fini(_fini_result) -0000090a: _fini_result :: out u32 = low:32[R0] - -00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -000008c2: sub _init(_init_result) -0000090b: _init_result :: out u32 = low:32[R0] - -000007d0: -000007d9: #99 := R31 - 0x10 -000007de: mem := mem with [#99, el]:u64 <- R29 -000007e3: mem := mem with [#99 + 8, el]:u64 <- R30 -000007e7: R31 := #99 -000007ee: R29 := R31 -000007f3: R30 := 0x6E8 -000007f5: call @call_weak_fn with return %000007f7 - -000007f7: -000007ff: R29 := mem[R31, el]:u64 -00000803: R30 := mem[R31 + 8, el]:u64 -00000806: R31 := R31 + 0x10 -0000080b: call R30 with noreturn - -000008c3: sub _start(_start_result) -0000090c: _start_result :: out u32 = low:32[R0] - -00000234: -0000023a: R29 := 0 -00000240: R30 := 0 -00000248: R5 := R0 -00000250: R1 := mem[R31, el]:u64 -00000257: R2 := R31 + 8 -0000025e: R6 := R31 -00000264: R0 := 0x1F000 -0000026c: R0 := mem[R0 + 0xFD8, el]:u64 -00000272: R3 := 0 -00000278: R4 := 0 -0000027d: R30 := 0x7F0 -00000280: call @__libc_start_main with return %00000282 - -00000282: -00000285: R30 := 0x7F4 -00000288: call @abort with return %000008fb - -000008fb: -000008fc: call @call_weak_fn with noreturn - -000008c6: sub abort() - - -00000286: -0000076e: R16 := 0x20000 -00000776: R17 := mem[R16 + 0x38, el]:u64 -0000077d: R16 := R16 + 0x38 -00000782: call R17 with noreturn - -000008c7: sub call_weak_fn(call_weak_fn_result) -0000090d: call_weak_fn_result :: out u32 = low:32[R0] - -0000028a: -0000028e: R0 := 0x1F000 -00000296: R0 := mem[R0 + 0xFD0, el]:u64 -000002a2: #12 := R0 = 0 -0000029c: when #12 goto %0000029a -000008fd: goto %000005b8 - -0000029a: -000002a7: call R30 with noreturn - -000005b8: -000005bb: goto @__gmon_start__ - -000005b9: -00000755: R16 := 0x20000 -0000075d: R17 := mem[R16 + 0x30, el]:u64 -00000764: R16 := R16 + 0x30 -00000769: call R17 with noreturn - -000008c9: sub deregister_tm_clones(deregister_tm_clones_result) -0000090e: deregister_tm_clones_result :: out u32 = low:32[R0] - -000002ad: -000002b1: R0 := 0x20000 -000002b8: R0 := R0 + 0x78 -000002be: R1 := 0x20000 -000002c5: R1 := R1 + 0x78 -000002cd: #16 := 1 + ~R0 + R1 -000002d1: NF := 63:63[#16] -000002d4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002d7: ZF := #16 = 0 -000002da: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002e8: #21 := ZF -000002e2: when #21 goto %000002e0 -000008fe: goto %00000591 - -00000591: -00000595: R1 := 0x1F000 -0000059d: R1 := mem[R1 + 0xFC0, el]:u64 -000005a8: #76 := R1 = 0 -000005a2: when #76 goto %000002e0 -000008ff: goto %000005ab - -000002e0: -000002ed: call R30 with noreturn - -000005ab: -000005b1: R16 := R1 -000005b6: call R16 with noreturn - -000008cc: sub frame_dummy(frame_dummy_result) -0000090f: frame_dummy_result :: out u32 = low:32[R0] - -0000039d: -0000039f: call @register_tm_clones with noreturn - -000008cd: sub free(free_ptr) -00000910: free_ptr :: in out u64 = R0 - -000004fb: -000007a0: R16 := 0x20000 -000007a8: R17 := mem[R16 + 0x48, el]:u64 -000007af: R16 := R16 + 0x48 -000007b4: call R17 with noreturn - -000008ce: sub main(main_argc, main_argv, main_result) -00000911: main_argc :: in u32 = low:32[R0] -00000912: main_argv :: in out u64 = R1 -00000913: main_result :: out u32 = low:32[R0] - -000003a1: -000003a8: #42 := R31 - 0x30 -000003ad: mem := mem with [#42, el]:u64 <- R29 -000003b2: mem := mem with [#42 + 8, el]:u64 <- R30 -000003b6: R31 := #42 -000003bd: R29 := R31 -000003c5: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000003cd: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003d5: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003db: R0 := 0xB -000003e0: R30 := 0x8F0 -000003e3: call @malloc with return %000003e5 - -000003e5: -000003eb: R1 := R0 -000003f1: R0 := 0x20000 -000003f8: R0 := R0 + 0x80 -00000400: mem := mem with [R0, el]:u64 <- R1 -00000406: R0 := 0x20000 -0000040d: R0 := R0 + 0x80 -00000415: R19 := mem[R0, el]:u64 -0000041b: R0 := 0x20000 -00000422: R0 := R0 + 0x68 -00000427: R30 := 0x918 -0000042a: call @strlen with return %0000042c - -0000042c: -00000432: R2 := R0 -00000438: R0 := 0x20000 -0000043f: R1 := R0 + 0x68 -00000447: R0 := R19 -0000044c: R30 := 0x92C -0000044f: call @memcpy with return %00000451 - -00000451: -00000455: R0 := 0x20000 -0000045c: R0 := R0 + 0x80 -00000464: R0 := mem[R0, el]:u64 -00000469: R30 := 0x93C -0000046c: call @puts with return %0000046e - -0000046e: -00000472: R0 := 0x20000 -00000479: R0 := R0 + 0x80 -00000481: R0 := mem[R0, el]:u64 -00000488: R0 := R0 + 4 -00000490: mem := mem with [R31 + 0x28, el]:u64 <- R0 -00000496: R0 := 0x20000 -0000049d: R0 := R0 + 0x80 -000004a5: R19 := mem[R0, el]:u64 -000004ab: R0 := 0x20000 -000004b2: R0 := R0 + 0x80 -000004ba: R0 := mem[R0, el]:u64 -000004bf: R30 := 0x96C -000004c1: call @strlen with return %000004c3 - -000004c3: -000004c9: R2 := R0 -000004d0: R1 := 1 -000004d8: R0 := R19 -000004dd: R30 := 0x97C -000004e0: call @memset with return %000004e2 - -000004e2: -000004e6: R0 := 0x20000 -000004ed: R0 := R0 + 0x80 -000004f5: R0 := mem[R0, el]:u64 -000004fa: R30 := 0x98C -000004fd: call @free with return %000004ff - -000004ff: -00000504: R0 := 0 -0000050c: R19 := mem[R31 + 0x10, el]:u64 -00000516: R29 := mem[R31, el]:u64 -0000051a: R30 := mem[R31 + 8, el]:u64 -0000051d: R31 := R31 + 0x30 -00000522: call R30 with noreturn - -000008cf: sub malloc(malloc_size, malloc_result) -00000914: malloc_size :: in u64 = R0 -00000915: malloc_result :: out u64 = R0 - -000003e1: -00000723: R16 := 0x20000 -0000072b: R17 := mem[R16 + 0x20, el]:u64 -00000732: R16 := R16 + 0x20 -00000737: call R17 with noreturn - -000008d0: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000916: memcpy_dst :: in out u64 = R0 -00000917: memcpy_src :: in out u64 = R1 -00000918: memcpy_n :: in u64 = R2 -00000919: memcpy_result :: out u64 = R0 - -0000044d: -000006bf: R16 := 0x20000 -000006c7: R17 := mem[R16, el]:u64 -000006ce: R16 := R16 -000006d3: call R17 with noreturn - -000008d1: sub memset(memset_buf, memset_c, memset_n, memset_result) -0000091a: memset_buf :: in out u64 = R0 -0000091b: memset_c :: in u32 = low:32[R1] -0000091c: memset_n :: in u64 = R2 -0000091d: memset_result :: out u64 = R0 - -000004de: -0000073c: R16 := 0x20000 -00000744: R17 := mem[R16 + 0x28, el]:u64 -0000074b: R16 := R16 + 0x28 -00000750: call R17 with noreturn - -000008d2: sub puts(puts_s, puts_result) -0000091e: puts_s :: in u64 = R0 -0000091f: puts_result :: out u32 = low:32[R0] - -0000046a: -00000787: R16 := 0x20000 -0000078f: R17 := mem[R16 + 0x40, el]:u64 -00000796: R16 := R16 + 0x40 -0000079b: call R17 with noreturn - -000008d3: sub register_tm_clones(register_tm_clones_result) -00000920: register_tm_clones_result :: out u32 = low:32[R0] - -000002ef: -000002f3: R0 := 0x20000 -000002fa: R0 := R0 + 0x78 -00000300: R1 := 0x20000 -00000307: R1 := R1 + 0x78 -0000030f: R1 := R1 - R0 -00000316: R2 := R1 >> 0x3F -0000031e: R1 := R2 + (R1 ~>> 3) -00000325: R1 := R1 >> 1 -00000331: #30 := R1 = 0 -0000032b: when #30 goto %00000329 -00000900: goto %0000056a - -0000056a: -0000056e: R2 := 0x1F000 -00000576: R2 := mem[R2 + 0xFE0, el]:u64 -00000581: #71 := R2 = 0 -0000057b: when #71 goto %00000329 -00000901: goto %00000584 - -00000329: -00000336: call R30 with noreturn - -00000584: -0000058a: R16 := R2 -0000058f: call R16 with noreturn - -000008d6: sub strlen(strlen_s, strlen_result) -00000921: strlen_s :: in u64 = R0 -00000922: strlen_result :: out u64 = R0 - -00000428: -000006d8: R16 := 0x20000 -000006e0: R17 := mem[R16 + 8, el]:u64 -000006e7: R16 := R16 + 8 -000006ec: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index 3ddb9e515..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,143 +0,0 @@ - -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 -000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 - -Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 -0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 -0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 -0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 -0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 -0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 -0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 -0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 -0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 - -Symbol table '.dynsym' contains 15 entries: - Num: Value Size Type Bind Vis Ndx Name - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init - 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) - 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) - 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) - 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) - 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) - 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) - 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) - 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) - 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) - 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - -Symbol table '.symtab' contains 98 entries: - Num: Value Size Type Bind Vis Ndx Name - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp - 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id - 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag - 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash - 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym - 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr - 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version - 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r - 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn - 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt - 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init - 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt - 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text - 14: 000000000000099c 0 SECTION LOCAL DEFAULT 14 .fini - 15: 00000000000009b0 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 00000000000009b4 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009f0 0 SECTION LOCAL DEFAULT 17 .eh_frame - 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array - 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array - 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic - 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got - 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt - 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss - 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment - 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o - 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d - 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag - 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 0000000000000a04 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 000000000000099c 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 00000000000009a8 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d - 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d - 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x - 58: 0000000000000a78 0 NOTYPE LOCAL DEFAULT 17 $d - 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 60: 0000000000000a9c 0 NOTYPE LOCAL DEFAULT 17 $d - 61: 0000000000000a9c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 64: 00000000000009b4 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata - 76: 000000000000099c 0 FUNC GLOBAL HIDDEN 14 _fini - 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 85: 00000000000009b0 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end - 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf - 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext - 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 94: 00000000000008d4 200 FUNC GLOBAL DEFAULT 13 main - 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index c5a72a441..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,793 +0,0 @@ -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 2524 20 2524)\n(code-region 2048 476 2048)\n(code-region 1824 192 1824)\n(code-region 1800 24 1800)\n(code-start 2100)\n(code-start 2048)\n(code-start 2324)\n(entry-point 2048)\n(external-reference 130992 _ITM_deregisterTMCloneTable)\n(external-reference 131000 __cxa_finalize)\n(external-reference 131008 __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 1800 0)\n(llvm:code-entry main 2324 200)\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 2524 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 2524 20)\n(llvm:code-entry .text 2048 476)\n(llvm:code-entry .plt 1824 192)\n(llvm:code-entry .init 1800 24)\n(llvm:elf-program-header 08 64952 584)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2548 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64968 480)\n(llvm:elf-program-header 03 64952 699)\n(llvm:elf-program-header 02 0 2784)\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 2548 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130504 480)\n(llvm:elf-virtual-program-header 03 130488 720)\n(llvm:elf-virtual-program-header 02 0 2784)\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 131008 __gmon_start__)\n(llvm:name-reference 131000 __cxa_finalize)\n(llvm:name-reference 130992 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 130984 64 65448)\n(llvm:section-entry .dynamic 130504 480 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 2608 176 2608)\n(llvm:section-entry .eh_frame_hdr 2548 60 2548)\n(llvm:section-entry .rodata 2544 4 2544)\n(llvm:section-entry .fini 2524 20 2524)\n(llvm:section-entry .text 2048 476 2048)\n(llvm:section-entry .plt 1824 192 1824)\n(llvm:section-entry .init 1800 24 1800)\n(llvm:section-entry .rela.plt 1560 240 1560)\n(llvm:section-entry .rela.dyn 1320 240 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 1800 0 1800 1800)\n(llvm:symbol-entry main 2324 200 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 2524 0 2524 2524)\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 2784 0)\n(mapped 130488 699 64952)\n(named-region 0 2784 02)\n(named-region 130488 720 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 240 .rela.dyn)\n(named-region 1560 240 .rela.plt)\n(named-region 1800 24 .init)\n(named-region 1824 192 .plt)\n(named-region 2048 476 .text)\n(named-region 2524 20 .fini)\n(named-region 2544 4 .rodata)\n(named-region 2548 60 .eh_frame_hdr)\n(named-region 2608 176 .eh_frame)\n(named-region 130488 8 .init_array)\n(named-region 130496 8 .fini_array)\n(named-region 130504 480 .dynamic)\n(named-region 130984 64 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .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 2524 _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 1800 _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 240)\n(section 1560 240)\n(section 1800 24)\n(section 1824 192)\n(section 2048 476)\n(section 2524 20)\n(section 2544 4)\n(section 2548 60)\n(section 2608 176)\n(section 130488 8)\n(section 130496 8)\n(section 130504 480)\n(section 130984 64)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2784 true false true)\n(segment 130488 720 true true false)\n(subarch v8)\n(symbol-chunk 2100 20 2100)\n(symbol-chunk 2048 52 2048)\n(symbol-chunk 2324 200 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 2524 2524)\n(symbol-value 2048 2048)\n(symbol-value 2324 2324)\n(symbol-value 1800 1800)\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\x80\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\x80\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xbb\x02\x00\x00\x00\x00\x00\x00\xd0\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\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\xf4\x09\x00\x00\x00\x00\x00\x00\xf4\x09\x00\x00\x00\x00\x00\x00\xf4\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\x8e\x0b\x27\xb6\xed\x6a\xc5\xd3\xfd\x7c\x86\xa4\x1f\xbb\xca\x72\x87\x4c\xf5\x3a\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xbb\x02\x00\x00\x00\x00\x00\x00\xd0\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\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\xf4\x09\x00\x00\x00\x00\x00\x00\xf4\x09\x00\x00\x00\x00\x00\x00\xf4\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\x8e\x0b\x27\xb6\xed\x6a\xc5\xd3\xfd\x7c\x86\xa4\x1f\xbb\xca\x72\x87\x4c\xf5\x3a\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\x08\x07\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\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x68\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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\x48\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x95\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"), -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\x0b\x27\xb6\xed\x6a\xc5\xd3\xfd\x7c\x86\xa4\x1f\xbb\xca\x72\x87\x4c\xf5\x3a"), -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\x08\x07\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, "\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x68\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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", 0x618, "\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", 0x708, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x48\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x720, "\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", 0x9DC, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9F0, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9F4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x0c\xfe\xff\xff\x50\x00\x00\x00\x5c\xfe\xff\xff\x64\x00\x00\x00\x8c\xfe\xff\xff\x78\x00\x00\x00\xcc\xfe\xff\xff\x8c\x00\x00\x00\x1c\xff\xff\xff\xb0\x00\x00\x00\x20\xff\xff\xff\xc4\x00\x00\x00"), -Section(".eh_frame", 0xA30, "\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\xb4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xf0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x0c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x38\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\x64\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x54\xfe\xff\xff\xc8\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x6e\xde\xdd\xd3\x0e\x00\x00\x00\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\x08\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xdc\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\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\x18\x06\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\xf0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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", 0x1FFA8, "\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\x80\x00\x02\x00\x00\x00\x00\x00\x68\x00\x02\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\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\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\x00\x00\x00\x00\x00\x00\x00\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\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x95\xff\xff\x97\xe1\x03\x00\xaa\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x01\x00\x00\xf9\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x13\x00\x40\xf9\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x7f\xff\xff\x97\xe2\x03\x00\xaa\xe0\x00\x00\xf0\x01\xe8\x47\xf9\xe0\x03\x13\xaa\x76\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x92\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x13\x00\x40\xf9\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x6a\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x76\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x82\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xADF), Attr("segment","02 0 2784")), -Annotation(Region(0x800,0x833), Attr("symbol","\"_start\"")), -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,0x617), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x618,0x707), Attr("section","\".rela.plt\"")), -Annotation(Region(0x708,0x71F), Attr("section","\".init\"")), -Annotation(Region(0x720,0x7DF), Attr("section","\".plt\"")), -Annotation(Region(0x708,0x71F), Attr("code-region","()")), -Annotation(Region(0x720,0x7DF), 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,0x9DB), Attr("symbol","\"main\"")), -Annotation(Region(0x914,0x9DB), Attr("symbol-info","main 0x914 200")), -Annotation(Region(0x9DC,0x9EF), Attr("section","\".fini\"")), -Annotation(Region(0x9F0,0x9F3), Attr("section","\".rodata\"")), -Annotation(Region(0x9F4,0xA2F), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0xA30,0xADF), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDB8,0x20072), Attr("segment","03 0x1FDB8 720")), -Annotation(Region(0x1FDC0,0x1FDC7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDC8,0x1FFA7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDB8,0x1FDBF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFA8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), -Annotation(Region(0x800,0x9DB), Attr("section","\".text\"")), -Annotation(Region(0x800,0x9DB), Attr("code-region","()")), -Annotation(Region(0x9DC,0x9EF), Attr("code-region","()"))]), -Program(Tid(2_315, "%0000090b"), Attrs([]), - Subs([Sub(Tid(2_244, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x770"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_316, "%0000090c"), - 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_391, "@__cxa_finalize"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_811, "%00000713"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x774"), -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_826, "%00000722"), Attrs([Attr("address","0x778"), -Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_831, "%00000727"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_245, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_317, "%0000090d"), - 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(826, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(833, "%00000341"), - Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(838, "%00000346"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(843, "%0000034b"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(847, "%0000034f"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(854, "%00000356"), - Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(862, "%0000035e"), - 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(868, "%00000364"), Attrs([Attr("address","0x8CC"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(877, "%0000036d"), Attrs([Attr("address","0x8D0"), -Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), -Def(Tid(889, "%00000379"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(883, "%00000373"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(881, "%00000371"))), Goto(Tid(2_305, "%00000901"), Attrs([]), - Int(1,1), Direct(Tid(1_325, "%0000052d")))])), Blk(Tid(1_325, "%0000052d"), - Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_329, "%00000531"), Attrs([Attr("address","0x8D8"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_337, "%00000539"), Attrs([Attr("address","0x8DC"), -Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64)), -Def(Tid(1_349, "%00000545"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), Var("#77",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_343, "%0000053f"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), - Var("#77",Imm(1)), Direct(Tid(1_341, "%0000053d"))), -Goto(Tid(2_306, "%00000902"), Attrs([]), Int(1,1), -Direct(Tid(1_373, "%0000055d")))])), Blk(Tid(1_373, "%0000055d"), - Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_377, "%00000561"), Attrs([Attr("address","0x8E4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_385, "%00000569"), 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_390, "%0000056e"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_393, "%00000571"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x17c")]), Int(1,1), -(Direct(Tid(2_244, "@__cxa_finalize")),Direct(Tid(1_341, "%0000053d"))))])), -Blk(Tid(1_341, "%0000053d"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_354, "%0000054a"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_356, "%0000054c"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_258, "@deregister_tm_clones")),Direct(Tid(1_358, "%0000054e"))))])), -Blk(Tid(1_358, "%0000054e"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_363, "%00000553"), Attrs([Attr("address","0x8F4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x8F8"), -Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_307, "%00000903"), Attrs([]), Int(1,1), -Direct(Tid(881, "%00000371")))])), Blk(Tid(881, "%00000371"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(897, "%00000381"), - 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(907, "%0000038b"), 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(911, "%0000038f"), 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(914, "%00000392"), 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(919, "%00000397"), - Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_249, "@__libc_start_main"), - Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), -Attr("address","0x760"), Attr("stub","()")]), "__libc_start_main", - Args([Arg(Tid(2_318, "%0000090e"), - 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_319, "%0000090f"), 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_320, "%00000910"), 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_321, "%00000911"), 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_322, "%00000912"), 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(638, "@__libc_start_main"), - Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_786, "%000006fa"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_794, "%00000702"), Attrs([Attr("address","0x764"), -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_801, "%00000709"), Attrs([Attr("address","0x768"), -Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_806, "%0000070e"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_250, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9DC")]), - "_fini", Args([Arg(Tid(2_323, "%00000913"), - 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","0x9DC")]), Phis([]), Defs([Def(Tid(41, "%00000029"), - Attrs([Attr("address","0x9E0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9E0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9E0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9E0"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9E4"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9E8"), -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(76, "%0000004c"), Attrs([Attr("address","0x9E8"), -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(79, "%0000004f"), Attrs([Attr("address","0x9E8"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), - Attrs([Attr("address","0x9EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_251, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x708")]), - "_init", Args([Arg(Tid(2_324, "%00000914"), - 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(2_009, "@_init"), - Attrs([Attr("address","0x708")]), Phis([]), -Defs([Def(Tid(2_018, "%000007e2"), Attrs([Attr("address","0x70C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#108",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(2_023, "%000007e7"), Attrs([Attr("address","0x70C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#108",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(2_028, "%000007ec"), Attrs([Attr("address","0x70C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#108",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(2_032, "%000007f0"), Attrs([Attr("address","0x70C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#108",Imm(64))), Def(Tid(2_039, "%000007f7"), - Attrs([Attr("address","0x710"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_044, "%000007fc"), - Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), - Var("R30",Imm(64)), Int(1816,64))]), Jmps([Call(Tid(2_046, "%000007fe"), - Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), Int(1,1), -(Direct(Tid(2_256, "@call_weak_fn")),Direct(Tid(2_048, "%00000800"))))])), -Blk(Tid(2_048, "%00000800"), Attrs([Attr("address","0x718")]), Phis([]), -Defs([Def(Tid(2_056, "%00000808"), Attrs([Attr("address","0x718"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(2_060, "%0000080c"), Attrs([Attr("address","0x718"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(2_063, "%0000080f"), Attrs([Attr("address","0x718"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_068, "%00000814"), - Attrs([Attr("address","0x71C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_252, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_325, "%00000915"), - 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(564, "@_start"), - Attrs([Attr("address","0x800")]), Phis([]), Defs([Def(Tid(570, "%0000023a"), - Attrs([Attr("address","0x804"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(576, "%00000240"), - Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), - Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), - 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(599, "%00000257"), Attrs([Attr("address","0x814"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(606, "%0000025e"), - Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(612, "%00000264"), - Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(620, "%0000026c"), - 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(626, "%00000272"), Attrs([Attr("address","0x824"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(632, "%00000278"), Attrs([Attr("address","0x828"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(637, "%0000027d"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xcc")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(640, "%00000280"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xcc")]), Int(1,1), -(Direct(Tid(2_249, "@__libc_start_main")),Direct(Tid(642, "%00000282"))))])), -Blk(Tid(642, "%00000282"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(645, "%00000285"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x80")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x80")]), Int(1,1), -(Direct(Tid(2_255, "@abort")),Direct(Tid(2_308, "%00000904"))))])), -Blk(Tid(2_308, "%00000904"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_309, "%00000905"), Attrs([]), Int(1,1), -(Direct(Tid(2_256, "@call_weak_fn")),))]))])), Sub(Tid(2_255, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x7B0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(646, "@abort"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_911, "%00000777"), Attrs([Attr("address","0x7B0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_919, "%0000077f"), Attrs([Attr("address","0x7B4"), -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_926, "%00000786"), Attrs([Attr("address","0x7B8"), -Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_931, "%0000078b"), - Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_256, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), - "call_weak_fn", Args([Arg(Tid(2_326, "%00000916"), - 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(650, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(654, "%0000028e"), - Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(662, "%00000296"), - Attrs([Attr("address","0x838"), Attr("insn","ldr x0, [x0, #0xfc0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64)), -Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(668, "%0000029c"), - Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(666, "%0000029a"))), -Goto(Tid(2_310, "%00000906"), Attrs([]), Int(1,1), -Direct(Tid(1_473, "%000005c1")))])), Blk(Tid(666, "%0000029a"), - Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(679, "%000002a7"), Attrs([Attr("address","0x844"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_473, "%000005c1"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_476, "%000005c4"), Attrs([Attr("address","0x840"), -Attr("insn","b #-0xa0")]), Int(1,1), -Direct(Tid(1_474, "@__gmon_start__")))])), Blk(Tid(1_474, "@__gmon_start__"), - Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_886, "%0000075e"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x7A4"), -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_901, "%0000076d"), Attrs([Attr("address","0x7A8"), -Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_906, "%00000772"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_258, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_327, "%00000917"), - 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(685, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(689, "%000002b1"), - Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(696, "%000002b8"), - Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x78")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(702, "%000002be"), Attrs([Attr("address","0x858"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x85C"), -Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(717, "%000002cd"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(721, "%000002d1"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(724, "%000002d4"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(727, "%000002d7"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(730, "%000002da"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(744, "%000002e8"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(738, "%000002e2"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(736, "%000002e0"))), Goto(Tid(2_311, "%00000907"), Attrs([]), - Int(1,1), Direct(Tid(1_434, "%0000059a")))])), Blk(Tid(1_434, "%0000059a"), - Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_438, "%0000059e"), Attrs([Attr("address","0x868"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_446, "%000005a6"), Attrs([Attr("address","0x86C"), -Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64)), -Def(Tid(1_457, "%000005b1"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), Var("#85",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_451, "%000005ab"), - Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), - Var("#85",Imm(1)), Direct(Tid(736, "%000002e0"))), -Goto(Tid(2_312, "%00000908"), Attrs([]), Int(1,1), -Direct(Tid(1_460, "%000005b4")))])), Blk(Tid(736, "%000002e0"), - Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(749, "%000002ed"), Attrs([Attr("address","0x87C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_460, "%000005b4"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_466, "%000005ba"), Attrs([Attr("address","0x874"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_471, "%000005bf"), Attrs([Attr("address","0x878"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_261, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_328, "%00000918"), - 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(925, "@frame_dummy"), - Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(927, "%0000039f"), Attrs([Attr("address","0x910"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_268, "@register_tm_clones")),))]))])), Sub(Tid(2_262, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7D0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_329, "%00000919"), - 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_284, "@free"), Attrs([Attr("address","0x7D0")]), - Phis([]), Defs([Def(Tid(1_961, "%000007a9"), Attrs([Attr("address","0x7D0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_969, "%000007b1"), Attrs([Attr("address","0x7D4"), -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_976, "%000007b8"), Attrs([Attr("address","0x7D8"), -Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_981, "%000007bd"), - Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_263, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_330, "%0000091a"), - 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_331, "%0000091b"), - 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_332, "%0000091c"), - 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(929, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(936, "%000003a8"), - Attrs([Attr("address","0x914"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x914"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x914"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(950, "%000003b6"), Attrs([Attr("address","0x914"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#42",Imm(64))), Def(Tid(957, "%000003bd"), - Attrs([Attr("address","0x918"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(965, "%000003c5"), - Attrs([Attr("address","0x91C"), 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(973, "%000003cd"), Attrs([Attr("address","0x920"), -Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x924"), -Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x928"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(992, "%000003e0"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x1ac")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(995, "%000003e3"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x1ac")]), Int(1,1), -(Direct(Tid(2_264, "@malloc")),Direct(Tid(997, "%000003e5"))))])), -Blk(Tid(997, "%000003e5"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x930"), -Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x934"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x938"), -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)), -Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x93C"), -Attr("insn","str x1, [x0]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(1_031, "%00000407"), Attrs([Attr("address","0x940"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_039, "%0000040f"), Attrs([Attr("address","0x944"), -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)), -Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x948"), -Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_053, "%0000041d"), Attrs([Attr("address","0x94C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x950"), -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)), -Def(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x954"), -Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2392,64))]), -Jmps([Call(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x954"), -Attr("insn","bl #-0x204")]), Int(1,1), -(Direct(Tid(2_271, "@strlen")),Direct(Tid(1_071, "%0000042f"))))])), -Blk(Tid(1_071, "%0000042f"), Attrs([Attr("address","0x958")]), Phis([]), -Defs([Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x958"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x95C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x960"), -Attr("insn","ldr x1, [x0, #0xfd0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), -Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x964"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_104, "%00000450"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x228")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_107, "%00000453"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x228")]), Int(1,1), -(Direct(Tid(2_265, "@memcpy")),Direct(Tid(1_109, "%00000455"))))])), -Blk(Tid(1_109, "%00000455"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_113, "%00000459"), Attrs([Attr("address","0x96C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x970"), -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)), -Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x974"), -Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(1_137, "%00000471"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x1b8")]), Int(1,1), -(Direct(Tid(2_267, "@puts")),Direct(Tid(1_139, "%00000473"))))])), -Blk(Tid(1_139, "%00000473"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x97C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x980"), -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)), -Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x984"), -Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x988"), -Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_174, "%00000496"), - Attrs([Attr("address","0x98C"), Attr("insn","str x0, [sp, #0x28]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_180, "%0000049c"), Attrs([Attr("address","0x990"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x994"), -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)), -Def(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x998"), -Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_202, "%000004b2"), Attrs([Attr("address","0x99C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x9A0"), -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)), -Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x9A4"), -Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x9A8"), -Attr("insn","bl #-0x258")]), Var("R30",Imm(64)), Int(2476,64))]), -Jmps([Call(Tid(1_225, "%000004c9"), Attrs([Attr("address","0x9A8"), -Attr("insn","bl #-0x258")]), Int(1,1), -(Direct(Tid(2_271, "@strlen")),Direct(Tid(1_227, "%000004cb"))))])), -Blk(Tid(1_227, "%000004cb"), Attrs([Attr("address","0x9AC")]), Phis([]), -Defs([Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x9AC"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_240, "%000004d8"), Attrs([Attr("address","0x9B0"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x9B4"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_253, "%000004e5"), Attrs([Attr("address","0x9B8"), -Attr("insn","bl #-0x228")]), Var("R30",Imm(64)), Int(2492,64))]), -Jmps([Call(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x9B8"), -Attr("insn","bl #-0x228")]), Int(1,1), -(Direct(Tid(2_266, "@memset")),Direct(Tid(1_258, "%000004ea"))))])), -Blk(Tid(1_258, "%000004ea"), Attrs([Attr("address","0x9BC")]), Phis([]), -Defs([Def(Tid(1_262, "%000004ee"), Attrs([Attr("address","0x9BC"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_270, "%000004f6"), Attrs([Attr("address","0x9C0"), -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)), -Def(Tid(1_278, "%000004fe"), Attrs([Attr("address","0x9C4"), -Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_283, "%00000503"), Attrs([Attr("address","0x9C8"), -Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2508,64))]), -Jmps([Call(Tid(1_286, "%00000506"), Attrs([Attr("address","0x9C8"), -Attr("insn","bl #-0x1f8")]), Int(1,1), -(Direct(Tid(2_262, "@free")),Direct(Tid(1_288, "%00000508"))))])), -Blk(Tid(1_288, "%00000508"), Attrs([Attr("address","0x9CC")]), Phis([]), -Defs([Def(Tid(1_293, "%0000050d"), Attrs([Attr("address","0x9CC"), -Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_301, "%00000515"), Attrs([Attr("address","0x9D0"), -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_311, "%0000051f"), Attrs([Attr("address","0x9D4"), -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_315, "%00000523"), Attrs([Attr("address","0x9D4"), -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_318, "%00000526"), Attrs([Attr("address","0x9D4"), -Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_323, "%0000052b"), - Attrs([Attr("address","0x9D8"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_264, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x780"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_333, "%0000091d"), 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_334, "%0000091e"), - 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(993, "@malloc"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_836, "%0000072c"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_844, "%00000734"), Attrs([Attr("address","0x784"), -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_851, "%0000073b"), Attrs([Attr("address","0x788"), -Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_856, "%00000740"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_265, "@memcpy"), - Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), -Attr("address","0x740"), Attr("stub","()")]), "memcpy", - Args([Arg(Tid(2_335, "%0000091f"), 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_336, "%00000920"), - 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_337, "%00000921"), 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_338, "%00000922"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_105, "@memcpy"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_736, "%000006c8"), Attrs([Attr("address","0x740"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_744, "%000006d0"), Attrs([Attr("address","0x744"), -Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), -Def(Tid(1_751, "%000006d7"), Attrs([Attr("address","0x748"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_756, "%000006dc"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_266, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x790"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_339, "%00000923"), 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_340, "%00000924"), - 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_341, "%00000925"), - 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_342, "%00000926"), 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_254, "@memset"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_861, "%00000745"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x794"), -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_876, "%00000754"), Attrs([Attr("address","0x798"), -Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_881, "%00000759"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_267, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x7C0"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_343, "%00000927"), 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_344, "%00000928"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_135, "@puts"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_936, "%00000790"), Attrs([Attr("address","0x7C0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_944, "%00000798"), Attrs([Attr("address","0x7C4"), -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_951, "%0000079f"), Attrs([Attr("address","0x7C8"), -Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_956, "%000007a4"), - Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_268, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_345, "%00000929"), - 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(751, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x880"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(762, "%000002fa"), Attrs([Attr("address","0x884"), -Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(768, "%00000300"), - Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(775, "%00000307"), - Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x78")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x890"), -Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(790, "%00000316"), - Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(798, "%0000031e"), 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,64)))), -Def(Tid(805, "%00000325"), Attrs([Attr("address","0x89C"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(817, "%00000331"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(811, "%0000032b"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(809, "%00000329"))), Goto(Tid(2_313, "%00000909"), Attrs([]), - Int(1,1), Direct(Tid(1_395, "%00000573")))])), Blk(Tid(1_395, "%00000573"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_399, "%00000577"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_407, "%0000057f"), 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)), -Def(Tid(1_418, "%0000058a"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), Var("#80",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_412, "%00000584"), - Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), - Var("#80",Imm(1)), Direct(Tid(809, "%00000329"))), -Goto(Tid(2_314, "%0000090a"), Attrs([]), Int(1,1), -Direct(Tid(1_421, "%0000058d")))])), Blk(Tid(809, "%00000329"), - Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(822, "%00000336"), Attrs([Attr("address","0x8B8"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_421, "%0000058d"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_427, "%00000593"), Attrs([Attr("address","0x8B0"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_432, "%00000598"), Attrs([Attr("address","0x8B4"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_271, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x750"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_346, "%0000092a"), 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_347, "%0000092b"), - Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), -Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_067, "@strlen"), - Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_761, "%000006e1"), Attrs([Attr("address","0x750"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_769, "%000006e9"), Attrs([Attr("address","0x754"), -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_776, "%000006f0"), Attrs([Attr("address","0x758"), -Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_781, "%000006f5"), - Attrs([Attr("address","0x75C"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index bc2a8c050..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,369 +0,0 @@ -0000090b: program -000008c4: sub __cxa_finalize(__cxa_finalize_result) -0000090c: __cxa_finalize_result :: out u32 = low:32[R0] - -0000056f: -00000713: R16 := 0x20000 -0000071b: R17 := mem[R16 + 0x18, el]:u64 -00000722: R16 := R16 + 0x18 -00000727: call R17 with noreturn - -000008c5: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000090d: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -0000033a: -00000341: #34 := R31 - 0x20 -00000346: mem := mem with [#34, el]:u64 <- R29 -0000034b: mem := mem with [#34 + 8, el]:u64 <- R30 -0000034f: R31 := #34 -00000356: R29 := R31 -0000035e: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000364: R19 := 0x20000 -0000036d: R0 := pad:32[mem[R19 + 0x78]] -00000379: #36 := ~~0:0[R0] -00000373: when #36 goto %00000371 -00000901: goto %0000052d - -0000052d: -00000531: R0 := 0x1F000 -00000539: R0 := mem[R0 + 0xFB8, el]:u64 -00000545: #77 := R0 = 0 -0000053f: when #77 goto %0000053d -00000902: goto %0000055d - -0000055d: -00000561: R0 := 0x20000 -00000569: R0 := mem[R0 + 0x58, el]:u64 -0000056e: R30 := 0x8F0 -00000571: call @__cxa_finalize with return %0000053d - -0000053d: -0000054a: R30 := 0x8F4 -0000054c: call @deregister_tm_clones with return %0000054e - -0000054e: -00000553: R0 := 1 -0000055b: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] -00000903: goto %00000371 - -00000371: -00000381: R19 := mem[R31 + 0x10, el]:u64 -0000038b: R29 := mem[R31, el]:u64 -0000038f: R30 := mem[R31 + 8, el]:u64 -00000392: R31 := R31 + 0x20 -00000397: call R30 with noreturn - -000008c9: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -0000090e: __libc_start_main_main :: in u64 = R0 -0000090f: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000910: __libc_start_main_arg3 :: in out u64 = R2 -00000911: __libc_start_main_auxv :: in out u64 = R3 -00000912: __libc_start_main_result :: out u32 = low:32[R0] - -0000027e: -000006fa: R16 := 0x20000 -00000702: R17 := mem[R16 + 0x10, el]:u64 -00000709: R16 := R16 + 0x10 -0000070e: call R17 with noreturn - -000008ca: sub _fini(_fini_result) -00000913: _fini_result :: out u32 = low:32[R0] - -00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -000008cb: sub _init(_init_result) -00000914: _init_result :: out u32 = low:32[R0] - -000007d9: -000007e2: #108 := R31 - 0x10 -000007e7: mem := mem with [#108, el]:u64 <- R29 -000007ec: mem := mem with [#108 + 8, el]:u64 <- R30 -000007f0: R31 := #108 -000007f7: R29 := R31 -000007fc: R30 := 0x718 -000007fe: call @call_weak_fn with return %00000800 - -00000800: -00000808: R29 := mem[R31, el]:u64 -0000080c: R30 := mem[R31 + 8, el]:u64 -0000080f: R31 := R31 + 0x10 -00000814: call R30 with noreturn - -000008cc: sub _start(_start_result) -00000915: _start_result :: out u32 = low:32[R0] - -00000234: -0000023a: R29 := 0 -00000240: R30 := 0 -00000248: R5 := R0 -00000250: R1 := mem[R31, el]:u64 -00000257: R2 := R31 + 8 -0000025e: R6 := R31 -00000264: R0 := 0x1F000 -0000026c: R0 := mem[R0 + 0xFD8, el]:u64 -00000272: R3 := 0 -00000278: R4 := 0 -0000027d: R30 := 0x830 -00000280: call @__libc_start_main with return %00000282 - -00000282: -00000285: R30 := 0x834 -00000288: call @abort with return %00000904 - -00000904: -00000905: call @call_weak_fn with noreturn - -000008cf: sub abort() - - -00000286: -00000777: R16 := 0x20000 -0000077f: R17 := mem[R16 + 0x38, el]:u64 -00000786: R16 := R16 + 0x38 -0000078b: call R17 with noreturn - -000008d0: sub call_weak_fn(call_weak_fn_result) -00000916: call_weak_fn_result :: out u32 = low:32[R0] - -0000028a: -0000028e: R0 := 0x1F000 -00000296: R0 := mem[R0 + 0xFC0, el]:u64 -000002a2: #12 := R0 = 0 -0000029c: when #12 goto %0000029a -00000906: goto %000005c1 - -0000029a: -000002a7: call R30 with noreturn - -000005c1: -000005c4: goto @__gmon_start__ - -000005c2: -0000075e: R16 := 0x20000 -00000766: R17 := mem[R16 + 0x30, el]:u64 -0000076d: R16 := R16 + 0x30 -00000772: call R17 with noreturn - -000008d2: sub deregister_tm_clones(deregister_tm_clones_result) -00000917: deregister_tm_clones_result :: out u32 = low:32[R0] - -000002ad: -000002b1: R0 := 0x20000 -000002b8: R0 := R0 + 0x78 -000002be: R1 := 0x20000 -000002c5: R1 := R1 + 0x78 -000002cd: #16 := 1 + ~R0 + R1 -000002d1: NF := 63:63[#16] -000002d4: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002d7: ZF := #16 = 0 -000002da: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002e8: #21 := ZF -000002e2: when #21 goto %000002e0 -00000907: goto %0000059a - -0000059a: -0000059e: R1 := 0x1F000 -000005a6: R1 := mem[R1 + 0xFB0, el]:u64 -000005b1: #85 := R1 = 0 -000005ab: when #85 goto %000002e0 -00000908: goto %000005b4 - -000002e0: -000002ed: call R30 with noreturn - -000005b4: -000005ba: R16 := R1 -000005bf: call R16 with noreturn - -000008d5: sub frame_dummy(frame_dummy_result) -00000918: frame_dummy_result :: out u32 = low:32[R0] - -0000039d: -0000039f: call @register_tm_clones with noreturn - -000008d6: sub free(free_ptr) -00000919: free_ptr :: in out u64 = R0 - -00000504: -000007a9: R16 := 0x20000 -000007b1: R17 := mem[R16 + 0x48, el]:u64 -000007b8: R16 := R16 + 0x48 -000007bd: call R17 with noreturn - -000008d7: sub main(main_argc, main_argv, main_result) -0000091a: main_argc :: in u32 = low:32[R0] -0000091b: main_argv :: in out u64 = R1 -0000091c: main_result :: out u32 = low:32[R0] - -000003a1: -000003a8: #42 := R31 - 0x30 -000003ad: mem := mem with [#42, el]:u64 <- R29 -000003b2: mem := mem with [#42 + 8, el]:u64 <- R30 -000003b6: R31 := #42 -000003bd: R29 := R31 -000003c5: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000003cd: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003d5: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003db: R0 := 0xB -000003e0: R30 := 0x930 -000003e3: call @malloc with return %000003e5 - -000003e5: -000003eb: R1 := R0 -000003f1: R0 := 0x1F000 -000003f9: R0 := mem[R0 + 0xFC8, el]:u64 -00000401: mem := mem with [R0, el]:u64 <- R1 -00000407: R0 := 0x1F000 -0000040f: R0 := mem[R0 + 0xFC8, el]:u64 -00000417: R19 := mem[R0, el]:u64 -0000041d: R0 := 0x1F000 -00000425: R0 := mem[R0 + 0xFD0, el]:u64 -0000042a: R30 := 0x958 -0000042d: call @strlen with return %0000042f - -0000042f: -00000435: R2 := R0 -0000043b: R0 := 0x1F000 -00000443: R1 := mem[R0 + 0xFD0, el]:u64 -0000044b: R0 := R19 -00000450: R30 := 0x96C -00000453: call @memcpy with return %00000455 - -00000455: -00000459: R0 := 0x1F000 -00000461: R0 := mem[R0 + 0xFC8, el]:u64 -00000469: R0 := mem[R0, el]:u64 -0000046e: R30 := 0x97C -00000471: call @puts with return %00000473 - -00000473: -00000477: R0 := 0x1F000 -0000047f: R0 := mem[R0 + 0xFC8, el]:u64 -00000487: R0 := mem[R0, el]:u64 -0000048e: R0 := R0 + 4 -00000496: mem := mem with [R31 + 0x28, el]:u64 <- R0 -0000049c: R0 := 0x1F000 -000004a4: R0 := mem[R0 + 0xFC8, el]:u64 -000004ac: R19 := mem[R0, el]:u64 -000004b2: R0 := 0x1F000 -000004ba: R0 := mem[R0 + 0xFC8, el]:u64 -000004c2: R0 := mem[R0, el]:u64 -000004c7: R30 := 0x9AC -000004c9: call @strlen with return %000004cb - -000004cb: -000004d1: R2 := R0 -000004d8: R1 := 1 -000004e0: R0 := R19 -000004e5: R30 := 0x9BC -000004e8: call @memset with return %000004ea - -000004ea: -000004ee: R0 := 0x1F000 -000004f6: R0 := mem[R0 + 0xFC8, el]:u64 -000004fe: R0 := mem[R0, el]:u64 -00000503: R30 := 0x9CC -00000506: call @free with return %00000508 - -00000508: -0000050d: R0 := 0 -00000515: R19 := mem[R31 + 0x10, el]:u64 -0000051f: R29 := mem[R31, el]:u64 -00000523: R30 := mem[R31 + 8, el]:u64 -00000526: R31 := R31 + 0x30 -0000052b: call R30 with noreturn - -000008d8: sub malloc(malloc_size, malloc_result) -0000091d: malloc_size :: in u64 = R0 -0000091e: malloc_result :: out u64 = R0 - -000003e1: -0000072c: R16 := 0x20000 -00000734: R17 := mem[R16 + 0x20, el]:u64 -0000073b: R16 := R16 + 0x20 -00000740: call R17 with noreturn - -000008d9: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -0000091f: memcpy_dst :: in out u64 = R0 -00000920: memcpy_src :: in out u64 = R1 -00000921: memcpy_n :: in u64 = R2 -00000922: memcpy_result :: out u64 = R0 - -00000451: -000006c8: R16 := 0x20000 -000006d0: R17 := mem[R16, el]:u64 -000006d7: R16 := R16 -000006dc: call R17 with noreturn - -000008da: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000923: memset_buf :: in out u64 = R0 -00000924: memset_c :: in u32 = low:32[R1] -00000925: memset_n :: in u64 = R2 -00000926: memset_result :: out u64 = R0 - -000004e6: -00000745: R16 := 0x20000 -0000074d: R17 := mem[R16 + 0x28, el]:u64 -00000754: R16 := R16 + 0x28 -00000759: call R17 with noreturn - -000008db: sub puts(puts_s, puts_result) -00000927: puts_s :: in u64 = R0 -00000928: puts_result :: out u32 = low:32[R0] - -0000046f: -00000790: R16 := 0x20000 -00000798: R17 := mem[R16 + 0x40, el]:u64 -0000079f: R16 := R16 + 0x40 -000007a4: call R17 with noreturn - -000008dc: sub register_tm_clones(register_tm_clones_result) -00000929: register_tm_clones_result :: out u32 = low:32[R0] - -000002ef: -000002f3: R0 := 0x20000 -000002fa: R0 := R0 + 0x78 -00000300: R1 := 0x20000 -00000307: R1 := R1 + 0x78 -0000030f: R1 := R1 - R0 -00000316: R2 := R1 >> 0x3F -0000031e: R1 := R2 + (R1 ~>> 3) -00000325: R1 := R1 >> 1 -00000331: #30 := R1 = 0 -0000032b: when #30 goto %00000329 -00000909: goto %00000573 - -00000573: -00000577: R2 := 0x1F000 -0000057f: R2 := mem[R2 + 0xFE0, el]:u64 -0000058a: #80 := R2 = 0 -00000584: when #80 goto %00000329 -0000090a: goto %0000058d - -00000329: -00000336: call R30 with noreturn - -0000058d: -00000593: R16 := R2 -00000598: call R16 with noreturn - -000008df: sub strlen(strlen_s, strlen_result) -0000092a: strlen_s :: in u64 = R0 -0000092b: strlen_result :: out u64 = R0 - -0000042b: -000006e1: R16 := 0x20000 -000006e9: R17 := mem[R16 + 8, el]:u64 -000006f0: R16 := R16 + 8 -000006f5: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index 96741e11a..000000000 --- a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,145 +0,0 @@ - -Relocation section '.rela.dyn' at offset 0x528 contains 10 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdb8 0000000000000403 R_AARCH64_RELATIVE 910 -000000000001fdc0 0000000000000403 R_AARCH64_RELATIVE 8c0 -000000000001ffc8 0000000000000403 R_AARCH64_RELATIVE 20080 -000000000001ffd0 0000000000000403 R_AARCH64_RELATIVE 20068 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 914 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffb0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffb8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffc0 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 0x618 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: 0000000000000708 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: 0000000000000618 0 SECTION LOCAL DEFAULT 10 .rela.plt - 11: 0000000000000708 0 SECTION LOCAL DEFAULT 11 .init - 12: 0000000000000720 0 SECTION LOCAL DEFAULT 12 .plt - 13: 0000000000000800 0 SECTION LOCAL DEFAULT 13 .text - 14: 00000000000009dc 0 SECTION LOCAL DEFAULT 14 .fini - 15: 00000000000009f0 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 00000000000009f4 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 0000000000000a30 0 SECTION LOCAL DEFAULT 17 .eh_frame - 18: 000000000001fdb8 0 SECTION LOCAL DEFAULT 18 .init_array - 19: 000000000001fdc0 0 SECTION LOCAL DEFAULT 19 .fini_array - 20: 000000000001fdc8 0 SECTION LOCAL DEFAULT 20 .dynamic - 21: 000000000001ffa8 0 SECTION LOCAL DEFAULT 21 .got - 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt - 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss - 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment - 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o - 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d - 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag - 29: 0000000000000800 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 0000000000000a44 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 00000000000009f0 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 0000000000000834 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 0000000000000834 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 0000000000000708 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 00000000000009dc 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 0000000000000718 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 00000000000009e8 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000850 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000850 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000880 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 00000000000008c0 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdc0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdc0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 0000000000000910 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdb8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdb8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a58 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d - 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d - 57: 0000000000000914 0 NOTYPE LOCAL DEFAULT 13 $x - 58: 0000000000000ab8 0 NOTYPE LOCAL DEFAULT 17 $d - 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 60: 0000000000000adc 0 NOTYPE LOCAL DEFAULT 17 $d - 61: 0000000000000adc 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 63: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 64: 00000000000009f4 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 65: 000000000001ffa8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 66: 0000000000000720 0 NOTYPE LOCAL DEFAULT 12 $x - 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata - 76: 00000000000009dc 0 FUNC GLOBAL HIDDEN 14 _fini - 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 85: 00000000000009f0 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end - 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 89: 0000000000000800 52 FUNC GLOBAL DEFAULT 13 _start - 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf - 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext - 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 94: 0000000000000914 200 FUNC GLOBAL DEFAULT 13 main - 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 97: 0000000000000708 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index 58e85e225..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,767 +0,0 @@ -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 2500 20 2500)\n(code-region 2048 452 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 176)\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 2500 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 2500 20)\n(llvm:code-entry .text 2048 452)\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 2524 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 2784)\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 2524 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 2784)\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 2584 200 2584)\n(llvm:section-entry .eh_frame_hdr 2524 60 2524)\n(llvm:section-entry .rodata 2520 4 2520)\n(llvm:section-entry .fini 2500 20 2500)\n(llvm:section-entry .text 2048 452 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 176 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 2500 0 2500 2500)\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 2784 0)\n(mapped 130488 692 64952)\n(named-region 0 2784 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 452 .text)\n(named-region 2500 20 .fini)\n(named-region 2520 4 .rodata)\n(named-region 2524 60 .eh_frame_hdr)\n(named-region 2584 200 .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 2500 _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 452)\n(section 2500 20)\n(section 2520 4)\n(section 2524 60)\n(section 2584 200)\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 2784 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 176 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 2500 2500)\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad"), -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", 0x9C4, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9D8, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9DC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x24\xfe\xff\xff\x50\x00\x00\x00\x74\xfe\xff\xff\x64\x00\x00\x00\xa4\xfe\xff\xff\x78\x00\x00\x00\xe4\xfe\xff\xff\x8c\x00\x00\x00\x34\xff\xff\xff\xb0\x00\x00\x00\x38\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0xA18, "\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\xcc\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x08\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x24\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x50\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\x7c\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\x24\x00\x00\x00\x18\x00\x00\x00\x58\xfe\xff\xff\xb0\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x98\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\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\xc4\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x80\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x9d\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\xa9\x83\x5f\xf8\x3f\x01\x00\x39\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x77\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x83\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x90\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xADF), Attr("segment","02 0 2784")), -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,0x9C3), Attr("symbol","\"main\"")), -Annotation(Region(0x914,0x9C3), Attr("symbol-info","main 0x914 176")), -Annotation(Region(0x9C4,0x9D7), Attr("section","\".fini\"")), -Annotation(Region(0x9D8,0x9DB), Attr("section","\".rodata\"")), -Annotation(Region(0x9DC,0xA17), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0xA18,0xADF), 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,0x9C3), Attr("section","\".text\"")), -Annotation(Region(0x800,0x9C3), Attr("code-region","()")), -Annotation(Region(0x9C4,0x9D7), Attr("code-region","()"))]), -Program(Tid(2_217, "%000008a9"), Attrs([]), - Subs([Sub(Tid(2_146, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_218, "%000008aa"), - 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_234, "@__cxa_finalize"), - Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_147, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_219, "%000008ab"), - 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(767, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(771, "%00000303"), - 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(777, "%00000309"), 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(783, "%0000030f"), 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(787, "%00000313"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(793, "%00000319"), - Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(801, "%00000321"), - 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(806, "%00000326"), Attrs([Attr("address","0x8CC"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(813, "%0000032d"), 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(819, "%00000333"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(817, "%00000331"))), -Goto(Tid(2_207, "%0000089f"), Attrs([]), Int(1,1), -Direct(Tid(1_179, "%0000049b")))])), Blk(Tid(1_179, "%0000049b"), - Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x8D8"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_189, "%000004a5"), 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_195, "%000004ab"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_193, "%000004a9"))), Goto(Tid(2_208, "%000008a0"), Attrs([]), - Int(1,1), Direct(Tid(1_218, "%000004c2")))])), Blk(Tid(1_218, "%000004c2"), - Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x8E4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_228, "%000004cc"), 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_233, "%000004d1"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_236, "%000004d4"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_146, "@__cxa_finalize")),Direct(Tid(1_193, "%000004a9"))))])), -Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_201, "%000004b1"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_203, "%000004b3"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_160, "@deregister_tm_clones")),Direct(Tid(1_205, "%000004b5"))))])), -Blk(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_208, "%000004b8"), Attrs([Attr("address","0x8F4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_216, "%000004c0"), 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_209, "%000008a1"), Attrs([]), Int(1,1), -Direct(Tid(817, "%00000331")))])), Blk(Tid(817, "%00000331"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(827, "%0000033b"), - 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(834, "%00000342"), 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(839, "%00000347"), 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(843, "%0000034b"), 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(848, "%00000350"), - Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_151, "@__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_220, "%000008ac"), - 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_221, "%000008ad"), 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_222, "%000008ae"), 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_223, "%000008af"), 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_224, "%000008b0"), 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(600, "@__libc_start_main"), - Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), 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_618, "%00000652"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_152, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9C4")]), - "_fini", Args([Arg(Tid(2_225, "%000008b1"), - 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","0x9C4")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0x9C8"), -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","0x9C8"), -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","0x9C8"), -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","0x9C8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9CC"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9D0"), -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","0x9D0"), -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","0x9D0"), -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","0x9D4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_153, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), - "_init", Args([Arg(Tid(2_226, "%000008b2"), - 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_920, "@_init"), - Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_932, "%0000078c"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_938, "%00000792"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_942, "%00000796"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#7",Imm(64))), Def(Tid(1_948, "%0000079c"), - Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_953, "%000007a1"), - Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), - Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_955, "%000007a3"), - Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), -(Direct(Tid(2_158, "@call_weak_fn")),Direct(Tid(1_957, "%000007a5"))))])), -Blk(Tid(1_957, "%000007a5"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(1_962, "%000007aa"), 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_967, "%000007af"), 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_971, "%000007b3"), 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_976, "%000007b8"), - Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_154, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), -Attr("stub","()"), Attr("entry-point","()")]), "_start", - Args([Arg(Tid(2_227, "%000008b3"), 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(537, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(542, "%0000021e"), Attrs([Attr("address","0x804"), -Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), -Def(Tid(547, "%00000223"), Attrs([Attr("address","0x808"), -Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(553, "%00000229"), Attrs([Attr("address","0x80C"), -Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), -Def(Tid(560, "%00000230"), 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(566, "%00000236"), Attrs([Attr("address","0x814"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(572, "%0000023c"), - Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(577, "%00000241"), - Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(584, "%00000248"), - 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(589, "%0000024d"), Attrs([Attr("address","0x824"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(594, "%00000252"), Attrs([Attr("address","0x828"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(599, "%00000257"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_151, "@__libc_start_main")),Direct(Tid(604, "%0000025c"))))])), -Blk(Tid(604, "%0000025c"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(610, "%00000262"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_157, "@abort")),Direct(Tid(2_210, "%000008a2"))))])), -Blk(Tid(2_210, "%000008a2"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_211, "%000008a3"), Attrs([]), Int(1,1), -(Direct(Tid(2_158, "@call_weak_fn")),))]))])), Sub(Tid(2_157, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(608, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x7D0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), - Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_158, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), - "call_weak_fn", Args([Arg(Tid(2_228, "%000008b4"), - 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(612, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(615, "%00000267"), - Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(622, "%0000026e"), - 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(628, "%00000274"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(626, "%00000272"))), Goto(Tid(2_212, "%000008a4"), Attrs([]), - Int(1,1), Direct(Tid(1_298, "%00000512")))])), Blk(Tid(626, "%00000272"), - Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x844"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_298, "%00000512"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_301, "%00000515"), Attrs([Attr("address","0x840"), -Attr("insn","b #-0x80")]), Int(1,1), -Direct(Tid(1_299, "@__gmon_start__")))])), Blk(Tid(1_299, "@__gmon_start__"), - Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x7C0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), - Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_160, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_229, "%000008b5"), - 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(640, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(643, "%00000283"), - Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(649, "%00000289"), - Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(654, "%0000028e"), Attrs([Attr("address","0x858"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(660, "%00000294"), Attrs([Attr("address","0x85C"), -Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(666, "%0000029a"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(671, "%0000029f"), - 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(677, "%000002a5"), 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(683, "%000002ab"), 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(687, "%000002af"), 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(691, "%000002b3"), - 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(697, "%000002b9"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(695, "%000002b7"))), Goto(Tid(2_213, "%000008a5"), Attrs([]), - Int(1,1), Direct(Tid(1_268, "%000004f4")))])), Blk(Tid(1_268, "%000004f4"), - Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x868"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_278, "%000004fe"), 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_283, "%00000503"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(695, "%000002b7"))), Goto(Tid(2_214, "%000008a6"), Attrs([]), - Int(1,1), Direct(Tid(1_287, "%00000507")))])), Blk(Tid(695, "%000002b7"), - Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(703, "%000002bf"), Attrs([Attr("address","0x87C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_287, "%00000507"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x874"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_296, "%00000510"), Attrs([Attr("address","0x878"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_163, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_230, "%000008b6"), - 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(854, "@frame_dummy"), - Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(856, "%00000358"), Attrs([Attr("address","0x910"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_170, "@register_tm_clones")),))]))])), Sub(Tid(2_164, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_231, "%000008b7"), - 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_143, "@free"), Attrs([Attr("address","0x7F0")]), - Phis([]), Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x7F0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_761, "%000006e1"), 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_767, "%000006e7"), 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_772, "%000006ec"), - Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_165, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_232, "%000008b8"), - 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_233, "%000008b9"), - 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_234, "%000008ba"), - 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(858, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(862, "%0000035e"), - Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), -Def(Tid(868, "%00000364"), Attrs([Attr("address","0x918"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(874, "%0000036a"), - Attrs([Attr("address","0x918"), 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(880, "%00000370"), Attrs([Attr("address","0x918"), -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(886, "%00000376"), Attrs([Attr("address","0x91C"), -Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(893, "%0000037d"), - Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(900, "%00000384"), Attrs([Attr("address","0x924"), -Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(905, "%00000389"), Attrs([Attr("address","0x928"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(913, "%00000391"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_166, "@malloc")),Direct(Tid(915, "%00000393"))))])), -Blk(Tid(915, "%00000393"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(918, "%00000396"), Attrs([Attr("address","0x930"), -Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x934"), -Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(934, "%000003a6"), Attrs([Attr("address","0x938"), -Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x93C"), -Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x940"), -Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x944"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x948"), -Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(968, "%000003c8"), - Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x950"), -Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), -Jmps([Call(Tid(976, "%000003d0"), Attrs([Attr("address","0x950"), -Attr("insn","bl #-0x1e0")]), Int(1,1), -(Direct(Tid(2_173, "@strlen")),Direct(Tid(978, "%000003d2"))))])), -Blk(Tid(978, "%000003d2"), Attrs([Attr("address","0x954")]), Phis([]), -Defs([Def(Tid(983, "%000003d7"), Attrs([Attr("address","0x954"), -Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x958"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(996, "%000003e4"), Attrs([Attr("address","0x95C"), -Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), -Jmps([Call(Tid(1_004, "%000003ec"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_167, "@memcpy")),Direct(Tid(1_006, "%000003ee"))))])), -Blk(Tid(1_006, "%000003ee"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x964"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x968"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x96C"), -Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), -Jmps([Call(Tid(1_026, "%00000402"), Attrs([Attr("address","0x96C"), -Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_169, "@puts")),Direct(Tid(1_028, "%00000404"))))])), -Blk(Tid(1_028, "%00000404"), Attrs([Attr("address","0x970")]), Phis([]), -Defs([Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x970"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x974"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x978"), -Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_054, "%0000041e"), - Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x980"), -Attr("insn","ldur x9, [x29, #-0x8]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), -Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x984"), -Attr("insn","strb wzr, [x9]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),LittleEndian(),8)), -Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x988"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x98C"), -Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_090, "%00000442"), Attrs([Attr("address","0x990"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_095, "%00000447"), Attrs([Attr("address","0x994"), -Attr("insn","bl #-0x224")]), Var("R30",Imm(64)), Int(2456,64))]), -Jmps([Call(Tid(1_097, "%00000449"), Attrs([Attr("address","0x994"), -Attr("insn","bl #-0x224")]), Int(1,1), -(Direct(Tid(2_173, "@strlen")),Direct(Tid(1_099, "%0000044b"))))])), -Blk(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x998")]), Phis([]), -Defs([Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x998"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_110, "%00000456"), Attrs([Attr("address","0x99C"), -Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x9A0"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x9A4"), -Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2472,64))]), -Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x9A4"), -Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_168, "@memset")),Direct(Tid(1_125, "%00000465"))))])), -Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x9A8")]), Phis([]), -Defs([Def(Tid(1_130, "%0000046a"), Attrs([Attr("address","0x9A8"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_137, "%00000471"), Attrs([Attr("address","0x9AC"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_142, "%00000476"), Attrs([Attr("address","0x9B0"), -Attr("insn","bl #-0x1c0")]), Var("R30",Imm(64)), Int(2484,64))]), -Jmps([Call(Tid(1_145, "%00000479"), Attrs([Attr("address","0x9B0"), -Attr("insn","bl #-0x1c0")]), Int(1,1), -(Direct(Tid(2_164, "@free")),Direct(Tid(1_147, "%0000047b"))))])), -Blk(Tid(1_147, "%0000047b"), Attrs([Attr("address","0x9B4")]), Phis([]), -Defs([Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x9B4"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x9B8"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_161, "%00000489"), - Attrs([Attr("address","0x9B8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), - Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), -Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x9B8"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_172, "%00000494"), Attrs([Attr("address","0x9BC"), -Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_177, "%00000499"), - Attrs([Attr("address","0x9C0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_166, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_235, "%000008bb"), 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_236, "%000008bc"), - 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(911, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_167, "@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_237, "%000008bd"), 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_238, "%000008be"), - 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_239, "%000008bf"), 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_240, "%000008c0"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_002, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_563, "%0000061b"), 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_569, "%00000621"), Attrs([Attr("address","0x768"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_574, "%00000626"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_168, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x7B0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_241, "%000008c1"), 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_242, "%000008c2"), - 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_243, "%000008c3"), - 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_244, "%000008c4"), 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_121, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x7B0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_169, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x7E0"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_245, "%000008c5"), 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_246, "%000008c6"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_024, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7E0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), - Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_170, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_247, "%000008c7"), - 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(705, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(708, "%000002c4"), Attrs([Attr("address","0x880"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(714, "%000002ca"), Attrs([Attr("address","0x884"), -Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(719, "%000002cf"), - Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(725, "%000002d5"), - Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(732, "%000002dc"), 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(738, "%000002e2"), 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(745, "%000002e9"), 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(751, "%000002ef"), 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(757, "%000002f5"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(755, "%000002f3"))), Goto(Tid(2_215, "%000008a7"), Attrs([]), - Int(1,1), Direct(Tid(1_238, "%000004d6")))])), Blk(Tid(1_238, "%000004d6"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_248, "%000004e0"), 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_253, "%000004e5"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(755, "%000002f3"))), Goto(Tid(2_216, "%000008a8"), Attrs([]), - Int(1,1), Direct(Tid(1_257, "%000004e9")))])), Blk(Tid(755, "%000002f3"), - Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(763, "%000002fb"), Attrs([Attr("address","0x8B8"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8B0"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8B4"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_173, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_248, "%000008c8"), 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_249, "%000008c9"), - 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(974, "@strlen"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_578, "%0000062a"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_585, "%00000631"), 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_591, "%00000637"), 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_596, "%0000063c"), - 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/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index 6b5f3b499..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,354 +0,0 @@ -000008a9: program -00000862: sub __cxa_finalize(__cxa_finalize_result) -000008aa: __cxa_finalize_result :: out u32 = low:32[R0] - -000004d2: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16 + 0x18, el]:u64 -00000663: R16 := R16 + 0x18 -00000668: call R17 with noreturn - -00000863: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008ab: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -000002ff: -00000303: #3 := R31 - 0x20 -00000309: mem := mem with [#3, el]:u64 <- R29 -0000030f: mem := mem with [#3 + 8, el]:u64 <- R30 -00000313: R31 := #3 -00000319: R29 := R31 -00000321: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000326: R19 := 0x20000 -0000032d: R0 := pad:64[mem[R19 + 0x70]] -00000333: when 0:0[R0] goto %00000331 -0000089f: goto %0000049b - -0000049b: -0000049e: R0 := 0x1F000 -000004a5: R0 := mem[R0 + 0xFC8, el]:u64 -000004ab: when R0 = 0 goto %000004a9 -000008a0: goto %000004c2 - -000004c2: -000004c5: R0 := 0x20000 -000004cc: R0 := mem[R0 + 0x58, el]:u64 -000004d1: R30 := 0x8F0 -000004d4: call @__cxa_finalize with return %000004a9 - -000004a9: -000004b1: R30 := 0x8F4 -000004b3: call @deregister_tm_clones with return %000004b5 - -000004b5: -000004b8: R0 := 1 -000004c0: mem := mem with [R19 + 0x70] <- 7:0[R0] -000008a1: goto %00000331 - -00000331: -0000033b: R19 := mem[R31 + 0x10, el]:u64 -00000342: R29 := mem[R31, el]:u64 -00000347: R30 := mem[R31 + 8, el]:u64 -0000034b: R31 := R31 + 0x20 -00000350: call R30 with noreturn - -00000867: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008ac: __libc_start_main_main :: in u64 = R0 -000008ad: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008ae: __libc_start_main_arg3 :: in out u64 = R2 -000008af: __libc_start_main_auxv :: in out u64 = R3 -000008b0: __libc_start_main_result :: out u32 = low:32[R0] - -00000258: -00000640: R16 := 0x20000 -00000647: R17 := mem[R16 + 0x10, el]:u64 -0000064d: R16 := R16 + 0x10 -00000652: call R17 with noreturn - -00000868: sub _fini(_fini_result) -000008b1: _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 - -00000869: sub _init(_init_result) -000008b2: _init_result :: out u32 = low:32[R0] - -00000780: -00000786: #7 := R31 - 0x10 -0000078c: mem := mem with [#7, el]:u64 <- R29 -00000792: mem := mem with [#7 + 8, el]:u64 <- R30 -00000796: R31 := #7 -0000079c: R29 := R31 -000007a1: R30 := 0x738 -000007a3: call @call_weak_fn with return %000007a5 - -000007a5: -000007aa: R29 := mem[R31, el]:u64 -000007af: R30 := mem[R31 + 8, el]:u64 -000007b3: R31 := R31 + 0x10 -000007b8: call R30 with noreturn - -0000086a: sub _start(_start_result) -000008b3: _start_result :: out u32 = low:32[R0] - -00000219: -0000021e: R29 := 0 -00000223: R30 := 0 -00000229: R5 := R0 -00000230: R1 := mem[R31, el]:u64 -00000236: R2 := R31 + 8 -0000023c: R6 := R31 -00000241: R0 := 0x1F000 -00000248: R0 := mem[R0 + 0xFD8, el]:u64 -0000024d: R3 := 0 -00000252: R4 := 0 -00000257: R30 := 0x830 -0000025a: call @__libc_start_main with return %0000025c - -0000025c: -0000025f: R30 := 0x834 -00000262: call @abort with return %000008a2 - -000008a2: -000008a3: call @call_weak_fn with noreturn - -0000086d: sub abort() - - -00000260: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x38, el]:u64 -000006bb: R16 := R16 + 0x38 -000006c0: call R17 with noreturn - -0000086e: sub call_weak_fn(call_weak_fn_result) -000008b4: call_weak_fn_result :: out u32 = low:32[R0] - -00000264: -00000267: R0 := 0x1F000 -0000026e: R0 := mem[R0 + 0xFD0, el]:u64 -00000274: when R0 = 0 goto %00000272 -000008a4: goto %00000512 - -00000272: -0000027a: call R30 with noreturn - -00000512: -00000515: goto @__gmon_start__ - -00000513: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x30, el]:u64 -000006a5: R16 := R16 + 0x30 -000006aa: call R17 with noreturn - -00000870: sub deregister_tm_clones(deregister_tm_clones_result) -000008b5: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000280: -00000283: R0 := 0x20000 -00000289: R0 := R0 + 0x70 -0000028e: R1 := 0x20000 -00000294: R1 := R1 + 0x70 -0000029a: #1 := ~R0 -0000029f: #2 := R1 + ~R0 -000002a5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002ab: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002af: ZF := #2 + 1 = 0 -000002b3: NF := 63:63[#2 + 1] -000002b9: when ZF goto %000002b7 -000008a5: goto %000004f4 - -000004f4: -000004f7: R1 := 0x1F000 -000004fe: R1 := mem[R1 + 0xFC0, el]:u64 -00000503: when R1 = 0 goto %000002b7 -000008a6: goto %00000507 - -000002b7: -000002bf: call R30 with noreturn - -00000507: -0000050b: R16 := R1 -00000510: call R16 with noreturn - -00000873: sub frame_dummy(frame_dummy_result) -000008b6: frame_dummy_result :: out u32 = low:32[R0] - -00000356: -00000358: call @register_tm_clones with noreturn - -00000874: sub free(free_ptr) -000008b7: free_ptr :: in out u64 = R0 - -00000477: -000006da: R16 := 0x20000 -000006e1: R17 := mem[R16 + 0x48, el]:u64 -000006e7: R16 := R16 + 0x48 -000006ec: call R17 with noreturn - -00000875: sub main(main_argc, main_argv, main_result) -000008b8: main_argc :: in u32 = low:32[R0] -000008b9: main_argv :: in out u64 = R1 -000008ba: main_result :: out u32 = low:32[R0] - -0000035a: -0000035e: R31 := R31 - 0x40 -00000364: #4 := R31 + 0x30 -0000036a: mem := mem with [#4, el]:u64 <- R29 -00000370: mem := mem with [#4 + 8, el]:u64 <- R30 -00000376: R29 := R31 + 0x30 -0000037d: mem := mem with [R29 - 8, el]:u64 <- 0 -00000384: mem := mem with [R29 - 0x10, el]:u64 <- 0 -00000389: R0 := 0xB -0000038e: R30 := 0x930 -00000391: call @malloc with return %00000393 - -00000393: -00000396: R8 := 0x20000 -0000039e: mem := mem with [R31 + 0x18, el]:u64 <- R8 -000003a6: mem := mem with [R8 + 0x78, el]:u64 <- R0 -000003ad: R8 := mem[R8 + 0x78, el]:u64 -000003b5: mem := mem with [R31 + 8, el]:u64 <- R8 -000003ba: R0 := 0x20000 -000003c0: R0 := R0 + 0x61 -000003c8: mem := mem with [R31, el]:u64 <- R0 -000003cd: R30 := 0x954 -000003d0: call @strlen with return %000003d2 - -000003d2: -000003d7: R1 := mem[R31, el]:u64 -000003dd: R2 := R0 -000003e4: R0 := mem[R31 + 8, el]:u64 -000003e9: R30 := 0x964 -000003ec: call @memcpy with return %000003ee - -000003ee: -000003f3: R8 := mem[R31 + 0x18, el]:u64 -000003fa: R0 := mem[R8 + 0x78, el]:u64 -000003ff: R30 := 0x970 -00000402: call @puts with return %00000404 - -00000404: -00000409: R8 := mem[R31 + 0x18, el]:u64 -00000410: R9 := mem[R8 + 0x78, el]:u64 -00000416: R9 := R9 + 4 -0000041e: mem := mem with [R29 - 8, el]:u64 <- R9 -00000425: R9 := mem[R29 - 8, el]:u64 -0000042c: mem := mem with [R9] <- 0 -00000433: R9 := mem[R8 + 0x78, el]:u64 -0000043b: mem := mem with [R31 + 0x10, el]:u64 <- R9 -00000442: R0 := mem[R8 + 0x78, el]:u64 -00000447: R30 := 0x998 -00000449: call @strlen with return %0000044b - -0000044b: -0000044f: R2 := R0 -00000456: R0 := mem[R31 + 0x10, el]:u64 -0000045b: R1 := 1 -00000460: R30 := 0x9A8 -00000463: call @memset with return %00000465 - -00000465: -0000046a: R8 := mem[R31 + 0x18, el]:u64 -00000471: R0 := mem[R8 + 0x78, el]:u64 -00000476: R30 := 0x9B4 -00000479: call @free with return %0000047b - -0000047b: -0000047e: R0 := 0 -00000484: #5 := R31 + 0x30 -00000489: R29 := mem[#5, el]:u64 -0000048e: R30 := mem[#5 + 8, el]:u64 -00000494: R31 := R31 + 0x40 -00000499: call R30 with noreturn - -00000876: sub malloc(malloc_size, malloc_result) -000008bb: malloc_size :: in u64 = R0 -000008bc: malloc_result :: out u64 = R0 - -0000038f: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 0x20, el]:u64 -00000679: R16 := R16 + 0x20 -0000067e: call R17 with noreturn - -00000877: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008bd: memcpy_dst :: in out u64 = R0 -000008be: memcpy_src :: in out u64 = R1 -000008bf: memcpy_n :: in u64 = R2 -000008c0: memcpy_result :: out u64 = R0 - -000003ea: -00000614: R16 := 0x20000 -0000061b: R17 := mem[R16, el]:u64 -00000621: R16 := R16 -00000626: call R17 with noreturn - -00000878: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008c1: memset_buf :: in out u64 = R0 -000008c2: memset_c :: in u32 = low:32[R1] -000008c3: memset_n :: in u64 = R2 -000008c4: memset_result :: out u64 = R0 - -00000461: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x28, el]:u64 -0000068f: R16 := R16 + 0x28 -00000694: call R17 with noreturn - -00000879: sub puts(puts_s, puts_result) -000008c5: puts_s :: in u64 = R0 -000008c6: puts_result :: out u32 = low:32[R0] - -00000400: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x40, el]:u64 -000006d1: R16 := R16 + 0x40 -000006d6: call R17 with noreturn - -0000087a: sub register_tm_clones(register_tm_clones_result) -000008c7: register_tm_clones_result :: out u32 = low:32[R0] - -000002c1: -000002c4: R0 := 0x20000 -000002ca: R0 := R0 + 0x70 -000002cf: R1 := 0x20000 -000002d5: R1 := R1 + 0x70 -000002dc: R1 := R1 + ~R0 + 1 -000002e2: R2 := 0.63:63[R1] -000002e9: R1 := R2 + (R1 ~>> 3) -000002ef: R1 := extend:64[63:1[R1]] -000002f5: when R1 = 0 goto %000002f3 -000008a7: goto %000004d6 - -000004d6: -000004d9: R2 := 0x1F000 -000004e0: R2 := mem[R2 + 0xFE0, el]:u64 -000004e5: when R2 = 0 goto %000002f3 -000008a8: goto %000004e9 - -000002f3: -000002fb: call R30 with noreturn - -000004e9: -000004ed: R16 := R2 -000004f2: call R16 with noreturn - -0000087d: sub strlen(strlen_s, strlen_result) -000008c8: strlen_s :: in u64 = R0 -000008c9: strlen_result :: out u64 = R0 - -000003ce: -0000062a: R16 := 0x20000 -00000631: R17 := mem[R16 + 8, el]:u64 -00000637: R16 := R16 + 8 -0000063c: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected deleted file mode 100644 index 8d4ba53d6..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.expected +++ /dev/null @@ -1,824 +0,0 @@ -var {:extern} Gamma_R0: bool; -var {:extern} Gamma_R1: bool; -var {:extern} Gamma_R16: bool; -var {:extern} Gamma_R17: bool; -var {:extern} Gamma_R2: bool; -var {:extern} Gamma_R29: bool; -var {:extern} Gamma_R30: bool; -var {:extern} Gamma_R31: bool; -var {:extern} Gamma_R8: bool; -var {:extern} Gamma_R9: 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} R2: bv64; -var {:extern} R29: bv64; -var {:extern} R30: bv64; -var {:extern} R31: bv64; -var {:extern} R8: bv64; -var {:extern} R9: 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_be(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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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_R29 == old(Gamma_R29)); - free ensures (Gamma_R31 == old(Gamma_R31)); - free ensures (R29 == old(R29)); - free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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 #42: bv64; - var Gamma_#42: bool; - lmain: - assume {:captureState "lmain"} true; - R31, Gamma_R31 := bvsub64(R31, 64bv64), Gamma_R31; - #42, Gamma_#42 := bvadd64(R31, 48bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); - assume {:captureState "%0000039b"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); - assume {:captureState "%000003a0"} true; - R29, Gamma_R29 := bvadd64(R31, 48bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), true); - assume {:captureState "%000003af"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551600bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551600bv64), true); - assume {:captureState "%000003b7"} true; - R0, Gamma_R0 := 11bv64, true; - R30, Gamma_R30 := 2352bv64, true; - call malloc(); - goto l000003c7; - l000003c7: - assume {:captureState "l000003c7"} true; - R8, Gamma_R8 := 131072bv64, true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R8); - assume {:captureState "%000003d3"} true; - call rely(); - assert (L(mem, bvadd64(R8, 120bv64)) ==> Gamma_R0); - mem, Gamma_mem := memory_store64_le(mem, bvadd64(R8, 120bv64), R0), gamma_store64(Gamma_mem, bvadd64(R8, 120bv64), Gamma_R0); - assume {:captureState "%000003db"} true; - call rely(); - R8, Gamma_R8 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 8bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 8bv64), Gamma_R8); - assume {:captureState "%000003eb"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 97bv64), Gamma_R0; - stack, Gamma_stack := memory_store64_le(stack, R31, R0), gamma_store64(Gamma_stack, R31, Gamma_R0); - assume {:captureState "%00000400"} true; - R30, Gamma_R30 := 2388bv64, true; - call strlen(); - goto l0000040a; - l0000040a: - assume {:captureState "l0000040a"} true; - R1, Gamma_R1 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); - R30, Gamma_R30 := 2404bv64, true; - call memcpy(); - goto l0000042a; - l0000042a: - assume {:captureState "l0000042a"} true; - R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R30, Gamma_R30 := 2416bv64, true; - call puts(); - goto l00000442; - l00000442: - assume {:captureState "l00000442"} true; - R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - R9, Gamma_R9 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R9, Gamma_R9 := bvadd64(R9, 4bv64), Gamma_R9; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), R9), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), Gamma_R9); - assume {:captureState "%0000045f"} true; - R9, Gamma_R9 := memory_load64_le(stack, bvadd64(R29, 18446744073709551608bv64)), gamma_load64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64)); - call rely(); - assert (L(mem, R9) ==> true); - mem, Gamma_mem := memory_store8_be(mem, R9, 0bv8), gamma_store8(Gamma_mem, R9, true); - assume {:captureState "%0000046f"} true; - call rely(); - R9, Gamma_R9 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R9), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R9); - assume {:captureState "%0000047f"} true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R30, Gamma_R30 := 2456bv64, true; - call strlen(); - goto l00000490; - l00000490: - assume {:captureState "l00000490"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); - R1, Gamma_R1 := 1bv64, true; - R30, Gamma_R30 := 2472bv64, true; - call memset(); - goto l000004af; - l000004af: - assume {:captureState "l000004af"} true; - R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R30, Gamma_R30 := 2484bv64, true; - call #free(); - goto l000004c7; - l000004c7: - assume {:captureState "l000004c7"} true; - R0, Gamma_R0 := 0bv32, true; - R29, Gamma_R29 := memory_load64_le(stack, bvadd64(R31, 48bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 48bv64)); - R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 56bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 56bv64)); - R31, Gamma_R31 := bvadd64(R31, 64bv64), 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index c187b6cd1..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,145 +0,0 @@ - -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: 00000000000009c4 0 SECTION LOCAL DEFAULT 15 .fini - 16: 00000000000009d8 0 SECTION LOCAL DEFAULT 16 .rodata - 17: 00000000000009dc 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr - 18: 0000000000000a18 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: 0000000000000a2c 0 NOTYPE LOCAL DEFAULT 18 $d - 32: 00000000000009d8 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: 00000000000009c4 0 NOTYPE LOCAL DEFAULT 15 $x - 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 39: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x - 40: 00000000000009d0 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: 0000000000000a40 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: 0000000000000aa0 0 NOTYPE LOCAL DEFAULT 18 $d.4 - 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 62: 0000000000000adc 0 NOTYPE LOCAL DEFAULT 18 $d - 63: 0000000000000adc 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ - 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 65: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 66: 00000000000009dc 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: 00000000000009c4 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: 00000000000009d8 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 176 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/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 index 8388e88b1..480e83629 100644 --- 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 @@ -69,10 +69,10 @@ 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_073, "%00000819"), Attrs([]), +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_074, "%0000081a"), +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"), @@ -89,7 +89,7 @@ PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_557, "%00000615"), (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_075, "%0000081b"), + "__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())]), @@ -120,7 +120,7 @@ UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),Littl 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_047, "%000007ff"), Attrs([]), Int(1,1), +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"), @@ -130,7 +130,7 @@ 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_048, "%00000800"), Attrs([]), +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"), @@ -155,7 +155,7 @@ 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_049, "%00000801"), Attrs([]), Int(1,1), +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]")]), @@ -174,21 +174,21 @@ PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(812, "%0000032c"), (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_076, "%0000081c"), + 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_077, "%0000081d"), Attrs([Attr("c.layout","[signed : 32]"), +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_078, "%0000081e"), Attrs([Attr("c.layout","**[char : 8]"), +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_079, "%0000081f"), Attrs([Attr("c.layout","*[ : 8]"), +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_080, "%00000820"), Attrs([Attr("c.layout","[signed : 32]"), +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"), @@ -204,7 +204,7 @@ 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_081, "%00000821"), + "_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"), @@ -234,7 +234,7 @@ 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_082, "%00000822"), + "_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"), @@ -271,7 +271,7 @@ PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_884, "%0000075c"), (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_083, "%00000823"), Attrs([Attr("c.layout","[signed : 32]"), + 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([]), @@ -308,9 +308,9 @@ 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_054, "%00000806"))))])), -Blk(Tid(2_054, "%00000806"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_055, "%00000807"), Attrs([]), 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([]), @@ -326,7 +326,7 @@ 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_084, "%00000824"), + "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"), @@ -338,7 +338,7 @@ LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(576, "@call_weak_fn"), 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_058, "%0000080a"), Attrs([]), +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"), @@ -360,7 +360,7 @@ PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_623, "%00000657"), (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_085, "%00000825"), + "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())]), @@ -392,7 +392,7 @@ EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(655, "%0000028f"), 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_060, "%0000080c"), Attrs([]), +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"), @@ -402,7 +402,7 @@ 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_061, "%0000080d"), Attrs([]), +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"), @@ -413,7 +413,7 @@ 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_086, "%00000826"), +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"), @@ -422,7 +422,7 @@ 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_087, "%00000827"), +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")]), @@ -437,13 +437,13 @@ 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_088, "%00000828"), +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_089, "%00000829"), +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_090, "%0000082a"), +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"), @@ -587,10 +587,10 @@ PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_094, "%00000446"), (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_091, "%0000082b"), Attrs([Attr("alloc-size","()"), + 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_092, "%0000082c"), +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())]), @@ -607,17 +607,17 @@ PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_579, "%0000062b"), (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_093, "%0000082d"), Attrs([Attr("nonnull","()"), + 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_094, "%0000082e"), +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_095, "%0000082f"), Attrs([Attr("c.layout","[unsigned long : 64]"), +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_096, "%00000830"), Attrs([Attr("c.layout","*[ : 8]"), +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([]), @@ -633,16 +633,16 @@ Var("R16",Imm(64)))]), Jmps([Call(Tid(1_491, "%000005d3"), (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_097, "%00000831"), Attrs([Attr("nonnull","()"), + 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_098, "%00000832"), +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_099, "%00000833"), +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_100, "%00000834"), Attrs([Attr("c.layout","*[ : 8]"), +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([]), @@ -658,10 +658,10 @@ PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_601, "%00000641"), (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_101, "%00000835"), Attrs([Attr("c.layout","*[char : 8]"), + 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_102, "%00000836"), Attrs([Attr("c.layout","[signed : 32]"), +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([]), @@ -677,7 +677,7 @@ PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_667, "%00000683"), (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_103, "%00000837"), + "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())]), @@ -705,7 +705,7 @@ 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_070, "%00000816"), Attrs([]), +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"), @@ -715,7 +715,7 @@ 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_071, "%00000817"), Attrs([]), +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"), @@ -728,10 +728,10 @@ 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_104, "%00000838"), Attrs([Attr("nonnull","()"), + 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_105, "%00000839"), +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"), 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 index fb185bd2b..e9292acea 100644 --- 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 @@ -1,6 +1,6 @@ -00000819: program +00000844: program 000007fd: sub __cxa_finalize(__cxa_finalize_result) -0000081a: __cxa_finalize_result :: out u32 = low:32[R0] +00000845: __cxa_finalize_result :: out u32 = low:32[R0] 0000047f: 00000603: R16 := 0x20000 @@ -9,7 +9,7 @@ 00000615: call R17 with noreturn 000007fe: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000081b: __do_global_dtors_aux_result :: out u32 = low:32[R0] +00000846: __do_global_dtors_aux_result :: out u32 = low:32[R0] 000002db: 000002df: #3 := R31 - 0x20 @@ -21,13 +21,13 @@ 00000302: R19 := 0x20000 00000309: R0 := pad:64[mem[R19 + 0x70]] 0000030f: when 0:0[R0] goto %0000030d -000007ff: goto %00000448 +0000083a: goto %00000448 00000448: 0000044b: R0 := 0x1F000 00000452: R0 := mem[R0 + 0xFC8, el]:u64 00000458: when R0 = 0 goto %00000456 -00000800: goto %0000046f +0000083b: goto %0000046f 0000046f: 00000472: R0 := 0x20000 @@ -42,7 +42,7 @@ 00000462: 00000465: R0 := 1 0000046d: mem := mem with [R19 + 0x70] <- 7:0[R0] -00000801: goto %0000030d +0000083c: goto %0000030d 0000030d: 00000317: R19 := mem[R31 + 0x10, el]:u64 @@ -52,11 +52,11 @@ 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) -0000081c: __libc_start_main_main :: in u64 = R0 -0000081d: __libc_start_main_arg2 :: in u32 = low:32[R1] -0000081e: __libc_start_main_arg3 :: in out u64 = R2 -0000081f: __libc_start_main_auxv :: in out u64 = R3 -00000820: __libc_start_main_result :: out u32 = low:32[R0] +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 @@ -65,7 +65,7 @@ 000005ff: call R17 with noreturn 00000803: sub _fini(_fini_result) -00000821: _fini_result :: out u32 = low:32[R0] +0000084c: _fini_result :: out u32 = low:32[R0] 00000020: 00000026: #0 := R31 - 0x10 @@ -79,7 +79,7 @@ 00000051: call R30 with noreturn 00000804: sub _init(_init_result) -00000822: _init_result :: out u32 = low:32[R0] +0000084d: _init_result :: out u32 = low:32[R0] 00000724: 0000072a: #8 := R31 - 0x10 @@ -97,7 +97,7 @@ 0000075c: call R30 with noreturn 00000805: sub _start(_start_result) -00000823: _start_result :: out u32 = low:32[R0] +0000084e: _start_result :: out u32 = low:32[R0] 000001f5: 000001fa: R29 := 0 @@ -115,10 +115,10 @@ 00000238: 0000023b: R30 := 0x834 -0000023e: call @abort with return %00000806 +0000023e: call @abort with return %0000083d -00000806: -00000807: call @call_weak_fn with noreturn +0000083d: +0000083e: call @call_weak_fn with noreturn 00000808: sub abort() @@ -130,13 +130,13 @@ 0000066d: call R17 with noreturn 00000809: sub call_weak_fn(call_weak_fn_result) -00000824: call_weak_fn_result :: out u32 = low:32[R0] +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 -0000080a: goto %000004bf +0000083f: goto %000004bf 0000024e: 00000256: call R30 with noreturn @@ -151,7 +151,7 @@ 00000657: call R17 with noreturn 0000080b: sub deregister_tm_clones(deregister_tm_clones_result) -00000825: deregister_tm_clones_result :: out u32 = low:32[R0] +00000850: deregister_tm_clones_result :: out u32 = low:32[R0] 0000025c: 0000025f: R0 := 0x20000 @@ -165,13 +165,13 @@ 0000028b: ZF := #2 + 1 = 0 0000028f: NF := 63:63[#2 + 1] 00000295: when ZF goto %00000293 -0000080c: goto %000004a1 +00000840: goto %000004a1 000004a1: 000004a4: R1 := 0x1F000 000004ab: R1 := mem[R1 + 0xFC0, el]:u64 000004b0: when R1 = 0 goto %00000293 -0000080d: goto %000004b4 +00000841: goto %000004b4 00000293: 0000029b: call R30 with noreturn @@ -181,13 +181,13 @@ 000004bd: call R16 with noreturn 0000080e: sub frame_dummy(frame_dummy_result) -00000826: frame_dummy_result :: out u32 = low:32[R0] +00000851: frame_dummy_result :: out u32 = low:32[R0] 00000332: 00000334: call @register_tm_clones with noreturn 0000080f: sub free(free_ptr) -00000827: free_ptr :: in out u64 = R0 +00000852: free_ptr :: in out u64 = R0 00000413: 00000687: R16 := 0x20000 @@ -196,9 +196,9 @@ 00000699: call R17 with noreturn 00000810: sub main(main_argc, main_argv, main_result) -00000828: main_argc :: in u32 = low:32[R0] -00000829: main_argv :: in out u64 = R1 -0000082a: main_result :: out u32 = low:32[R0] +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 @@ -268,8 +268,8 @@ 00000446: call R30 with noreturn 00000811: sub malloc(malloc_size, malloc_result) -0000082b: malloc_size :: in u64 = R0 -0000082c: malloc_result :: out u64 = R0 +00000856: malloc_size :: in u64 = R0 +00000857: malloc_result :: out u64 = R0 00000375: 00000619: R16 := 0x20000 @@ -278,10 +278,10 @@ 0000062b: call R17 with noreturn 00000812: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -0000082d: memcpy_dst :: in out u64 = R0 -0000082e: memcpy_src :: in out u64 = R1 -0000082f: memcpy_n :: in u64 = R2 -00000830: memcpy_result :: out u64 = R0 +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 @@ -290,10 +290,10 @@ 000005d3: call R17 with noreturn 00000813: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000831: memset_buf :: in out u64 = R0 -00000832: memset_c :: in u32 = low:32[R1] -00000833: memset_n :: in u64 = R2 -00000834: memset_result :: out u64 = R0 +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 @@ -302,8 +302,8 @@ 00000641: call R17 with noreturn 00000814: sub puts(puts_s, puts_result) -00000835: puts_s :: in u64 = R0 -00000836: puts_result :: out u32 = low:32[R0] +00000860: puts_s :: in u64 = R0 +00000861: puts_result :: out u32 = low:32[R0] 000003c9: 00000671: R16 := 0x20000 @@ -312,7 +312,7 @@ 00000683: call R17 with noreturn 00000815: sub register_tm_clones(register_tm_clones_result) -00000837: register_tm_clones_result :: out u32 = low:32[R0] +00000862: register_tm_clones_result :: out u32 = low:32[R0] 0000029d: 000002a0: R0 := 0x20000 @@ -324,13 +324,13 @@ 000002c5: R1 := R2 + (R1 ~>> 3) 000002cb: R1 := extend:64[63:1[R1]] 000002d1: when R1 = 0 goto %000002cf -00000816: goto %00000483 +00000842: goto %00000483 00000483: 00000486: R2 := 0x1F000 0000048d: R2 := mem[R2 + 0xFE0, el]:u64 00000492: when R2 = 0 goto %000002cf -00000817: goto %00000496 +00000843: goto %00000496 000002cf: 000002d7: call R30 with noreturn @@ -340,8 +340,8 @@ 0000049f: call R16 with noreturn 00000818: sub strlen(strlen_s, strlen_result) -00000838: strlen_s :: in u64 = R0 -00000839: strlen_result :: out u64 = R0 +00000863: strlen_s :: in u64 = R0 +00000864: strlen_result :: out u64 = R0 000003a1: 000005d7: R16 := 0x20000 diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index 58e85e225..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,767 +0,0 @@ -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 2500 20 2500)\n(code-region 2048 452 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 176)\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 2500 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 2500 20)\n(llvm:code-entry .text 2048 452)\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 2524 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 2784)\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 2524 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 2784)\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 2584 200 2584)\n(llvm:section-entry .eh_frame_hdr 2524 60 2524)\n(llvm:section-entry .rodata 2520 4 2520)\n(llvm:section-entry .fini 2500 20 2500)\n(llvm:section-entry .text 2048 452 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 176 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 2500 0 2500 2500)\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 2784 0)\n(mapped 130488 692 64952)\n(named-region 0 2784 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 452 .text)\n(named-region 2500 20 .fini)\n(named-region 2520 4 .rodata)\n(named-region 2524 60 .eh_frame_hdr)\n(named-region 2584 200 .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 2500 _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 452)\n(section 2500 20)\n(section 2520 4)\n(section 2524 60)\n(section 2584 200)\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 2784 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 176 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 2500 2500)\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad\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\xe0\x0a\x00\x00\x00\x00\x00\x00\xe0\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\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\x09\x00\x00\x00\x00\x00\x00\xdc\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\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\x77\x62\xd4\x19\x46\x52\xb8\x44\xad\xf7\xd2\x88\x8a\x63\x49\x80\x74\x2d\x71\xad"), -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", 0x9C4, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9D8, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9DC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x24\xfe\xff\xff\x50\x00\x00\x00\x74\xfe\xff\xff\x64\x00\x00\x00\xa4\xfe\xff\xff\x78\x00\x00\x00\xe4\xfe\xff\xff\x8c\x00\x00\x00\x34\xff\xff\xff\xb0\x00\x00\x00\x38\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0xA18, "\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\xcc\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x08\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x24\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x50\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\x7c\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\x24\x00\x00\x00\x18\x00\x00\x00\x58\xfe\xff\xff\xb0\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\x98\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\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\xc4\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x9d\xff\xff\x97\x08\x01\x00\x90\xe8\x0f\x00\xf9\x00\x3d\x00\xf9\x08\x3d\x40\xf9\xe8\x07\x00\xf9\x00\x01\x00\x90\x00\x84\x01\x91\xe0\x03\x00\xf9\x88\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x80\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x9d\xff\xff\x97\xe8\x0f\x40\xf9\x09\x3d\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\xa9\x83\x5f\xf8\x3f\x01\x00\x39\x09\x3d\x40\xf9\xe9\x0b\x00\xf9\x00\x3d\x40\xf9\x77\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x83\xff\xff\x97\xe8\x0f\x40\xf9\x00\x3d\x40\xf9\x90\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xADF), Attr("segment","02 0 2784")), -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,0x9C3), Attr("symbol","\"main\"")), -Annotation(Region(0x914,0x9C3), Attr("symbol-info","main 0x914 176")), -Annotation(Region(0x9C4,0x9D7), Attr("section","\".fini\"")), -Annotation(Region(0x9D8,0x9DB), Attr("section","\".rodata\"")), -Annotation(Region(0x9DC,0xA17), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0xA18,0xADF), 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,0x9C3), Attr("section","\".text\"")), -Annotation(Region(0x800,0x9C3), Attr("code-region","()")), -Annotation(Region(0x9C4,0x9D7), Attr("code-region","()"))]), -Program(Tid(2_217, "%000008a9"), Attrs([]), - Subs([Sub(Tid(2_146, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_218, "%000008aa"), - 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_234, "@__cxa_finalize"), - Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), 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_640, "%00000668"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_147, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_219, "%000008ab"), - 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(767, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(771, "%00000303"), - 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(777, "%00000309"), 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(783, "%0000030f"), 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(787, "%00000313"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(793, "%00000319"), - Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(801, "%00000321"), - 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(806, "%00000326"), Attrs([Attr("address","0x8CC"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(813, "%0000032d"), 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(819, "%00000333"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(817, "%00000331"))), -Goto(Tid(2_207, "%0000089f"), Attrs([]), Int(1,1), -Direct(Tid(1_179, "%0000049b")))])), Blk(Tid(1_179, "%0000049b"), - Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x8D8"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_189, "%000004a5"), 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_195, "%000004ab"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_193, "%000004a9"))), Goto(Tid(2_208, "%000008a0"), Attrs([]), - Int(1,1), Direct(Tid(1_218, "%000004c2")))])), Blk(Tid(1_218, "%000004c2"), - Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x8E4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_228, "%000004cc"), 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_233, "%000004d1"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_236, "%000004d4"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_146, "@__cxa_finalize")),Direct(Tid(1_193, "%000004a9"))))])), -Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_201, "%000004b1"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_203, "%000004b3"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_160, "@deregister_tm_clones")),Direct(Tid(1_205, "%000004b5"))))])), -Blk(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_208, "%000004b8"), Attrs([Attr("address","0x8F4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_216, "%000004c0"), 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_209, "%000008a1"), Attrs([]), Int(1,1), -Direct(Tid(817, "%00000331")))])), Blk(Tid(817, "%00000331"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(827, "%0000033b"), - 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(834, "%00000342"), 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(839, "%00000347"), 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(843, "%0000034b"), 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(848, "%00000350"), - Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_151, "@__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_220, "%000008ac"), - 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_221, "%000008ad"), 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_222, "%000008ae"), 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_223, "%000008af"), 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_224, "%000008b0"), 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(600, "@__libc_start_main"), - Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_600, "%00000640"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_607, "%00000647"), 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_613, "%0000064d"), 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_618, "%00000652"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_152, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9C4")]), - "_fini", Args([Arg(Tid(2_225, "%000008b1"), - 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","0x9C4")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0x9C8"), -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","0x9C8"), -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","0x9C8"), -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","0x9C8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9CC"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9D0"), -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","0x9D0"), -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","0x9D0"), -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","0x9D4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_153, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), - "_init", Args([Arg(Tid(2_226, "%000008b2"), - 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_920, "@_init"), - Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(1_926, "%00000786"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_932, "%0000078c"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_938, "%00000792"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_942, "%00000796"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#7",Imm(64))), Def(Tid(1_948, "%0000079c"), - Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_953, "%000007a1"), - Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), - Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_955, "%000007a3"), - Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), -(Direct(Tid(2_158, "@call_weak_fn")),Direct(Tid(1_957, "%000007a5"))))])), -Blk(Tid(1_957, "%000007a5"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(1_962, "%000007aa"), 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_967, "%000007af"), 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_971, "%000007b3"), 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_976, "%000007b8"), - Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_154, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), -Attr("stub","()"), Attr("entry-point","()")]), "_start", - Args([Arg(Tid(2_227, "%000008b3"), 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(537, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(542, "%0000021e"), Attrs([Attr("address","0x804"), -Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), -Def(Tid(547, "%00000223"), Attrs([Attr("address","0x808"), -Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(553, "%00000229"), Attrs([Attr("address","0x80C"), -Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), -Def(Tid(560, "%00000230"), 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(566, "%00000236"), Attrs([Attr("address","0x814"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(572, "%0000023c"), - Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(577, "%00000241"), - Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(584, "%00000248"), - 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(589, "%0000024d"), Attrs([Attr("address","0x824"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(594, "%00000252"), Attrs([Attr("address","0x828"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(599, "%00000257"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(602, "%0000025a"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_151, "@__libc_start_main")),Direct(Tid(604, "%0000025c"))))])), -Blk(Tid(604, "%0000025c"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(610, "%00000262"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_157, "@abort")),Direct(Tid(2_210, "%000008a2"))))])), -Blk(Tid(2_210, "%000008a2"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_211, "%000008a3"), Attrs([]), Int(1,1), -(Direct(Tid(2_158, "@call_weak_fn")),))]))])), Sub(Tid(2_157, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(608, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x7D0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), - Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_158, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), - "call_weak_fn", Args([Arg(Tid(2_228, "%000008b4"), - 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(612, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(615, "%00000267"), - Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(622, "%0000026e"), - 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(628, "%00000274"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(626, "%00000272"))), Goto(Tid(2_212, "%000008a4"), Attrs([]), - Int(1,1), Direct(Tid(1_298, "%00000512")))])), Blk(Tid(626, "%00000272"), - Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x844"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_298, "%00000512"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_301, "%00000515"), Attrs([Attr("address","0x840"), -Attr("insn","b #-0x80")]), Int(1,1), -Direct(Tid(1_299, "@__gmon_start__")))])), Blk(Tid(1_299, "@__gmon_start__"), - Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x7C0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), - Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_160, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_229, "%000008b5"), - 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(640, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(643, "%00000283"), - Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(649, "%00000289"), - Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(654, "%0000028e"), Attrs([Attr("address","0x858"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(660, "%00000294"), Attrs([Attr("address","0x85C"), -Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(666, "%0000029a"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(671, "%0000029f"), - 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(677, "%000002a5"), 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(683, "%000002ab"), 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(687, "%000002af"), 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(691, "%000002b3"), - 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(697, "%000002b9"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(695, "%000002b7"))), Goto(Tid(2_213, "%000008a5"), Attrs([]), - Int(1,1), Direct(Tid(1_268, "%000004f4")))])), Blk(Tid(1_268, "%000004f4"), - Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x868"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_278, "%000004fe"), 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_283, "%00000503"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(695, "%000002b7"))), Goto(Tid(2_214, "%000008a6"), Attrs([]), - Int(1,1), Direct(Tid(1_287, "%00000507")))])), Blk(Tid(695, "%000002b7"), - Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(703, "%000002bf"), Attrs([Attr("address","0x87C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_287, "%00000507"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x874"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_296, "%00000510"), Attrs([Attr("address","0x878"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_163, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_230, "%000008b6"), - 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(854, "@frame_dummy"), - Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(856, "%00000358"), Attrs([Attr("address","0x910"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_170, "@register_tm_clones")),))]))])), Sub(Tid(2_164, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_231, "%000008b7"), - 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_143, "@free"), Attrs([Attr("address","0x7F0")]), - Phis([]), Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x7F0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_761, "%000006e1"), 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_767, "%000006e7"), 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_772, "%000006ec"), - Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_165, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_232, "%000008b8"), - 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_233, "%000008b9"), - 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_234, "%000008ba"), - 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(858, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(862, "%0000035e"), - Attrs([Attr("address","0x914"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), -Def(Tid(868, "%00000364"), Attrs([Attr("address","0x918"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(874, "%0000036a"), - Attrs([Attr("address","0x918"), 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(880, "%00000370"), Attrs([Attr("address","0x918"), -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(886, "%00000376"), Attrs([Attr("address","0x91C"), -Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(893, "%0000037d"), - Attrs([Attr("address","0x920"), Attr("insn","stur xzr, [x29, #-0x8]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(900, "%00000384"), Attrs([Attr("address","0x924"), -Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(905, "%00000389"), Attrs([Attr("address","0x928"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(913, "%00000391"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_166, "@malloc")),Direct(Tid(915, "%00000393"))))])), -Blk(Tid(915, "%00000393"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(918, "%00000396"), Attrs([Attr("address","0x930"), -Attr("insn","adrp x8, #0x20000")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(926, "%0000039e"), Attrs([Attr("address","0x934"), -Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(934, "%000003a6"), Attrs([Attr("address","0x938"), -Attr("insn","str x0, [x8, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x93C"), -Attr("insn","ldr x8, [x8, #0x78]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x940"), -Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x944"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x948"), -Attr("insn","add x0, x0, #0x61")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(97,64))), Def(Tid(968, "%000003c8"), - Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(973, "%000003cd"), Attrs([Attr("address","0x950"), -Attr("insn","bl #-0x1e0")]), Var("R30",Imm(64)), Int(2388,64))]), -Jmps([Call(Tid(976, "%000003d0"), Attrs([Attr("address","0x950"), -Attr("insn","bl #-0x1e0")]), Int(1,1), -(Direct(Tid(2_173, "@strlen")),Direct(Tid(978, "%000003d2"))))])), -Blk(Tid(978, "%000003d2"), Attrs([Attr("address","0x954")]), Phis([]), -Defs([Def(Tid(983, "%000003d7"), Attrs([Attr("address","0x954"), -Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x958"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(996, "%000003e4"), Attrs([Attr("address","0x95C"), -Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), -Jmps([Call(Tid(1_004, "%000003ec"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_167, "@memcpy")),Direct(Tid(1_006, "%000003ee"))))])), -Blk(Tid(1_006, "%000003ee"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x964"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_018, "%000003fa"), Attrs([Attr("address","0x968"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x96C"), -Attr("insn","bl #-0x18c")]), Var("R30",Imm(64)), Int(2416,64))]), -Jmps([Call(Tid(1_026, "%00000402"), Attrs([Attr("address","0x96C"), -Attr("insn","bl #-0x18c")]), Int(1,1), -(Direct(Tid(2_169, "@puts")),Direct(Tid(1_028, "%00000404"))))])), -Blk(Tid(1_028, "%00000404"), Attrs([Attr("address","0x970")]), Phis([]), -Defs([Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x970"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x974"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x978"), -Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_054, "%0000041e"), - Attrs([Attr("address","0x97C"), Attr("insn","stur x9, [x29, #-0x8]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x980"), -Attr("insn","ldur x9, [x29, #-0x8]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), -Def(Tid(1_068, "%0000042c"), Attrs([Attr("address","0x984"), -Attr("insn","strb wzr, [x9]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),LittleEndian(),8)), -Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x988"), -Attr("insn","ldr x9, [x8, #0x78]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x98C"), -Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_090, "%00000442"), Attrs([Attr("address","0x990"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_095, "%00000447"), Attrs([Attr("address","0x994"), -Attr("insn","bl #-0x224")]), Var("R30",Imm(64)), Int(2456,64))]), -Jmps([Call(Tid(1_097, "%00000449"), Attrs([Attr("address","0x994"), -Attr("insn","bl #-0x224")]), Int(1,1), -(Direct(Tid(2_173, "@strlen")),Direct(Tid(1_099, "%0000044b"))))])), -Blk(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x998")]), Phis([]), -Defs([Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x998"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_110, "%00000456"), Attrs([Attr("address","0x99C"), -Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x9A0"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_120, "%00000460"), Attrs([Attr("address","0x9A4"), -Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2472,64))]), -Jmps([Call(Tid(1_123, "%00000463"), Attrs([Attr("address","0x9A4"), -Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_168, "@memset")),Direct(Tid(1_125, "%00000465"))))])), -Blk(Tid(1_125, "%00000465"), Attrs([Attr("address","0x9A8")]), Phis([]), -Defs([Def(Tid(1_130, "%0000046a"), Attrs([Attr("address","0x9A8"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_137, "%00000471"), Attrs([Attr("address","0x9AC"), -Attr("insn","ldr x0, [x8, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_142, "%00000476"), Attrs([Attr("address","0x9B0"), -Attr("insn","bl #-0x1c0")]), Var("R30",Imm(64)), Int(2484,64))]), -Jmps([Call(Tid(1_145, "%00000479"), Attrs([Attr("address","0x9B0"), -Attr("insn","bl #-0x1c0")]), Int(1,1), -(Direct(Tid(2_164, "@free")),Direct(Tid(1_147, "%0000047b"))))])), -Blk(Tid(1_147, "%0000047b"), Attrs([Attr("address","0x9B4")]), Phis([]), -Defs([Def(Tid(1_150, "%0000047e"), Attrs([Attr("address","0x9B4"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x9B8"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_161, "%00000489"), - Attrs([Attr("address","0x9B8"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), - Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), -Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x9B8"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_172, "%00000494"), Attrs([Attr("address","0x9BC"), -Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_177, "%00000499"), - Attrs([Attr("address","0x9C0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_166, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_235, "%000008bb"), 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_236, "%000008bc"), - 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(911, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_167, "@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_237, "%000008bd"), 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_238, "%000008be"), - 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_239, "%000008bf"), 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_240, "%000008c0"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_002, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_556, "%00000614"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_563, "%0000061b"), 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_569, "%00000621"), Attrs([Attr("address","0x768"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_574, "%00000626"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_168, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x7B0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_241, "%000008c1"), 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_242, "%000008c2"), - 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_243, "%000008c3"), - 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_244, "%000008c4"), 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_121, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x7B0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_169, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x7E0"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_245, "%000008c5"), 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_246, "%000008c6"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_024, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x7E0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), - Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_170, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_247, "%000008c7"), - 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(705, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(708, "%000002c4"), Attrs([Attr("address","0x880"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(714, "%000002ca"), Attrs([Attr("address","0x884"), -Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(719, "%000002cf"), - Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(725, "%000002d5"), - Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(732, "%000002dc"), 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(738, "%000002e2"), 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(745, "%000002e9"), 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(751, "%000002ef"), 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(757, "%000002f5"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(755, "%000002f3"))), Goto(Tid(2_215, "%000008a7"), Attrs([]), - Int(1,1), Direct(Tid(1_238, "%000004d6")))])), Blk(Tid(1_238, "%000004d6"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_248, "%000004e0"), 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_253, "%000004e5"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(755, "%000002f3"))), Goto(Tid(2_216, "%000008a8"), Attrs([]), - Int(1,1), Direct(Tid(1_257, "%000004e9")))])), Blk(Tid(755, "%000002f3"), - Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(763, "%000002fb"), Attrs([Attr("address","0x8B8"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8B0"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8B4"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_173, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_248, "%000008c8"), 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_249, "%000008c9"), - 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(974, "@strlen"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_578, "%0000062a"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_585, "%00000631"), 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_591, "%00000637"), 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_596, "%0000063c"), - 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index 6b5f3b499..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,354 +0,0 @@ -000008a9: program -00000862: sub __cxa_finalize(__cxa_finalize_result) -000008aa: __cxa_finalize_result :: out u32 = low:32[R0] - -000004d2: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16 + 0x18, el]:u64 -00000663: R16 := R16 + 0x18 -00000668: call R17 with noreturn - -00000863: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -000008ab: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -000002ff: -00000303: #3 := R31 - 0x20 -00000309: mem := mem with [#3, el]:u64 <- R29 -0000030f: mem := mem with [#3 + 8, el]:u64 <- R30 -00000313: R31 := #3 -00000319: R29 := R31 -00000321: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000326: R19 := 0x20000 -0000032d: R0 := pad:64[mem[R19 + 0x70]] -00000333: when 0:0[R0] goto %00000331 -0000089f: goto %0000049b - -0000049b: -0000049e: R0 := 0x1F000 -000004a5: R0 := mem[R0 + 0xFC8, el]:u64 -000004ab: when R0 = 0 goto %000004a9 -000008a0: goto %000004c2 - -000004c2: -000004c5: R0 := 0x20000 -000004cc: R0 := mem[R0 + 0x58, el]:u64 -000004d1: R30 := 0x8F0 -000004d4: call @__cxa_finalize with return %000004a9 - -000004a9: -000004b1: R30 := 0x8F4 -000004b3: call @deregister_tm_clones with return %000004b5 - -000004b5: -000004b8: R0 := 1 -000004c0: mem := mem with [R19 + 0x70] <- 7:0[R0] -000008a1: goto %00000331 - -00000331: -0000033b: R19 := mem[R31 + 0x10, el]:u64 -00000342: R29 := mem[R31, el]:u64 -00000347: R30 := mem[R31 + 8, el]:u64 -0000034b: R31 := R31 + 0x20 -00000350: call R30 with noreturn - -00000867: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -000008ac: __libc_start_main_main :: in u64 = R0 -000008ad: __libc_start_main_arg2 :: in u32 = low:32[R1] -000008ae: __libc_start_main_arg3 :: in out u64 = R2 -000008af: __libc_start_main_auxv :: in out u64 = R3 -000008b0: __libc_start_main_result :: out u32 = low:32[R0] - -00000258: -00000640: R16 := 0x20000 -00000647: R17 := mem[R16 + 0x10, el]:u64 -0000064d: R16 := R16 + 0x10 -00000652: call R17 with noreturn - -00000868: sub _fini(_fini_result) -000008b1: _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 - -00000869: sub _init(_init_result) -000008b2: _init_result :: out u32 = low:32[R0] - -00000780: -00000786: #7 := R31 - 0x10 -0000078c: mem := mem with [#7, el]:u64 <- R29 -00000792: mem := mem with [#7 + 8, el]:u64 <- R30 -00000796: R31 := #7 -0000079c: R29 := R31 -000007a1: R30 := 0x738 -000007a3: call @call_weak_fn with return %000007a5 - -000007a5: -000007aa: R29 := mem[R31, el]:u64 -000007af: R30 := mem[R31 + 8, el]:u64 -000007b3: R31 := R31 + 0x10 -000007b8: call R30 with noreturn - -0000086a: sub _start(_start_result) -000008b3: _start_result :: out u32 = low:32[R0] - -00000219: -0000021e: R29 := 0 -00000223: R30 := 0 -00000229: R5 := R0 -00000230: R1 := mem[R31, el]:u64 -00000236: R2 := R31 + 8 -0000023c: R6 := R31 -00000241: R0 := 0x1F000 -00000248: R0 := mem[R0 + 0xFD8, el]:u64 -0000024d: R3 := 0 -00000252: R4 := 0 -00000257: R30 := 0x830 -0000025a: call @__libc_start_main with return %0000025c - -0000025c: -0000025f: R30 := 0x834 -00000262: call @abort with return %000008a2 - -000008a2: -000008a3: call @call_weak_fn with noreturn - -0000086d: sub abort() - - -00000260: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x38, el]:u64 -000006bb: R16 := R16 + 0x38 -000006c0: call R17 with noreturn - -0000086e: sub call_weak_fn(call_weak_fn_result) -000008b4: call_weak_fn_result :: out u32 = low:32[R0] - -00000264: -00000267: R0 := 0x1F000 -0000026e: R0 := mem[R0 + 0xFD0, el]:u64 -00000274: when R0 = 0 goto %00000272 -000008a4: goto %00000512 - -00000272: -0000027a: call R30 with noreturn - -00000512: -00000515: goto @__gmon_start__ - -00000513: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x30, el]:u64 -000006a5: R16 := R16 + 0x30 -000006aa: call R17 with noreturn - -00000870: sub deregister_tm_clones(deregister_tm_clones_result) -000008b5: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000280: -00000283: R0 := 0x20000 -00000289: R0 := R0 + 0x70 -0000028e: R1 := 0x20000 -00000294: R1 := R1 + 0x70 -0000029a: #1 := ~R0 -0000029f: #2 := R1 + ~R0 -000002a5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002ab: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002af: ZF := #2 + 1 = 0 -000002b3: NF := 63:63[#2 + 1] -000002b9: when ZF goto %000002b7 -000008a5: goto %000004f4 - -000004f4: -000004f7: R1 := 0x1F000 -000004fe: R1 := mem[R1 + 0xFC0, el]:u64 -00000503: when R1 = 0 goto %000002b7 -000008a6: goto %00000507 - -000002b7: -000002bf: call R30 with noreturn - -00000507: -0000050b: R16 := R1 -00000510: call R16 with noreturn - -00000873: sub frame_dummy(frame_dummy_result) -000008b6: frame_dummy_result :: out u32 = low:32[R0] - -00000356: -00000358: call @register_tm_clones with noreturn - -00000874: sub free(free_ptr) -000008b7: free_ptr :: in out u64 = R0 - -00000477: -000006da: R16 := 0x20000 -000006e1: R17 := mem[R16 + 0x48, el]:u64 -000006e7: R16 := R16 + 0x48 -000006ec: call R17 with noreturn - -00000875: sub main(main_argc, main_argv, main_result) -000008b8: main_argc :: in u32 = low:32[R0] -000008b9: main_argv :: in out u64 = R1 -000008ba: main_result :: out u32 = low:32[R0] - -0000035a: -0000035e: R31 := R31 - 0x40 -00000364: #4 := R31 + 0x30 -0000036a: mem := mem with [#4, el]:u64 <- R29 -00000370: mem := mem with [#4 + 8, el]:u64 <- R30 -00000376: R29 := R31 + 0x30 -0000037d: mem := mem with [R29 - 8, el]:u64 <- 0 -00000384: mem := mem with [R29 - 0x10, el]:u64 <- 0 -00000389: R0 := 0xB -0000038e: R30 := 0x930 -00000391: call @malloc with return %00000393 - -00000393: -00000396: R8 := 0x20000 -0000039e: mem := mem with [R31 + 0x18, el]:u64 <- R8 -000003a6: mem := mem with [R8 + 0x78, el]:u64 <- R0 -000003ad: R8 := mem[R8 + 0x78, el]:u64 -000003b5: mem := mem with [R31 + 8, el]:u64 <- R8 -000003ba: R0 := 0x20000 -000003c0: R0 := R0 + 0x61 -000003c8: mem := mem with [R31, el]:u64 <- R0 -000003cd: R30 := 0x954 -000003d0: call @strlen with return %000003d2 - -000003d2: -000003d7: R1 := mem[R31, el]:u64 -000003dd: R2 := R0 -000003e4: R0 := mem[R31 + 8, el]:u64 -000003e9: R30 := 0x964 -000003ec: call @memcpy with return %000003ee - -000003ee: -000003f3: R8 := mem[R31 + 0x18, el]:u64 -000003fa: R0 := mem[R8 + 0x78, el]:u64 -000003ff: R30 := 0x970 -00000402: call @puts with return %00000404 - -00000404: -00000409: R8 := mem[R31 + 0x18, el]:u64 -00000410: R9 := mem[R8 + 0x78, el]:u64 -00000416: R9 := R9 + 4 -0000041e: mem := mem with [R29 - 8, el]:u64 <- R9 -00000425: R9 := mem[R29 - 8, el]:u64 -0000042c: mem := mem with [R9] <- 0 -00000433: R9 := mem[R8 + 0x78, el]:u64 -0000043b: mem := mem with [R31 + 0x10, el]:u64 <- R9 -00000442: R0 := mem[R8 + 0x78, el]:u64 -00000447: R30 := 0x998 -00000449: call @strlen with return %0000044b - -0000044b: -0000044f: R2 := R0 -00000456: R0 := mem[R31 + 0x10, el]:u64 -0000045b: R1 := 1 -00000460: R30 := 0x9A8 -00000463: call @memset with return %00000465 - -00000465: -0000046a: R8 := mem[R31 + 0x18, el]:u64 -00000471: R0 := mem[R8 + 0x78, el]:u64 -00000476: R30 := 0x9B4 -00000479: call @free with return %0000047b - -0000047b: -0000047e: R0 := 0 -00000484: #5 := R31 + 0x30 -00000489: R29 := mem[#5, el]:u64 -0000048e: R30 := mem[#5 + 8, el]:u64 -00000494: R31 := R31 + 0x40 -00000499: call R30 with noreturn - -00000876: sub malloc(malloc_size, malloc_result) -000008bb: malloc_size :: in u64 = R0 -000008bc: malloc_result :: out u64 = R0 - -0000038f: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 0x20, el]:u64 -00000679: R16 := R16 + 0x20 -0000067e: call R17 with noreturn - -00000877: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -000008bd: memcpy_dst :: in out u64 = R0 -000008be: memcpy_src :: in out u64 = R1 -000008bf: memcpy_n :: in u64 = R2 -000008c0: memcpy_result :: out u64 = R0 - -000003ea: -00000614: R16 := 0x20000 -0000061b: R17 := mem[R16, el]:u64 -00000621: R16 := R16 -00000626: call R17 with noreturn - -00000878: sub memset(memset_buf, memset_c, memset_n, memset_result) -000008c1: memset_buf :: in out u64 = R0 -000008c2: memset_c :: in u32 = low:32[R1] -000008c3: memset_n :: in u64 = R2 -000008c4: memset_result :: out u64 = R0 - -00000461: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x28, el]:u64 -0000068f: R16 := R16 + 0x28 -00000694: call R17 with noreturn - -00000879: sub puts(puts_s, puts_result) -000008c5: puts_s :: in u64 = R0 -000008c6: puts_result :: out u32 = low:32[R0] - -00000400: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x40, el]:u64 -000006d1: R16 := R16 + 0x40 -000006d6: call R17 with noreturn - -0000087a: sub register_tm_clones(register_tm_clones_result) -000008c7: register_tm_clones_result :: out u32 = low:32[R0] - -000002c1: -000002c4: R0 := 0x20000 -000002ca: R0 := R0 + 0x70 -000002cf: R1 := 0x20000 -000002d5: R1 := R1 + 0x70 -000002dc: R1 := R1 + ~R0 + 1 -000002e2: R2 := 0.63:63[R1] -000002e9: R1 := R2 + (R1 ~>> 3) -000002ef: R1 := extend:64[63:1[R1]] -000002f5: when R1 = 0 goto %000002f3 -000008a7: goto %000004d6 - -000004d6: -000004d9: R2 := 0x1F000 -000004e0: R2 := mem[R2 + 0xFE0, el]:u64 -000004e5: when R2 = 0 goto %000002f3 -000008a8: goto %000004e9 - -000002f3: -000002fb: call R30 with noreturn - -000004e9: -000004ed: R16 := R2 -000004f2: call R16 with noreturn - -0000087d: sub strlen(strlen_s, strlen_result) -000008c8: strlen_s :: in u64 = R0 -000008c9: strlen_result :: out u64 = R0 - -000003ce: -0000062a: R16 := 0x20000 -00000631: R17 := mem[R16 + 8, el]:u64 -00000637: R16 := R16 + 8 -0000063c: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected deleted file mode 100644 index 8d4ba53d6..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected +++ /dev/null @@ -1,824 +0,0 @@ -var {:extern} Gamma_R0: bool; -var {:extern} Gamma_R1: bool; -var {:extern} Gamma_R16: bool; -var {:extern} Gamma_R17: bool; -var {:extern} Gamma_R2: bool; -var {:extern} Gamma_R29: bool; -var {:extern} Gamma_R30: bool; -var {:extern} Gamma_R31: bool; -var {:extern} Gamma_R8: bool; -var {:extern} Gamma_R9: 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} R2: bv64; -var {:extern} R29: bv64; -var {:extern} R30: bv64; -var {:extern} R31: bv64; -var {:extern} R8: bv64; -var {:extern} R9: 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_be(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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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_R29 == old(Gamma_R29)); - free ensures (Gamma_R31 == old(Gamma_R31)); - free ensures (R29 == old(R29)); - free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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 #42: bv64; - var Gamma_#42: bool; - lmain: - assume {:captureState "lmain"} true; - R31, Gamma_R31 := bvsub64(R31, 64bv64), Gamma_R31; - #42, Gamma_#42 := bvadd64(R31, 48bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); - assume {:captureState "%0000039b"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); - assume {:captureState "%000003a0"} true; - R29, Gamma_R29 := bvadd64(R31, 48bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), true); - assume {:captureState "%000003af"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551600bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551600bv64), true); - assume {:captureState "%000003b7"} true; - R0, Gamma_R0 := 11bv64, true; - R30, Gamma_R30 := 2352bv64, true; - call malloc(); - goto l000003c7; - l000003c7: - assume {:captureState "l000003c7"} true; - R8, Gamma_R8 := 131072bv64, true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R8); - assume {:captureState "%000003d3"} true; - call rely(); - assert (L(mem, bvadd64(R8, 120bv64)) ==> Gamma_R0); - mem, Gamma_mem := memory_store64_le(mem, bvadd64(R8, 120bv64), R0), gamma_store64(Gamma_mem, bvadd64(R8, 120bv64), Gamma_R0); - assume {:captureState "%000003db"} true; - call rely(); - R8, Gamma_R8 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 8bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 8bv64), Gamma_R8); - assume {:captureState "%000003eb"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 97bv64), Gamma_R0; - stack, Gamma_stack := memory_store64_le(stack, R31, R0), gamma_store64(Gamma_stack, R31, Gamma_R0); - assume {:captureState "%00000400"} true; - R30, Gamma_R30 := 2388bv64, true; - call strlen(); - goto l0000040a; - l0000040a: - assume {:captureState "l0000040a"} true; - R1, Gamma_R1 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); - R30, Gamma_R30 := 2404bv64, true; - call memcpy(); - goto l0000042a; - l0000042a: - assume {:captureState "l0000042a"} true; - R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R30, Gamma_R30 := 2416bv64, true; - call puts(); - goto l00000442; - l00000442: - assume {:captureState "l00000442"} true; - R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - R9, Gamma_R9 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R9, Gamma_R9 := bvadd64(R9, 4bv64), Gamma_R9; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), R9), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), Gamma_R9); - assume {:captureState "%0000045f"} true; - R9, Gamma_R9 := memory_load64_le(stack, bvadd64(R29, 18446744073709551608bv64)), gamma_load64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64)); - call rely(); - assert (L(mem, R9) ==> true); - mem, Gamma_mem := memory_store8_be(mem, R9, 0bv8), gamma_store8(Gamma_mem, R9, true); - assume {:captureState "%0000046f"} true; - call rely(); - R9, Gamma_R9 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R9), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R9); - assume {:captureState "%0000047f"} true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R30, Gamma_R30 := 2456bv64, true; - call strlen(); - goto l00000490; - l00000490: - assume {:captureState "l00000490"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); - R1, Gamma_R1 := 1bv64, true; - R30, Gamma_R30 := 2472bv64, true; - call memset(); - goto l000004af; - l000004af: - assume {:captureState "l000004af"} true; - R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R8, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 120bv64)) || L(mem, bvadd64(R8, 120bv64))); - R30, Gamma_R30 := 2484bv64, true; - call #free(); - goto l000004c7; - l000004c7: - assume {:captureState "l000004c7"} true; - R0, Gamma_R0 := 0bv32, true; - R29, Gamma_R29 := memory_load64_le(stack, bvadd64(R31, 48bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 48bv64)); - R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 56bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 56bv64)); - R31, Gamma_R31 := bvadd64(R31, 64bv64), 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free requires (memory_load8_le(mem, 2521bv64) == 0bv8); - free requires (memory_load8_le(mem, 2522bv64) == 2bv8); - free requires (memory_load8_le(mem, 2523bv64) == 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, 2520bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2521bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2522bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2523bv64) == 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index c187b6cd1..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,145 +0,0 @@ - -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: 00000000000009c4 0 SECTION LOCAL DEFAULT 15 .fini - 16: 00000000000009d8 0 SECTION LOCAL DEFAULT 16 .rodata - 17: 00000000000009dc 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr - 18: 0000000000000a18 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: 0000000000000a2c 0 NOTYPE LOCAL DEFAULT 18 $d - 32: 00000000000009d8 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: 00000000000009c4 0 NOTYPE LOCAL DEFAULT 15 $x - 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 39: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x - 40: 00000000000009d0 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: 0000000000000a40 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: 0000000000000aa0 0 NOTYPE LOCAL DEFAULT 18 $d.4 - 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 62: 0000000000000adc 0 NOTYPE LOCAL DEFAULT 18 $d - 63: 0000000000000adc 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ - 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 65: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 66: 00000000000009dc 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: 00000000000009c4 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: 00000000000009d8 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 176 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/clang_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index 655fa3e13..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,773 +0,0 @@ -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 2572 20 2572)\n(code-region 2112 460 2112)\n(code-region 1904 192 1904)\n(code-region 1880 24 1880)\n(code-start 2164)\n(code-start 2112)\n(code-start 2388)\n(entry-point 2112)\n(external-reference 130992 _ITM_deregisterTMCloneTable)\n(external-reference 131000 __cxa_finalize)\n(external-reference 131008 __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 1880 0)\n(llvm:code-entry main 2388 184)\n(llvm:code-entry _start 2112 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 2572 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 2384 0)\n(llvm:code-entry __do_global_dtors_aux 2304 0)\n(llvm:code-entry register_tm_clones 2240 0)\n(llvm:code-entry deregister_tm_clones 2192 0)\n(llvm:code-entry call_weak_fn 2164 20)\n(llvm:code-entry .fini 2572 20)\n(llvm:code-entry .text 2112 460)\n(llvm:code-entry .plt 1904 192)\n(llvm:code-entry .init 1880 24)\n(llvm:elf-program-header 08 64936 600)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2596 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64952 496)\n(llvm:elf-program-header 03 64936 708)\n(llvm:elf-program-header 02 0 2856)\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 2596 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130488 496)\n(llvm:elf-virtual-program-header 03 130472 728)\n(llvm:elf-virtual-program-header 02 0 2856)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 2112)\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 131008 __gmon_start__)\n(llvm:name-reference 131000 __cxa_finalize)\n(llvm:name-reference 130992 _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 130984 64 65448)\n(llvm:section-entry .dynamic 130488 496 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 2656 200 2656)\n(llvm:section-entry .eh_frame_hdr 2596 60 2596)\n(llvm:section-entry .rodata 2592 4 2592)\n(llvm:section-entry .fini 2572 20 2572)\n(llvm:section-entry .text 2112 460 2112)\n(llvm:section-entry .plt 1904 192 1904)\n(llvm:section-entry .init 1880 24 1880)\n(llvm:section-entry .rela.plt 1640 240 1640)\n(llvm:section-entry .rela.dyn 1400 240 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 1880 0 1880 1880)\n(llvm:symbol-entry main 2388 184 2388 2388)\n(llvm:symbol-entry _start 2112 52 2112 2112)\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 2572 0 2572 2572)\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 2384 0 2384 2384)\n(llvm:symbol-entry __do_global_dtors_aux 2304 0 2304 2304)\n(llvm:symbol-entry register_tm_clones 2240 0 2240 2240)\n(llvm:symbol-entry deregister_tm_clones 2192 0 2192 2192)\n(llvm:symbol-entry call_weak_fn 2164 20 2164 2164)\n(mapped 0 2856 0)\n(mapped 130472 708 64936)\n(named-region 0 2856 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 179 .dynstr)\n(named-region 1316 30 .gnu.version)\n(named-region 1352 48 .gnu.version_r)\n(named-region 1400 240 .rela.dyn)\n(named-region 1640 240 .rela.plt)\n(named-region 1880 24 .init)\n(named-region 1904 192 .plt)\n(named-region 2112 460 .text)\n(named-region 2572 20 .fini)\n(named-region 2592 4 .rodata)\n(named-region 2596 60 .eh_frame_hdr)\n(named-region 2656 200 .eh_frame)\n(named-region 130472 8 .init_array)\n(named-region 130480 8 .fini_array)\n(named-region 130488 496 .dynamic)\n(named-region 130984 64 .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 2164 call_weak_fn)\n(named-symbol 2192 deregister_tm_clones)\n(named-symbol 2240 register_tm_clones)\n(named-symbol 2304 __do_global_dtors_aux)\n(named-symbol 2384 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 2572 _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 2112 _start)\n(named-symbol 2388 main)\n(named-symbol 1880 _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 240)\n(section 1640 240)\n(section 1880 24)\n(section 1904 192)\n(section 2112 460)\n(section 2572 20)\n(section 2592 4)\n(section 2596 60)\n(section 2656 200)\n(section 130472 8)\n(section 130480 8)\n(section 130488 496)\n(section 130984 64)\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 2856 true false true)\n(segment 130472 728 true true false)\n(subarch v8)\n(symbol-chunk 2164 20 2164)\n(symbol-chunk 2112 52 2112)\n(symbol-chunk 2388 184 2388)\n(symbol-value 2164 2164)\n(symbol-value 2192 2192)\n(symbol-value 2240 2240)\n(symbol-value 2304 2304)\n(symbol-value 2384 2384)\n(symbol-value 2572 2572)\n(symbol-value 2112 2112)\n(symbol-value 2388 2388)\n(symbol-value 1880 1880)\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\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\x28\x0b\x00\x00\x00\x00\x00\x00\x28\x0b\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"), -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\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\x28\x0b\x00\x00\x00\x00\x00\x00\x28\x0b\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\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\x24\x0a\x00\x00\x00\x00\x00\x00\x24\x0a\x00\x00\x00\x00\x00\x00\x24\x0a\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\xcc\xa8\x08\x16\x6f\x54\x78\x09\xc7\x6a\x9c\x3a\xb0\x99\x7c\xd8\x5a\xcf\xf1\x87\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\x40\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\x28\x0b\x00\x00\x00\x00\x00\x00\x28\x0b\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\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\x24\x0a\x00\x00\x00\x00\x00\x00\x24\x0a\x00\x00\x00\x00\x00\x00\x24\x0a\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\xcc\xa8\x08\x16\x6f\x54\x78\x09\xc7\x6a\x9c\x3a\xb0\x99\x7c\xd8\x5a\xcf\xf1\x87\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\x58\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\xa8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x50\x09\x00\x00\x00\x00\x00\x00\xb0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x54\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91"), -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\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\xcc\xa8\x08\x16\x6f\x54\x78\x09\xc7\x6a\x9c\x3a\xb0\x99\x7c\xd8\x5a\xcf\xf1\x87"), -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\x58\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, "\xa8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x50\x09\x00\x00\x00\x00\x00\x00\xb0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x78\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x54\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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", 0x668, "\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", 0x758, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x770, "\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", 0xA0C, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0xA20, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0xA24, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x1c\xfe\xff\xff\x50\x00\x00\x00\x6c\xfe\xff\xff\x64\x00\x00\x00\x9c\xfe\xff\xff\x78\x00\x00\x00\xdc\xfe\xff\xff\x8c\x00\x00\x00\x2c\xff\xff\xff\xb0\x00\x00\x00\x30\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0xA60, "\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\xc4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x00\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x1c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x48\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\x74\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\x24\x00\x00\x00\x18\x00\x00\x00\x50\xfe\xff\xff\xb8\x00\x00\x00\x00\x44\x0e\x40\x48\x0c\x1d\x10\x9e\x02\x9d\x04\x02\xa0\x0c\x1f\x40\x48\x0e\x00\xde\xdd\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDB0, "\x00\x09\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\x0c\x00\x00\x00\x00\x00\x00\x00\x58\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x0c\x0a\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\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\x68\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\xf0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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, "\x50\x09\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFA8, "\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\x78\x00\x02\x00\x00\x00\x00\x00\x61\x00\x02\x00\x00\x00\x00\x00\x54\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\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x70\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", 0x840, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\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\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\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\xff\x03\x01\xd1\xfd\x7b\x03\xa9\xfd\xc3\x00\x91\xe8\x00\x00\xf0\x08\xe5\x47\xf9\xe8\x0f\x00\xf9\xbf\x83\x1f\xf8\xbf\x03\x1f\xf8\x60\x01\x80\xd2\x96\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x00\xf9\x08\x01\x40\xf9\xe8\x07\x00\xf9\xe0\x00\x00\xf0\x00\xe8\x47\xf9\xe0\x03\x00\xf9\x82\xff\xff\x97\xe1\x03\x40\xf9\xe2\x03\x00\xaa\xe0\x07\x40\xf9\x7a\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x97\xff\xff\x97\xe8\x0f\x40\xf9\x09\x01\x40\xf9\x29\x11\x00\x91\xa9\x83\x1f\xf8\xa9\x83\x5f\xf8\x3f\x01\x00\x39\x09\x01\x40\xf9\xe9\x0b\x00\xf9\x00\x01\x40\xf9\x71\xff\xff\x97\xe2\x03\x00\xaa\xe0\x0b\x40\xf9\x21\x00\x80\x52\x7d\xff\xff\x97\xe8\x0f\x40\xf9\x00\x01\x40\xf9\x8a\xff\xff\x97\xe0\x03\x1f\x2a\xfd\x7b\x43\xa9\xff\x03\x01\x91\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xB27), Attr("segment","02 0 2856")), -Annotation(Region(0x840,0x873), 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,0x667), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x668,0x757), Attr("section","\".rela.plt\"")), -Annotation(Region(0x758,0x76F), Attr("section","\".init\"")), -Annotation(Region(0x770,0x82F), Attr("section","\".plt\"")), -Annotation(Region(0x758,0x76F), Attr("code-region","()")), -Annotation(Region(0x770,0x82F), Attr("code-region","()")), -Annotation(Region(0x840,0x873), Attr("symbol-info","_start 0x840 52")), -Annotation(Region(0x874,0x887), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x874,0x887), Attr("symbol-info","call_weak_fn 0x874 20")), -Annotation(Region(0x954,0xA0B), Attr("symbol","\"main\"")), -Annotation(Region(0x954,0xA0B), Attr("symbol-info","main 0x954 184")), -Annotation(Region(0xA0C,0xA1F), Attr("section","\".fini\"")), -Annotation(Region(0xA20,0xA23), Attr("section","\".rodata\"")), -Annotation(Region(0xA24,0xA5F), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0xA60,0xB27), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDA8,0x2006B), Attr("segment","03 0x1FDA8 728")), -Annotation(Region(0x1FDB0,0x1FDB7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDB8,0x1FFA7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDA8,0x1FDAF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFA8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), -Annotation(Region(0x840,0xA0B), Attr("section","\".text\"")), -Annotation(Region(0x840,0xA0B), Attr("code-region","()")), -Annotation(Region(0xA0C,0xA1F), Attr("code-region","()"))]), -Program(Tid(2_079, "%0000081f"), Attrs([]), - Subs([Sub(Tid(2_051, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_080, "%00000820"), - 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_257, "@__cxa_finalize"), - Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_645, "%0000066d"), Attrs([Attr("address","0x7C0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_652, "%00000674"), Attrs([Attr("address","0x7C4"), -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_658, "%0000067a"), Attrs([Attr("address","0x7C8"), -Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_663, "%0000067f"), - Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_052, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_081, "%00000821"), - 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(775, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x900")]), Phis([]), Defs([Def(Tid(779, "%0000030b"), - Attrs([Attr("address","0x900"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(785, "%00000311"), Attrs([Attr("address","0x900"), -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(791, "%00000317"), Attrs([Attr("address","0x900"), -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(795, "%0000031b"), Attrs([Attr("address","0x900"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(801, "%00000321"), - Attrs([Attr("address","0x904"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(809, "%00000329"), - Attrs([Attr("address","0x908"), 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(814, "%0000032e"), Attrs([Attr("address","0x90C"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(821, "%00000335"), Attrs([Attr("address","0x910"), -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(827, "%0000033b"), Attrs([Attr("address","0x914"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(825, "%00000339"))), -Goto(Tid(2_053, "%00000805"), Attrs([]), Int(1,1), -Direct(Tid(1_202, "%000004b2")))])), Blk(Tid(1_202, "%000004b2"), - Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_205, "%000004b5"), Attrs([Attr("address","0x918"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x91C"), -Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x920"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_216, "%000004c0"))), Goto(Tid(2_054, "%00000806"), Attrs([]), - Int(1,1), Direct(Tid(1_241, "%000004d9")))])), Blk(Tid(1_241, "%000004d9"), - Attrs([Attr("address","0x924")]), Phis([]), -Defs([Def(Tid(1_244, "%000004dc"), Attrs([Attr("address","0x924"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x928"), -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_256, "%000004e8"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_051, "@__cxa_finalize")),Direct(Tid(1_216, "%000004c0"))))])), -Blk(Tid(1_216, "%000004c0"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_224, "%000004c8"), Attrs([Attr("address","0x930"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2356,64))]), -Jmps([Call(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x930"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_065, "@deregister_tm_clones")),Direct(Tid(1_228, "%000004cc"))))])), -Blk(Tid(1_228, "%000004cc"), Attrs([Attr("address","0x934")]), Phis([]), -Defs([Def(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x934"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_239, "%000004d7"), Attrs([Attr("address","0x938"), -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_055, "%00000807"), Attrs([]), Int(1,1), -Direct(Tid(825, "%00000339")))])), Blk(Tid(825, "%00000339"), - Attrs([Attr("address","0x93C")]), Phis([]), Defs([Def(Tid(835, "%00000343"), - Attrs([Attr("address","0x93C"), 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(842, "%0000034a"), Attrs([Attr("address","0x940"), -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(847, "%0000034f"), Attrs([Attr("address","0x940"), -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(851, "%00000353"), Attrs([Attr("address","0x940"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(856, "%00000358"), - Attrs([Attr("address","0x944"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_056, "@__libc_start_main"), - Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), -Attr("address","0x7B0"), Attr("stub","()")]), "__libc_start_main", - Args([Arg(Tid(2_082, "%00000822"), - 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_083, "%00000823"), 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_084, "%00000824"), 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_085, "%00000825"), 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_086, "%00000826"), 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(608, "@__libc_start_main"), - Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_623, "%00000657"), Attrs([Attr("address","0x7B0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_630, "%0000065e"), Attrs([Attr("address","0x7B4"), -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_636, "%00000664"), Attrs([Attr("address","0x7B8"), -Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_641, "%00000669"), - Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_057, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0xA0C")]), - "_fini", Args([Arg(Tid(2_087, "%00000827"), - 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","0xA0C")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - Attrs([Attr("address","0xA10"), -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","0xA10"), -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","0xA10"), -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","0xA10"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0xA14"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0xA18"), -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","0xA18"), -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","0xA18"), -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","0xA1C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_058, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x758")]), - "_init", Args([Arg(Tid(2_088, "%00000828"), - 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_823, "@_init"), - Attrs([Attr("address","0x758")]), Phis([]), -Defs([Def(Tid(1_829, "%00000725"), Attrs([Attr("address","0x75C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#7",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_835, "%0000072b"), Attrs([Attr("address","0x75C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#7",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_841, "%00000731"), Attrs([Attr("address","0x75C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_845, "%00000735"), Attrs([Attr("address","0x75C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#7",Imm(64))), Def(Tid(1_851, "%0000073b"), - Attrs([Attr("address","0x760"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_856, "%00000740"), - Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1896,64))]), Jmps([Call(Tid(1_858, "%00000742"), - Attrs([Attr("address","0x764"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_063, "@call_weak_fn")),Direct(Tid(1_860, "%00000744"))))])), -Blk(Tid(1_860, "%00000744"), Attrs([Attr("address","0x768")]), Phis([]), -Defs([Def(Tid(1_865, "%00000749"), Attrs([Attr("address","0x768"), -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_870, "%0000074e"), Attrs([Attr("address","0x768"), -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_874, "%00000752"), Attrs([Attr("address","0x768"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_879, "%00000757"), - Attrs([Attr("address","0x76C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_059, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_089, "%00000829"), - 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(545, "@_start"), - Attrs([Attr("address","0x840")]), Phis([]), Defs([Def(Tid(550, "%00000226"), - Attrs([Attr("address","0x844"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(555, "%0000022b"), - Attrs([Attr("address","0x848"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(561, "%00000231"), - Attrs([Attr("address","0x84C"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(568, "%00000238"), - Attrs([Attr("address","0x850"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(574, "%0000023e"), Attrs([Attr("address","0x854"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(580, "%00000244"), - Attrs([Attr("address","0x858"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(585, "%00000249"), - Attrs([Attr("address","0x85C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(592, "%00000250"), - Attrs([Attr("address","0x860"), 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(597, "%00000255"), Attrs([Attr("address","0x864"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(602, "%0000025a"), Attrs([Attr("address","0x868"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x86C"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2160,64))]), -Jmps([Call(Tid(610, "%00000262"), Attrs([Attr("address","0x86C"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_056, "@__libc_start_main")),Direct(Tid(612, "%00000264"))))])), -Blk(Tid(612, "%00000264"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(615, "%00000267"), Attrs([Attr("address","0x870"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2164,64))]), -Jmps([Call(Tid(618, "%0000026a"), Attrs([Attr("address","0x870"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_062, "@abort")),Direct(Tid(2_060, "%0000080c"))))])), -Blk(Tid(2_060, "%0000080c"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_061, "%0000080d"), Attrs([]), Int(1,1), -(Direct(Tid(2_063, "@call_weak_fn")),))]))])), Sub(Tid(2_062, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x800"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(616, "@abort"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(1_733, "%000006c5"), Attrs([Attr("address","0x800"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_740, "%000006cc"), Attrs([Attr("address","0x804"), -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_746, "%000006d2"), Attrs([Attr("address","0x808"), -Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_751, "%000006d7"), - Attrs([Attr("address","0x80C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_063, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x874")]), - "call_weak_fn", Args([Arg(Tid(2_090, "%0000082a"), - 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(620, "@call_weak_fn"), - Attrs([Attr("address","0x874")]), Phis([]), Defs([Def(Tid(623, "%0000026f"), - Attrs([Attr("address","0x874"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(630, "%00000276"), - Attrs([Attr("address","0x878"), Attr("insn","ldr x0, [x0, #0xfc0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(636, "%0000027c"), Attrs([Attr("address","0x87C"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(634, "%0000027a"))), Goto(Tid(2_064, "%00000810"), Attrs([]), - Int(1,1), Direct(Tid(1_321, "%00000529")))])), Blk(Tid(634, "%0000027a"), - Attrs([Attr("address","0x884")]), Phis([]), Defs([]), -Jmps([Call(Tid(642, "%00000282"), Attrs([Attr("address","0x884"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_321, "%00000529"), Attrs([Attr("address","0x880")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_324, "%0000052c"), Attrs([Attr("address","0x880"), -Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_322, "@__gmon_start__")))])), Blk(Tid(1_322, "@__gmon_start__"), - Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(1_711, "%000006af"), Attrs([Attr("address","0x7F0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_718, "%000006b6"), Attrs([Attr("address","0x7F4"), -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_724, "%000006bc"), Attrs([Attr("address","0x7F8"), -Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_729, "%000006c1"), - Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_065, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x890")]), - "deregister_tm_clones", Args([Arg(Tid(2_091, "%0000082b"), - 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(648, "@deregister_tm_clones"), - Attrs([Attr("address","0x890")]), Phis([]), Defs([Def(Tid(651, "%0000028b"), - Attrs([Attr("address","0x890"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(657, "%00000291"), - Attrs([Attr("address","0x894"), Attr("insn","add x0, x0, #0x70")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(662, "%00000296"), Attrs([Attr("address","0x898"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(668, "%0000029c"), Attrs([Attr("address","0x89C"), -Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(674, "%000002a2"), - Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(679, "%000002a7"), - Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x8A0"), -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(691, "%000002b3"), Attrs([Attr("address","0x8A0"), -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(695, "%000002b7"), Attrs([Attr("address","0x8A0"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(699, "%000002bb"), - Attrs([Attr("address","0x8A0"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(705, "%000002c1"), Attrs([Attr("address","0x8A4"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(703, "%000002bf"))), Goto(Tid(2_066, "%00000812"), Attrs([]), - Int(1,1), Direct(Tid(1_291, "%0000050b")))])), Blk(Tid(1_291, "%0000050b"), - Attrs([Attr("address","0x8A8")]), Phis([]), -Defs([Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x8A8"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_301, "%00000515"), Attrs([Attr("address","0x8AC"), -Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_306, "%0000051a"), Attrs([Attr("address","0x8B0"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(703, "%000002bf"))), Goto(Tid(2_067, "%00000813"), Attrs([]), - Int(1,1), Direct(Tid(1_310, "%0000051e")))])), Blk(Tid(703, "%000002bf"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([]), -Jmps([Call(Tid(711, "%000002c7"), Attrs([Attr("address","0x8BC"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_314, "%00000522"), Attrs([Attr("address","0x8B4"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_319, "%00000527"), Attrs([Attr("address","0x8B8"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_068, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x950")]), "frame_dummy", Args([Arg(Tid(2_092, "%0000082c"), - 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(862, "@frame_dummy"), - Attrs([Attr("address","0x950")]), Phis([]), Defs([]), -Jmps([Call(Tid(864, "%00000360"), Attrs([Attr("address","0x950"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_075, "@register_tm_clones")),))]))])), Sub(Tid(2_069, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x820"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_093, "%0000082d"), - 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_166, "@free"), Attrs([Attr("address","0x820")]), - Phis([]), Defs([Def(Tid(1_777, "%000006f1"), Attrs([Attr("address","0x820"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_784, "%000006f8"), Attrs([Attr("address","0x824"), -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_790, "%000006fe"), Attrs([Attr("address","0x828"), -Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_795, "%00000703"), - Attrs([Attr("address","0x82C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_070, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x954")]), "main", Args([Arg(Tid(2_094, "%0000082e"), - 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_095, "%0000082f"), - 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_096, "%00000830"), - 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(866, "@main"), - Attrs([Attr("address","0x954")]), Phis([]), Defs([Def(Tid(870, "%00000366"), - Attrs([Attr("address","0x954"), Attr("insn","sub sp, sp, #0x40")]), - Var("R31",Imm(64)), PLUS(Var("R31",Imm(64)),Int(18446744073709551552,64))), -Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x958"), -Attr("insn","stp x29, x30, [sp, #0x30]")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(882, "%00000372"), - Attrs([Attr("address","0x958"), 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(888, "%00000378"), Attrs([Attr("address","0x958"), -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(894, "%0000037e"), Attrs([Attr("address","0x95C"), -Attr("insn","add x29, sp, #0x30")]), Var("R29",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(899, "%00000383"), - Attrs([Attr("address","0x960"), Attr("insn","adrp x8, #0x1f000")]), - Var("R8",Imm(64)), Int(126976,64)), Def(Tid(906, "%0000038a"), - Attrs([Attr("address","0x964"), Attr("insn","ldr x8, [x8, #0xfc8]")]), - Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(4040,64)),LittleEndian(),64)), -Def(Tid(914, "%00000392"), Attrs([Attr("address","0x968"), -Attr("insn","str x8, [sp, #0x18]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(921, "%00000399"), Attrs([Attr("address","0x96C"), -Attr("insn","stur xzr, [x29, #-0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x970"), -Attr("insn","stur xzr, [x29, #-0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551600,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(933, "%000003a5"), Attrs([Attr("address","0x974"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(938, "%000003aa"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(941, "%000003ad"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_071, "@malloc")),Direct(Tid(943, "%000003af"))))])), -Blk(Tid(943, "%000003af"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x97C"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(956, "%000003bc"), Attrs([Attr("address","0x980"), -Attr("insn","str x0, [x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R8",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x984"), -Attr("insn","ldr x8, [x8]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x988"), -Attr("insn","str x8, [sp, #0x8]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(976, "%000003d0"), Attrs([Attr("address","0x98C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(983, "%000003d7"), Attrs([Attr("address","0x990"), -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)), -Def(Tid(991, "%000003df"), Attrs([Attr("address","0x994"), -Attr("insn","str x0, [sp]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R31",Imm(64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(996, "%000003e4"), Attrs([Attr("address","0x998"), -Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2460,64))]), -Jmps([Call(Tid(999, "%000003e7"), Attrs([Attr("address","0x998"), -Attr("insn","bl #-0x1f8")]), Int(1,1), -(Direct(Tid(2_078, "@strlen")),Direct(Tid(1_001, "%000003e9"))))])), -Blk(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x99C")]), Phis([]), -Defs([Def(Tid(1_006, "%000003ee"), Attrs([Attr("address","0x99C"), -Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(1_012, "%000003f4"), Attrs([Attr("address","0x9A0"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x9A4"), -Attr("insn","ldr x0, [sp, #0x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x9A8"), -Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2476,64))]), -Jmps([Call(Tid(1_027, "%00000403"), Attrs([Attr("address","0x9A8"), -Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_072, "@memcpy")),Direct(Tid(1_029, "%00000405"))))])), -Blk(Tid(1_029, "%00000405"), Attrs([Attr("address","0x9AC")]), Phis([]), -Defs([Def(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x9AC"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_041, "%00000411"), Attrs([Attr("address","0x9B0"), -Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_046, "%00000416"), Attrs([Attr("address","0x9B4"), -Attr("insn","bl #-0x1a4")]), Var("R30",Imm(64)), Int(2488,64))]), -Jmps([Call(Tid(1_049, "%00000419"), Attrs([Attr("address","0x9B4"), -Attr("insn","bl #-0x1a4")]), Int(1,1), -(Direct(Tid(2_074, "@puts")),Direct(Tid(1_051, "%0000041b"))))])), -Blk(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x9B8")]), Phis([]), -Defs([Def(Tid(1_056, "%00000420"), Attrs([Attr("address","0x9B8"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_063, "%00000427"), Attrs([Attr("address","0x9BC"), -Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x9C0"), -Attr("insn","add x9, x9, #0x4")]), Var("R9",Imm(64)), -PLUS(Var("R9",Imm(64)),Int(4,64))), Def(Tid(1_077, "%00000435"), - Attrs([Attr("address","0x9C4"), Attr("insn","stur x9, [x29, #-0x8]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x9C8"), -Attr("insn","ldur x9, [x29, #-0x8]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R29",Imm(64)),Int(18446744073709551608,64)),LittleEndian(),64)), -Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x9CC"), -Attr("insn","strb wzr, [x9]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R9",Imm(64)),Int(0,8),LittleEndian(),8)), -Def(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x9D0"), -Attr("insn","ldr x9, [x8]")]), Var("R9",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_106, "%00000452"), Attrs([Attr("address","0x9D4"), -Attr("insn","str x9, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R9",Imm(64)),LittleEndian(),64)), -Def(Tid(1_113, "%00000459"), Attrs([Attr("address","0x9D8"), -Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_118, "%0000045e"), Attrs([Attr("address","0x9DC"), -Attr("insn","bl #-0x23c")]), Var("R30",Imm(64)), Int(2528,64))]), -Jmps([Call(Tid(1_120, "%00000460"), Attrs([Attr("address","0x9DC"), -Attr("insn","bl #-0x23c")]), Int(1,1), -(Direct(Tid(2_078, "@strlen")),Direct(Tid(1_122, "%00000462"))))])), -Blk(Tid(1_122, "%00000462"), Attrs([Attr("address","0x9E0")]), Phis([]), -Defs([Def(Tid(1_126, "%00000466"), Attrs([Attr("address","0x9E0"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_133, "%0000046d"), Attrs([Attr("address","0x9E4"), -Attr("insn","ldr x0, [sp, #0x10]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x9E8"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x9EC"), -Attr("insn","bl #-0x20c")]), Var("R30",Imm(64)), Int(2544,64))]), -Jmps([Call(Tid(1_146, "%0000047a"), Attrs([Attr("address","0x9EC"), -Attr("insn","bl #-0x20c")]), Int(1,1), -(Direct(Tid(2_073, "@memset")),Direct(Tid(1_148, "%0000047c"))))])), -Blk(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x9F0")]), Phis([]), -Defs([Def(Tid(1_153, "%00000481"), Attrs([Attr("address","0x9F0"), -Attr("insn","ldr x8, [sp, #0x18]")]), Var("R8",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(24,64)),LittleEndian(),64)), -Def(Tid(1_160, "%00000488"), Attrs([Attr("address","0x9F4"), -Attr("insn","ldr x0, [x8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x9F8"), -Attr("insn","bl #-0x1d8")]), Var("R30",Imm(64)), Int(2556,64))]), -Jmps([Call(Tid(1_168, "%00000490"), Attrs([Attr("address","0x9F8"), -Attr("insn","bl #-0x1d8")]), Int(1,1), -(Direct(Tid(2_069, "@free")),Direct(Tid(1_170, "%00000492"))))])), -Blk(Tid(1_170, "%00000492"), Attrs([Attr("address","0x9FC")]), Phis([]), -Defs([Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x9FC"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_179, "%0000049b"), Attrs([Attr("address","0xA00"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("#5",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64))), Def(Tid(1_184, "%000004a0"), - Attrs([Attr("address","0xA00"), Attr("insn","ldp x29, x30, [sp, #0x30]")]), - Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("#5",Imm(64)),LittleEndian(),64)), -Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0xA00"), -Attr("insn","ldp x29, x30, [sp, #0x30]")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0xA04"), -Attr("insn","add sp, sp, #0x40")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_200, "%000004b0"), - Attrs([Attr("address","0xA08"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_071, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x7D0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_097, "%00000831"), 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_098, "%00000832"), - 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(939, "@malloc"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_667, "%00000683"), Attrs([Attr("address","0x7D0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_674, "%0000068a"), Attrs([Attr("address","0x7D4"), -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_680, "%00000690"), Attrs([Attr("address","0x7D8"), -Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_685, "%00000695"), - Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_072, "@memcpy"), - Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), -Attr("address","0x790"), Attr("stub","()")]), "memcpy", - Args([Arg(Tid(2_099, "%00000833"), 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_100, "%00000834"), - 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_101, "%00000835"), 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_102, "%00000836"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_025, "@memcpy"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_579, "%0000062b"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_586, "%00000632"), Attrs([Attr("address","0x794"), -Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), -Def(Tid(1_592, "%00000638"), Attrs([Attr("address","0x798"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_597, "%0000063d"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_073, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x7E0"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_103, "%00000837"), 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_104, "%00000838"), - 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_105, "%00000839"), - 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_106, "%0000083a"), 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_144, "@memset"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_689, "%00000699"), Attrs([Attr("address","0x7E0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_696, "%000006a0"), Attrs([Attr("address","0x7E4"), -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_702, "%000006a6"), Attrs([Attr("address","0x7E8"), -Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_707, "%000006ab"), - Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_074, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x810"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_107, "%0000083b"), 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_108, "%0000083c"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_047, "@puts"), Attrs([Attr("address","0x810")]), Phis([]), -Defs([Def(Tid(1_755, "%000006db"), Attrs([Attr("address","0x810"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_762, "%000006e2"), Attrs([Attr("address","0x814"), -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_768, "%000006e8"), Attrs([Attr("address","0x818"), -Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_773, "%000006ed"), - Attrs([Attr("address","0x81C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_075, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "register_tm_clones", Args([Arg(Tid(2_109, "%0000083d"), - 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(713, "@register_tm_clones"), Attrs([Attr("address","0x8C0")]), - Phis([]), Defs([Def(Tid(716, "%000002cc"), Attrs([Attr("address","0x8C0"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(722, "%000002d2"), Attrs([Attr("address","0x8C4"), -Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(727, "%000002d7"), - Attrs([Attr("address","0x8C8"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(733, "%000002dd"), - Attrs([Attr("address","0x8CC"), Attr("insn","add x1, x1, #0x70")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), -Def(Tid(740, "%000002e4"), Attrs([Attr("address","0x8D0"), -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(746, "%000002ea"), Attrs([Attr("address","0x8D4"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(753, "%000002f1"), Attrs([Attr("address","0x8D8"), -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(759, "%000002f7"), Attrs([Attr("address","0x8DC"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(765, "%000002fd"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(763, "%000002fb"))), Goto(Tid(2_076, "%0000081c"), Attrs([]), - Int(1,1), Direct(Tid(1_261, "%000004ed")))])), Blk(Tid(1_261, "%000004ed"), - Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x8E4"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8E8"), -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_276, "%000004fc"), Attrs([Attr("address","0x8EC"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(763, "%000002fb"))), Goto(Tid(2_077, "%0000081d"), Attrs([]), - Int(1,1), Direct(Tid(1_280, "%00000500")))])), Blk(Tid(763, "%000002fb"), - Attrs([Attr("address","0x8F8")]), Phis([]), Defs([]), -Jmps([Call(Tid(771, "%00000303"), Attrs([Attr("address","0x8F8"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_280, "%00000500"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_284, "%00000504"), Attrs([Attr("address","0x8F0"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_289, "%00000509"), Attrs([Attr("address","0x8F4"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_078, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x7A0"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_110, "%0000083e"), 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_111, "%0000083f"), - 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(997, "@strlen"), - Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_601, "%00000641"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_608, "%00000648"), Attrs([Attr("address","0x7A4"), -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_614, "%0000064e"), Attrs([Attr("address","0x7A8"), -Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_619, "%00000653"), - Attrs([Attr("address","0x7AC"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index 4e8da3785..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,356 +0,0 @@ -0000081f: program -00000803: sub __cxa_finalize(__cxa_finalize_result) -00000820: __cxa_finalize_result :: out u32 = low:32[R0] - -000004e9: -0000066d: R16 := 0x20000 -00000674: R17 := mem[R16 + 0x18, el]:u64 -0000067a: R16 := R16 + 0x18 -0000067f: call R17 with noreturn - -00000804: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000821: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000307: -0000030b: #3 := R31 - 0x20 -00000311: mem := mem with [#3, el]:u64 <- R29 -00000317: mem := mem with [#3 + 8, el]:u64 <- R30 -0000031b: R31 := #3 -00000321: R29 := R31 -00000329: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000032e: R19 := 0x20000 -00000335: R0 := pad:64[mem[R19 + 0x70]] -0000033b: when 0:0[R0] goto %00000339 -00000805: goto %000004b2 - -000004b2: -000004b5: R0 := 0x1F000 -000004bc: R0 := mem[R0 + 0xFB8, el]:u64 -000004c2: when R0 = 0 goto %000004c0 -00000806: goto %000004d9 - -000004d9: -000004dc: R0 := 0x20000 -000004e3: R0 := mem[R0 + 0x58, el]:u64 -000004e8: R30 := 0x930 -000004eb: call @__cxa_finalize with return %000004c0 - -000004c0: -000004c8: R30 := 0x934 -000004ca: call @deregister_tm_clones with return %000004cc - -000004cc: -000004cf: R0 := 1 -000004d7: mem := mem with [R19 + 0x70] <- 7:0[R0] -00000807: goto %00000339 - -00000339: -00000343: R19 := mem[R31 + 0x10, el]:u64 -0000034a: R29 := mem[R31, el]:u64 -0000034f: R30 := mem[R31 + 8, el]:u64 -00000353: R31 := R31 + 0x20 -00000358: call R30 with noreturn - -00000808: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000822: __libc_start_main_main :: in u64 = R0 -00000823: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000824: __libc_start_main_arg3 :: in out u64 = R2 -00000825: __libc_start_main_auxv :: in out u64 = R3 -00000826: __libc_start_main_result :: out u32 = low:32[R0] - -00000260: -00000657: R16 := 0x20000 -0000065e: R17 := mem[R16 + 0x10, el]:u64 -00000664: R16 := R16 + 0x10 -00000669: call R17 with noreturn - -00000809: sub _fini(_fini_result) -00000827: _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 - -0000080a: sub _init(_init_result) -00000828: _init_result :: out u32 = low:32[R0] - -0000071f: -00000725: #7 := R31 - 0x10 -0000072b: mem := mem with [#7, el]:u64 <- R29 -00000731: mem := mem with [#7 + 8, el]:u64 <- R30 -00000735: R31 := #7 -0000073b: R29 := R31 -00000740: R30 := 0x768 -00000742: call @call_weak_fn with return %00000744 - -00000744: -00000749: R29 := mem[R31, el]:u64 -0000074e: R30 := mem[R31 + 8, el]:u64 -00000752: R31 := R31 + 0x10 -00000757: call R30 with noreturn - -0000080b: sub _start(_start_result) -00000829: _start_result :: out u32 = low:32[R0] - -00000221: -00000226: R29 := 0 -0000022b: R30 := 0 -00000231: R5 := R0 -00000238: R1 := mem[R31, el]:u64 -0000023e: R2 := R31 + 8 -00000244: R6 := R31 -00000249: R0 := 0x1F000 -00000250: R0 := mem[R0 + 0xFD8, el]:u64 -00000255: R3 := 0 -0000025a: R4 := 0 -0000025f: R30 := 0x870 -00000262: call @__libc_start_main with return %00000264 - -00000264: -00000267: R30 := 0x874 -0000026a: call @abort with return %0000080c - -0000080c: -0000080d: call @call_weak_fn with noreturn - -0000080e: sub abort() - - -00000268: -000006c5: R16 := 0x20000 -000006cc: R17 := mem[R16 + 0x38, el]:u64 -000006d2: R16 := R16 + 0x38 -000006d7: call R17 with noreturn - -0000080f: sub call_weak_fn(call_weak_fn_result) -0000082a: call_weak_fn_result :: out u32 = low:32[R0] - -0000026c: -0000026f: R0 := 0x1F000 -00000276: R0 := mem[R0 + 0xFC0, el]:u64 -0000027c: when R0 = 0 goto %0000027a -00000810: goto %00000529 - -0000027a: -00000282: call R30 with noreturn - -00000529: -0000052c: goto @__gmon_start__ - -0000052a: -000006af: R16 := 0x20000 -000006b6: R17 := mem[R16 + 0x30, el]:u64 -000006bc: R16 := R16 + 0x30 -000006c1: call R17 with noreturn - -00000811: sub deregister_tm_clones(deregister_tm_clones_result) -0000082b: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000288: -0000028b: R0 := 0x20000 -00000291: R0 := R0 + 0x70 -00000296: R1 := 0x20000 -0000029c: R1 := R1 + 0x70 -000002a2: #1 := ~R0 -000002a7: #2 := R1 + ~R0 -000002ad: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002b3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002b7: ZF := #2 + 1 = 0 -000002bb: NF := 63:63[#2 + 1] -000002c1: when ZF goto %000002bf -00000812: goto %0000050b - -0000050b: -0000050e: R1 := 0x1F000 -00000515: R1 := mem[R1 + 0xFB0, el]:u64 -0000051a: when R1 = 0 goto %000002bf -00000813: goto %0000051e - -000002bf: -000002c7: call R30 with noreturn - -0000051e: -00000522: R16 := R1 -00000527: call R16 with noreturn - -00000814: sub frame_dummy(frame_dummy_result) -0000082c: frame_dummy_result :: out u32 = low:32[R0] - -0000035e: -00000360: call @register_tm_clones with noreturn - -00000815: sub free(free_ptr) -0000082d: free_ptr :: in out u64 = R0 - -0000048e: -000006f1: R16 := 0x20000 -000006f8: R17 := mem[R16 + 0x48, el]:u64 -000006fe: R16 := R16 + 0x48 -00000703: call R17 with noreturn - -00000816: sub main(main_argc, main_argv, main_result) -0000082e: main_argc :: in u32 = low:32[R0] -0000082f: main_argv :: in out u64 = R1 -00000830: main_result :: out u32 = low:32[R0] - -00000362: -00000366: R31 := R31 - 0x40 -0000036c: #4 := R31 + 0x30 -00000372: mem := mem with [#4, el]:u64 <- R29 -00000378: mem := mem with [#4 + 8, el]:u64 <- R30 -0000037e: R29 := R31 + 0x30 -00000383: R8 := 0x1F000 -0000038a: R8 := mem[R8 + 0xFC8, el]:u64 -00000392: mem := mem with [R31 + 0x18, el]:u64 <- R8 -00000399: mem := mem with [R29 - 8, el]:u64 <- 0 -000003a0: mem := mem with [R29 - 0x10, el]:u64 <- 0 -000003a5: R0 := 0xB -000003aa: R30 := 0x97C -000003ad: call @malloc with return %000003af - -000003af: -000003b4: R8 := mem[R31 + 0x18, el]:u64 -000003bc: mem := mem with [R8, el]:u64 <- R0 -000003c3: R8 := mem[R8, el]:u64 -000003cb: mem := mem with [R31 + 8, el]:u64 <- R8 -000003d0: R0 := 0x1F000 -000003d7: R0 := mem[R0 + 0xFD0, el]:u64 -000003df: mem := mem with [R31, el]:u64 <- R0 -000003e4: R30 := 0x99C -000003e7: call @strlen with return %000003e9 - -000003e9: -000003ee: R1 := mem[R31, el]:u64 -000003f4: R2 := R0 -000003fb: R0 := mem[R31 + 8, el]:u64 -00000400: R30 := 0x9AC -00000403: call @memcpy with return %00000405 - -00000405: -0000040a: R8 := mem[R31 + 0x18, el]:u64 -00000411: R0 := mem[R8, el]:u64 -00000416: R30 := 0x9B8 -00000419: call @puts with return %0000041b - -0000041b: -00000420: R8 := mem[R31 + 0x18, el]:u64 -00000427: R9 := mem[R8, el]:u64 -0000042d: R9 := R9 + 4 -00000435: mem := mem with [R29 - 8, el]:u64 <- R9 -0000043c: R9 := mem[R29 - 8, el]:u64 -00000443: mem := mem with [R9] <- 0 -0000044a: R9 := mem[R8, el]:u64 -00000452: mem := mem with [R31 + 0x10, el]:u64 <- R9 -00000459: R0 := mem[R8, el]:u64 -0000045e: R30 := 0x9E0 -00000460: call @strlen with return %00000462 - -00000462: -00000466: R2 := R0 -0000046d: R0 := mem[R31 + 0x10, el]:u64 -00000472: R1 := 1 -00000477: R30 := 0x9F0 -0000047a: call @memset with return %0000047c - -0000047c: -00000481: R8 := mem[R31 + 0x18, el]:u64 -00000488: R0 := mem[R8, el]:u64 -0000048d: R30 := 0x9FC -00000490: call @free with return %00000492 - -00000492: -00000495: R0 := 0 -0000049b: #5 := R31 + 0x30 -000004a0: R29 := mem[#5, el]:u64 -000004a5: R30 := mem[#5 + 8, el]:u64 -000004ab: R31 := R31 + 0x40 -000004b0: call R30 with noreturn - -00000817: sub malloc(malloc_size, malloc_result) -00000831: malloc_size :: in u64 = R0 -00000832: malloc_result :: out u64 = R0 - -000003ab: -00000683: R16 := 0x20000 -0000068a: R17 := mem[R16 + 0x20, el]:u64 -00000690: R16 := R16 + 0x20 -00000695: call R17 with noreturn - -00000818: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000833: memcpy_dst :: in out u64 = R0 -00000834: memcpy_src :: in out u64 = R1 -00000835: memcpy_n :: in u64 = R2 -00000836: memcpy_result :: out u64 = R0 - -00000401: -0000062b: R16 := 0x20000 -00000632: R17 := mem[R16, el]:u64 -00000638: R16 := R16 -0000063d: call R17 with noreturn - -00000819: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000837: memset_buf :: in out u64 = R0 -00000838: memset_c :: in u32 = low:32[R1] -00000839: memset_n :: in u64 = R2 -0000083a: memset_result :: out u64 = R0 - -00000478: -00000699: R16 := 0x20000 -000006a0: R17 := mem[R16 + 0x28, el]:u64 -000006a6: R16 := R16 + 0x28 -000006ab: call R17 with noreturn - -0000081a: sub puts(puts_s, puts_result) -0000083b: puts_s :: in u64 = R0 -0000083c: puts_result :: out u32 = low:32[R0] - -00000417: -000006db: R16 := 0x20000 -000006e2: R17 := mem[R16 + 0x40, el]:u64 -000006e8: R16 := R16 + 0x40 -000006ed: call R17 with noreturn - -0000081b: sub register_tm_clones(register_tm_clones_result) -0000083d: register_tm_clones_result :: out u32 = low:32[R0] - -000002c9: -000002cc: R0 := 0x20000 -000002d2: R0 := R0 + 0x70 -000002d7: R1 := 0x20000 -000002dd: R1 := R1 + 0x70 -000002e4: R1 := R1 + ~R0 + 1 -000002ea: R2 := 0.63:63[R1] -000002f1: R1 := R2 + (R1 ~>> 3) -000002f7: R1 := extend:64[63:1[R1]] -000002fd: when R1 = 0 goto %000002fb -0000081c: goto %000004ed - -000004ed: -000004f0: R2 := 0x1F000 -000004f7: R2 := mem[R2 + 0xFE0, el]:u64 -000004fc: when R2 = 0 goto %000002fb -0000081d: goto %00000500 - -000002fb: -00000303: call R30 with noreturn - -00000500: -00000504: R16 := R2 -00000509: call R16 with noreturn - -0000081e: sub strlen(strlen_s, strlen_result) -0000083e: strlen_s :: in u64 = R0 -0000083f: strlen_result :: out u64 = R0 - -000003e5: -00000641: R16 := 0x20000 -00000648: R17 := mem[R16 + 8, el]:u64 -0000064e: R16 := R16 + 8 -00000653: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.expected deleted file mode 100644 index 8931fd7be..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.expected +++ /dev/null @@ -1,1068 +0,0 @@ -var {:extern} Gamma_R0: bool; -var {:extern} Gamma_R1: bool; -var {:extern} Gamma_R16: bool; -var {:extern} Gamma_R17: bool; -var {:extern} Gamma_R2: bool; -var {:extern} Gamma_R29: bool; -var {:extern} Gamma_R30: bool; -var {:extern} Gamma_R31: bool; -var {:extern} Gamma_R8: bool; -var {:extern} Gamma_R9: 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} R2: bv64; -var {:extern} R29: bv64; -var {:extern} R30: bv64; -var {:extern} R31: bv64; -var {:extern} R8: bv64; -var {:extern} R9: 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_be(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, 2592bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free requires (memory_load8_le(mem, 2593bv64) == 0bv8); - free requires (memory_load8_le(mem, 2594bv64) == 2bv8); - free requires (memory_load8_le(mem, 2595bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 0bv8); - free requires (memory_load8_le(mem, 131024bv64) == 97bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free requires (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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_R2, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_R9, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R2, R29, R30, R31, R8, R9, 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, 2592bv64) == 1bv8); - free requires (memory_load8_le(mem, 2593bv64) == 0bv8); - free requires (memory_load8_le(mem, 2594bv64) == 2bv8); - free requires (memory_load8_le(mem, 2595bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 0bv8); - free requires (memory_load8_le(mem, 131024bv64) == 97bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free requires (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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_R29 == old(Gamma_R29)); - free ensures (Gamma_R31 == old(Gamma_R31)); - free ensures (R29 == old(R29)); - free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2592bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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 #42: bv64; - var Gamma_#42: bool; - lmain: - assume {:captureState "lmain"} true; - R31, Gamma_R31 := bvsub64(R31, 64bv64), Gamma_R31; - #42, Gamma_#42 := bvadd64(R31, 48bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); - assume {:captureState "%000003a3"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); - assume {:captureState "%000003a8"} true; - R29, Gamma_R29 := bvadd64(R31, 48bv64), Gamma_R31; - R8, Gamma_R8 := 126976bv64, true; - call rely(); - R8, Gamma_R8 := memory_load64_le(mem, bvadd64(R8, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R8, 4040bv64)) || L(mem, bvadd64(R8, 4040bv64))); - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 24bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 24bv64), Gamma_R8); - assume {:captureState "%000003c5"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), true); - assume {:captureState "%000003cd"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551600bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551600bv64), true); - assume {:captureState "%000003d5"} true; - R0, Gamma_R0 := 11bv64, true; - R30, Gamma_R30 := 2428bv64, true; - call malloc(); - goto l000003e5; - l000003e5: - assume {:captureState "l000003e5"} true; - R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - assert (L(mem, R8) ==> Gamma_R0); - mem, Gamma_mem := memory_store64_le(mem, R8, R0), gamma_store64(Gamma_mem, R8, Gamma_R0); - assume {:captureState "%000003f3"} true; - call rely(); - R8, Gamma_R8 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 8bv64), R8), gamma_store64(Gamma_stack, bvadd64(R31, 8bv64), Gamma_R8); - assume {:captureState "%00000403"} true; - R0, Gamma_R0 := 126976bv64, true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4048bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4048bv64)) || L(mem, bvadd64(R0, 4048bv64))); - stack, Gamma_stack := memory_store64_le(stack, R31, R0), gamma_store64(Gamma_stack, R31, Gamma_R0); - assume {:captureState "%00000419"} true; - R30, Gamma_R30 := 2460bv64, true; - call strlen(); - goto l00000423; - l00000423: - assume {:captureState "l00000423"} true; - R1, Gamma_R1 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); - R30, Gamma_R30 := 2476bv64, true; - call memcpy(); - goto l00000443; - l00000443: - assume {:captureState "l00000443"} true; - R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); - R30, Gamma_R30 := 2488bv64, true; - call puts(); - goto l0000045b; - l0000045b: - assume {:captureState "l0000045b"} true; - R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - R9, Gamma_R9 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); - R9, Gamma_R9 := bvadd64(R9, 4bv64), Gamma_R9; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R29, 18446744073709551608bv64), R9), gamma_store64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64), Gamma_R9); - assume {:captureState "%00000478"} true; - R9, Gamma_R9 := memory_load64_le(stack, bvadd64(R29, 18446744073709551608bv64)), gamma_load64(Gamma_stack, bvadd64(R29, 18446744073709551608bv64)); - call rely(); - assert (L(mem, R9) ==> true); - mem, Gamma_mem := memory_store8_be(mem, R9, 0bv8), gamma_store8(Gamma_mem, R9, true); - assume {:captureState "%00000488"} true; - call rely(); - R9, Gamma_R9 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R9), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R9); - assume {:captureState "%00000498"} true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); - R30, Gamma_R30 := 2528bv64, true; - call strlen(); - goto l000004a9; - l000004a9: - assume {:captureState "l000004a9"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); - R1, Gamma_R1 := 1bv64, true; - R30, Gamma_R30 := 2544bv64, true; - call memset(); - goto l000004c8; - l000004c8: - assume {:captureState "l000004c8"} true; - R8, Gamma_R8 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R8), (gamma_load64(Gamma_mem, R8) || L(mem, R8)); - R30, Gamma_R30 := 2556bv64, true; - call #free(); - goto l000004e0; - l000004e0: - assume {:captureState "l000004e0"} true; - R0, Gamma_R0 := 0bv32, true; - R29, Gamma_R29 := memory_load64_le(stack, bvadd64(R31, 48bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 48bv64)); - R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 56bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 56bv64)); - R31, Gamma_R31 := bvadd64(R31, 64bv64), 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, 2592bv64) == 1bv8); - free requires (memory_load8_le(mem, 2593bv64) == 0bv8); - free requires (memory_load8_le(mem, 2594bv64) == 2bv8); - free requires (memory_load8_le(mem, 2595bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 0bv8); - free requires (memory_load8_le(mem, 131024bv64) == 97bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free requires (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free requires (memory_load8_le(mem, 2593bv64) == 0bv8); - free requires (memory_load8_le(mem, 2594bv64) == 2bv8); - free requires (memory_load8_le(mem, 2595bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 0bv8); - free requires (memory_load8_le(mem, 131024bv64) == 97bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free requires (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free requires (memory_load8_le(mem, 2593bv64) == 0bv8); - free requires (memory_load8_le(mem, 2594bv64) == 2bv8); - free requires (memory_load8_le(mem, 2595bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 0bv8); - free requires (memory_load8_le(mem, 131024bv64) == 97bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free requires (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free requires (memory_load8_le(mem, 2593bv64) == 0bv8); - free requires (memory_load8_le(mem, 2594bv64) == 2bv8); - free requires (memory_load8_le(mem, 2595bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 0bv8); - free requires (memory_load8_le(mem, 131024bv64) == 97bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free requires (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free requires (memory_load8_le(mem, 2593bv64) == 0bv8); - free requires (memory_load8_le(mem, 2594bv64) == 2bv8); - free requires (memory_load8_le(mem, 2595bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 0bv8); - free requires (memory_load8_le(mem, 131024bv64) == 97bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free requires (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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, 2592bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2593bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2594bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2595bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 80bv8); - 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, 131016bv64) == 120bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131024bv64) == 97bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 84bv8); - 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, 130480bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 9bv8); - 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, 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_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index 27b0d451a..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_pic/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,147 +0,0 @@ - -Relocation section '.rela.dyn' at offset 0x578 contains 10 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fda8 0000000000000403 R_AARCH64_RELATIVE 950 -000000000001fdb0 0000000000000403 R_AARCH64_RELATIVE 900 -000000000001ffc8 0000000000000403 R_AARCH64_RELATIVE 20078 -000000000001ffd0 0000000000000403 R_AARCH64_RELATIVE 20061 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 954 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffb0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffb8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffc0 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 0x668 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: 0000000000000758 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: 0000000000000668 0 SECTION LOCAL DEFAULT 11 .rela.plt - 12: 0000000000000758 0 SECTION LOCAL DEFAULT 12 .init - 13: 0000000000000770 0 SECTION LOCAL DEFAULT 13 .plt - 14: 0000000000000840 0 SECTION LOCAL DEFAULT 14 .text - 15: 0000000000000a0c 0 SECTION LOCAL DEFAULT 15 .fini - 16: 0000000000000a20 0 SECTION LOCAL DEFAULT 16 .rodata - 17: 0000000000000a24 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr - 18: 0000000000000a60 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: 000000000001ffa8 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: 0000000000000840 0 NOTYPE LOCAL DEFAULT 14 $x - 31: 0000000000000a74 0 NOTYPE LOCAL DEFAULT 18 $d - 32: 0000000000000a20 0 NOTYPE LOCAL DEFAULT 16 $d - 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 34: 0000000000000874 0 NOTYPE LOCAL DEFAULT 14 $x - 35: 0000000000000874 20 FUNC LOCAL DEFAULT 14 call_weak_fn - 36: 0000000000000758 0 NOTYPE LOCAL DEFAULT 12 $x - 37: 0000000000000a0c 0 NOTYPE LOCAL DEFAULT 15 $x - 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 39: 0000000000000768 0 NOTYPE LOCAL DEFAULT 12 $x - 40: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 15 $x - 41: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 42: 0000000000000890 0 NOTYPE LOCAL DEFAULT 14 $x - 43: 0000000000000890 0 FUNC LOCAL DEFAULT 14 deregister_tm_clones - 44: 00000000000008c0 0 FUNC LOCAL DEFAULT 14 register_tm_clones - 45: 0000000000020058 0 NOTYPE LOCAL DEFAULT 24 $d - 46: 0000000000000900 0 FUNC LOCAL DEFAULT 14 __do_global_dtors_aux - 47: 0000000000020070 1 OBJECT LOCAL DEFAULT 25 completed.0 - 48: 000000000001fdb0 0 NOTYPE LOCAL DEFAULT 20 $d - 49: 000000000001fdb0 0 OBJECT LOCAL DEFAULT 20 __do_global_dtors_aux_fini_array_entry - 50: 0000000000000950 0 FUNC LOCAL DEFAULT 14 frame_dummy - 51: 000000000001fda8 0 NOTYPE LOCAL DEFAULT 19 $d - 52: 000000000001fda8 0 OBJECT LOCAL DEFAULT 19 __frame_dummy_init_array_entry - 53: 0000000000000a88 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: 0000000000000954 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: 0000000000000ae8 0 NOTYPE LOCAL DEFAULT 18 $d.4 - 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 62: 0000000000000b24 0 NOTYPE LOCAL DEFAULT 18 $d - 63: 0000000000000b24 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ - 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 65: 000000000001fdb8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 66: 0000000000000a24 0 NOTYPE LOCAL DEFAULT 17 __GNU_EH_FRAME_HDR - 67: 000000000001ffa8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 68: 0000000000000770 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: 0000000000000a0c 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: 0000000000000a20 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: 0000000000000840 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: 0000000000000954 184 FUNC GLOBAL DEFAULT 14 main - 97: 0000000000020070 0 OBJECT GLOBAL HIDDEN 24 __TMC_END__ - 98: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 99: 0000000000000758 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/gcc/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index b132dd748..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,780 +0,0 @@ -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 2468 20 2468)\n(code-region 1984 484 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 208)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 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 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2468 20)\n(llvm:code-entry .text 1984 484)\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 2492 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2728)\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 2492 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2728)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2552 176 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 1984 484 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 208 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 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 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2728 0)\n(mapped 130504 683 64968)\n(named-region 0 2728 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 484 .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 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 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 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 484)\n(section 2468 20)\n(section 2488 4)\n(section 2492 60)\n(section 2552 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2728 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 208 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2468 2468)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), -Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), -Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), -Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed"), -Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 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\x04\xfe\xff\xff\x50\x00\x00\x00\x54\xfe\xff\xff\x64\x00\x00\x00\x84\xfe\xff\xff\x78\x00\x00\x00\xc4\xfe\xff\xff\x8c\x00\x00\x00\x14\xff\xff\xff\xb0\x00\x00\x00\x18\xff\xff\xff\xc4\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\xac\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xe8\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x04\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x30\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\x5c\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x4c\xfe\xff\xff\xd0\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x70\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xa4\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), -Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), -Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\xe0\x17\x40\xf9\x1f\x00\x00\x39\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6c\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x78\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x84\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xAA7), Attr("segment","02 0 2728")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), -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,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x9A3), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x9A3), Attr("symbol-info","main 0x8D4 208")), -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,0xAA7), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), -Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), -Annotation(Region(0x7C0,0x9A3), Attr("section","\".text\"")), -Annotation(Region(0x7C0,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("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_129, "%00000851"), - 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_300, "@__cxa_finalize"), - Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x740"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_101, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_130, "%00000852"), - 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(799, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(803, "%00000323"), - Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(809, "%00000329"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(819, "%00000333"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(825, "%00000339"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(833, "%00000341"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(838, "%00000346"), Attrs([Attr("address","0x88C"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x890"), -Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), -Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(849, "%00000351"))), -Goto(Tid(2_102, "%00000836"), Attrs([]), Int(1,1), -Direct(Tid(1_245, "%000004dd")))])), Blk(Tid(1_245, "%000004dd"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x898"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x89C"), -Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_259, "%000004eb"))), Goto(Tid(2_103, "%00000837"), Attrs([]), - Int(1,1), Direct(Tid(1_284, "%00000504")))])), Blk(Tid(1_284, "%00000504"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_287, "%00000507"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x8A8"), -Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_299, "%00000513"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_302, "%00000516"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_100, "@__cxa_finalize")),Direct(Tid(1_259, "%000004eb"))))])), -Blk(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_267, "%000004f3"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_114, "@deregister_tm_clones")),Direct(Tid(1_271, "%000004f7"))))])), -Blk(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x8B4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_282, "%00000502"), Attrs([Attr("address","0x8B8"), -Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), -Jmps([Goto(Tid(2_104, "%00000838"), Attrs([]), Int(1,1), -Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(859, "%0000035b"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(866, "%00000362"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(871, "%00000367"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(875, "%0000036b"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(880, "%00000370"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_105, "@__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_131, "%00000853"), - 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_132, "%00000854"), 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_133, "%00000855"), 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_134, "%00000856"), 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_135, "%00000857"), 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(632, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x730"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_106, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A4")]), - "_fini", Args([Arg(Tid(2_136, "%00000858"), - 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","0x9A4")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - 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(44, "%0000002c"), 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(50, "%00000032"), 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(54, "%00000036"), Attrs([Attr("address","0x9A8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9AC"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), 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(72, "%00000048"), 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(76, "%0000004c"), 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(81, "%00000051"), - Attrs([Attr("address","0x9B4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_107, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_137, "%00000859"), - 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_866, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_872, "%00000750"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_878, "%00000756"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#6",Imm(64))), Def(Tid(1_894, "%00000766"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_899, "%0000076b"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_901, "%0000076d"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_112, "@call_weak_fn")),Direct(Tid(1_903, "%0000076f"))))])), -Blk(Tid(1_903, "%0000076f"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_908, "%00000774"), 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_913, "%00000779"), 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_917, "%0000077d"), 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_922, "%00000782"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_108, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_138, "%0000085a"), - 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(569, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(574, "%0000023e"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(579, "%00000243"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(585, "%00000249"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(598, "%00000256"), Attrs([Attr("address","0x7D4"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(604, "%0000025c"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(609, "%00000261"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(616, "%00000268"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x7E4"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(626, "%00000272"), Attrs([Attr("address","0x7E8"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_105, "@__libc_start_main")),Direct(Tid(636, "%0000027c"))))])), -Blk(Tid(636, "%0000027c"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(642, "%00000282"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), 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("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(640, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_783, "%000006f7"), 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_789, "%000006fd"), 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_794, "%00000702"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_112, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_139, "%0000085b"), - 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(644, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(647, "%00000287"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(654, "%0000028e"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(660, "%00000294"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(658, "%00000292"))), Goto(Tid(2_113, "%00000841"), Attrs([]), - Int(1,1), Direct(Tid(1_364, "%00000554")))])), Blk(Tid(658, "%00000292"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(666, "%0000029a"), Attrs([Attr("address","0x804"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_364, "%00000554"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_367, "%00000557"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_365, "@__gmon_start__")))])), Blk(Tid(1_365, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_761, "%000006e1"), 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_767, "%000006e7"), 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_772, "%000006ec"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_114, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_140, "%0000085c"), - 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(672, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(675, "%000002a3"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(686, "%000002ae"), Attrs([Attr("address","0x818"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(692, "%000002b4"), Attrs([Attr("address","0x81C"), -Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(698, "%000002ba"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(703, "%000002bf"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), -NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), -NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(719, "%000002cf"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(723, "%000002d3"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(729, "%000002d9"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(727, "%000002d7"))), Goto(Tid(2_115, "%00000843"), Attrs([]), - Int(1,1), Direct(Tid(1_334, "%00000536")))])), Blk(Tid(1_334, "%00000536"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_337, "%00000539"), Attrs([Attr("address","0x828"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x82C"), -Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_349, "%00000545"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(727, "%000002d7"))), Goto(Tid(2_116, "%00000844"), Attrs([]), - Int(1,1), Direct(Tid(1_353, "%00000549")))])), Blk(Tid(727, "%000002d7"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(735, "%000002df"), Attrs([Attr("address","0x83C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_357, "%0000054d"), Attrs([Attr("address","0x834"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_362, "%00000552"), Attrs([Attr("address","0x838"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_117, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_141, "%0000085d"), - 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(886, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(888, "%00000378"), Attrs([Attr("address","0x8D0"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_124, "@register_tm_clones")),))]))])), Sub(Tid(2_118, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_142, "%0000085e"), - 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_208, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_820, "%0000071c"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_827, "%00000723"), 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_833, "%00000729"), 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_838, "%0000072e"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_119, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_143, "%0000085f"), - 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_144, "%00000860"), - 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_145, "%00000861"), - 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(890, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(894, "%0000037e"), - Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(900, "%00000384"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#4",Imm(64))), Def(Tid(916, "%00000394"), - Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(924, "%0000039c"), - Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(931, "%000003a3"), Attrs([Attr("address","0x8E0"), -Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(938, "%000003aa"), Attrs([Attr("address","0x8E4"), -Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(943, "%000003af"), Attrs([Attr("address","0x8E8"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(951, "%000003b7"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_120, "@malloc")),Direct(Tid(953, "%000003b9"))))])), -Blk(Tid(953, "%000003b9"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8F0"), -Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x8F4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x8F8"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(976, "%000003d0"), - Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x900"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x904"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(994, "%000003e2"), - Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(999, "%000003e7"), Attrs([Attr("address","0x90C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x910"), -Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_010, "%000003f2"), - Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), - Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_013, "%000003f5"), - Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_015, "%000003f7"))))])), -Blk(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x918"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x91C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x920"), -Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_036, "%0000040c"), - Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_041, "%00000411"), - Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_044, "%00000414"), - Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_121, "@memcpy")),Direct(Tid(1_046, "%00000416"))))])), -Blk(Tid(1_046, "%00000416"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_049, "%00000419"), Attrs([Attr("address","0x92C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x930"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_062, "%00000426"), - Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_070, "%0000042e"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_123, "@puts")),Direct(Tid(1_072, "%00000430"))))])), -Blk(Tid(1_072, "%00000430"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x93C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x940"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_088, "%00000440"), - Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_094, "%00000446"), Attrs([Attr("address","0x948"), -Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_102, "%0000044e"), - Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x950"), -Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), -Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x954"), -Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),LittleEndian(),8)), -Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x958"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x95C"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_134, "%0000046e"), - Attrs([Attr("address","0x960"), Attr("insn","ldr x19, [x0]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_139, "%00000473"), Attrs([Attr("address","0x964"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x968"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_152, "%00000480"), - Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x970"), -Attr("insn","bl #-0x250")]), Var("R30",Imm(64)), Int(2420,64))]), -Jmps([Call(Tid(1_159, "%00000487"), Attrs([Attr("address","0x970"), -Attr("insn","bl #-0x250")]), Int(1,1), -(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_161, "%00000489"))))])), -Blk(Tid(1_161, "%00000489"), Attrs([Attr("address","0x974")]), Phis([]), -Defs([Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x974"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x978"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_176, "%00000498"), Attrs([Attr("address","0x97C"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x980"), -Attr("insn","bl #-0x220")]), Var("R30",Imm(64)), Int(2436,64))]), -Jmps([Call(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x980"), -Attr("insn","bl #-0x220")]), Int(1,1), -(Direct(Tid(2_122, "@memset")),Direct(Tid(1_186, "%000004a2"))))])), -Blk(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x984")]), Phis([]), -Defs([Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x984"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x988"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_202, "%000004b2"), - Attrs([Attr("address","0x98C"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_207, "%000004b7"), Attrs([Attr("address","0x990"), -Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2452,64))]), -Jmps([Call(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x990"), -Attr("insn","bl #-0x1f0")]), Int(1,1), -(Direct(Tid(2_118, "@free")),Direct(Tid(1_212, "%000004bc"))))])), -Blk(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x994")]), Phis([]), -Defs([Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x994"), -Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x998"), -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_229, "%000004cd"), 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_234, "%000004d2"), 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_238, "%000004d6"), 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_243, "%000004db"), - Attrs([Attr("address","0x9A0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_120, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_146, "%00000862"), 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_147, "%00000863"), - 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(949, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x750"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_121, "@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_148, "%00000864"), 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_149, "%00000865"), - 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_150, "%00000866"), 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_151, "%00000867"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_042, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x710"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), Attrs([Attr("address","0x718"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_640, "%00000668"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_122, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_152, "%00000868"), 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_153, "%00000869"), - 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_154, "%0000086a"), - 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_155, "%0000086b"), 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_182, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_123, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_156, "%0000086c"), 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_157, "%0000086d"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_068, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_805, "%0000070d"), 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_811, "%00000713"), 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_816, "%00000718"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_124, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_158, "%0000086e"), - 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(737, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(740, "%000002e4"), Attrs([Attr("address","0x840"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x844"), -Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(751, "%000002ef"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(757, "%000002f5"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(764, "%000002fc"), Attrs([Attr("address","0x850"), -Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(770, "%00000302"), Attrs([Attr("address","0x854"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(777, "%00000309"), Attrs([Attr("address","0x858"), -Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x85C"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(789, "%00000315"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(787, "%00000313"))), Goto(Tid(2_125, "%0000084d"), Attrs([]), - Int(1,1), Direct(Tid(1_304, "%00000518")))])), Blk(Tid(1_304, "%00000518"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x864"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_314, "%00000522"), Attrs([Attr("address","0x868"), -Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_319, "%00000527"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(787, "%00000313"))), Goto(Tid(2_126, "%0000084e"), Attrs([]), - Int(1,1), Direct(Tid(1_323, "%0000052b")))])), Blk(Tid(787, "%00000313"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(795, "%0000031b"), Attrs([Attr("address","0x878"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_323, "%0000052b"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x870"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_332, "%00000534"), Attrs([Attr("address","0x874"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_127, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_159, "%0000086f"), 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_160, "%00000870"), - Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), -Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_011, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x720"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), - 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/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index 586d4d79c..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,363 +0,0 @@ -00000850: program -00000834: sub __cxa_finalize(__cxa_finalize_result) -00000851: __cxa_finalize_result :: out u32 = low:32[R0] - -00000514: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x18, el]:u64 -000006a5: R16 := R16 + 0x18 -000006aa: 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] - -0000031f: -00000323: #3 := R31 - 0x20 -00000329: mem := mem with [#3, el]:u64 <- R29 -0000032f: mem := mem with [#3 + 8, el]:u64 <- R30 -00000333: R31 := #3 -00000339: R29 := R31 -00000341: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000346: R19 := 0x20000 -0000034d: R0 := pad:64[mem[R19 + 0x78]] -00000353: when 0:0[R0] goto %00000351 -00000836: goto %000004dd - -000004dd: -000004e0: R0 := 0x1F000 -000004e7: R0 := mem[R0 + 0xFC8, el]:u64 -000004ed: when R0 = 0 goto %000004eb -00000837: goto %00000504 - -00000504: -00000507: R0 := 0x20000 -0000050e: R0 := mem[R0 + 0x58, el]:u64 -00000513: R30 := 0x8B0 -00000516: call @__cxa_finalize with return %000004eb - -000004eb: -000004f3: R30 := 0x8B4 -000004f5: call @deregister_tm_clones with return %000004f7 - -000004f7: -000004fa: R0 := 1 -00000502: mem := mem with [R19 + 0x78] <- 7:0[R0] -00000838: goto %00000351 - -00000351: -0000035b: R19 := mem[R31 + 0x10, el]:u64 -00000362: R29 := mem[R31, el]:u64 -00000367: R30 := mem[R31 + 8, el]:u64 -0000036b: R31 := R31 + 0x20 -00000370: 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] - -00000278: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x10, el]:u64 -0000068f: R16 := R16 + 0x10 -00000694: call R17 with noreturn - -0000083a: sub _fini(_fini_result) -00000858: _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 - -0000083b: sub _init(_init_result) -00000859: _init_result :: out u32 = low:32[R0] - -0000074a: -00000750: #6 := R31 - 0x10 -00000756: mem := mem with [#6, el]:u64 <- R29 -0000075c: mem := mem with [#6 + 8, el]:u64 <- R30 -00000760: R31 := #6 -00000766: R29 := R31 -0000076b: R30 := 0x6E8 -0000076d: call @call_weak_fn with return %0000076f - -0000076f: -00000774: R29 := mem[R31, el]:u64 -00000779: R30 := mem[R31 + 8, el]:u64 -0000077d: R31 := R31 + 0x10 -00000782: call R30 with noreturn - -0000083c: sub _start(_start_result) -0000085a: _start_result :: out u32 = low:32[R0] - -00000239: -0000023e: R29 := 0 -00000243: R30 := 0 -00000249: R5 := R0 -00000250: R1 := mem[R31, el]:u64 -00000256: R2 := R31 + 8 -0000025c: R6 := R31 -00000261: R0 := 0x1F000 -00000268: R0 := mem[R0 + 0xFD8, el]:u64 -0000026d: R3 := 0 -00000272: R4 := 0 -00000277: R30 := 0x7F0 -0000027a: call @__libc_start_main with return %0000027c - -0000027c: -0000027f: R30 := 0x7F4 -00000282: call @abort with return %0000083d - -0000083d: -0000083e: call @call_weak_fn with noreturn - -0000083f: sub abort() - - -00000280: -000006f0: R16 := 0x20000 -000006f7: R17 := mem[R16 + 0x38, el]:u64 -000006fd: R16 := R16 + 0x38 -00000702: call R17 with noreturn - -00000840: sub call_weak_fn(call_weak_fn_result) -0000085b: call_weak_fn_result :: out u32 = low:32[R0] - -00000284: -00000287: R0 := 0x1F000 -0000028e: R0 := mem[R0 + 0xFD0, el]:u64 -00000294: when R0 = 0 goto %00000292 -00000841: goto %00000554 - -00000292: -0000029a: call R30 with noreturn - -00000554: -00000557: goto @__gmon_start__ - -00000555: -000006da: R16 := 0x20000 -000006e1: R17 := mem[R16 + 0x30, el]:u64 -000006e7: R16 := R16 + 0x30 -000006ec: call R17 with noreturn - -00000842: sub deregister_tm_clones(deregister_tm_clones_result) -0000085c: deregister_tm_clones_result :: out u32 = low:32[R0] - -000002a0: -000002a3: R0 := 0x20000 -000002a9: R0 := R0 + 0x78 -000002ae: R1 := 0x20000 -000002b4: R1 := R1 + 0x78 -000002ba: #1 := ~R0 -000002bf: #2 := R1 + ~R0 -000002c5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002cb: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002cf: ZF := #2 + 1 = 0 -000002d3: NF := 63:63[#2 + 1] -000002d9: when ZF goto %000002d7 -00000843: goto %00000536 - -00000536: -00000539: R1 := 0x1F000 -00000540: R1 := mem[R1 + 0xFC0, el]:u64 -00000545: when R1 = 0 goto %000002d7 -00000844: goto %00000549 - -000002d7: -000002df: call R30 with noreturn - -00000549: -0000054d: R16 := R1 -00000552: call R16 with noreturn - -00000845: sub frame_dummy(frame_dummy_result) -0000085d: frame_dummy_result :: out u32 = low:32[R0] - -00000376: -00000378: call @register_tm_clones with noreturn - -00000846: sub free(free_ptr) -0000085e: free_ptr :: in out u64 = R0 - -000004b8: -0000071c: R16 := 0x20000 -00000723: R17 := mem[R16 + 0x48, el]:u64 -00000729: R16 := R16 + 0x48 -0000072e: 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] - -0000037a: -0000037e: #4 := R31 - 0x30 -00000384: mem := mem with [#4, el]:u64 <- R29 -0000038a: mem := mem with [#4 + 8, el]:u64 <- R30 -0000038e: R31 := #4 -00000394: R29 := R31 -0000039c: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000003a3: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003aa: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003af: R0 := 0xB -000003b4: R30 := 0x8F0 -000003b7: call @malloc with return %000003b9 - -000003b9: -000003bd: R1 := R0 -000003c2: R0 := 0x20000 -000003c8: R0 := R0 + 0x80 -000003d0: mem := mem with [R0, el]:u64 <- R1 -000003d5: R0 := 0x20000 -000003db: R0 := R0 + 0x80 -000003e2: R19 := mem[R0, el]:u64 -000003e7: R0 := 0x20000 -000003ed: R0 := R0 + 0x68 -000003f2: R30 := 0x918 -000003f5: call @strlen with return %000003f7 - -000003f7: -000003fb: R2 := R0 -00000400: R0 := 0x20000 -00000406: R1 := R0 + 0x68 -0000040c: R0 := R19 -00000411: R30 := 0x92C -00000414: call @memcpy with return %00000416 - -00000416: -00000419: R0 := 0x20000 -0000041f: R0 := R0 + 0x80 -00000426: R0 := mem[R0, el]:u64 -0000042b: R30 := 0x93C -0000042e: call @puts with return %00000430 - -00000430: -00000433: R0 := 0x20000 -00000439: R0 := R0 + 0x80 -00000440: R0 := mem[R0, el]:u64 -00000446: R0 := R0 + 4 -0000044e: mem := mem with [R31 + 0x28, el]:u64 <- R0 -00000455: R0 := mem[R31 + 0x28, el]:u64 -0000045c: mem := mem with [R0] <- 0 -00000461: R0 := 0x20000 -00000467: R0 := R0 + 0x80 -0000046e: R19 := mem[R0, el]:u64 -00000473: R0 := 0x20000 -00000479: R0 := R0 + 0x80 -00000480: R0 := mem[R0, el]:u64 -00000485: R30 := 0x974 -00000487: call @strlen with return %00000489 - -00000489: -0000048d: R2 := R0 -00000492: R1 := 1 -00000498: R0 := R19 -0000049d: R30 := 0x984 -000004a0: call @memset with return %000004a2 - -000004a2: -000004a5: R0 := 0x20000 -000004ab: R0 := R0 + 0x80 -000004b2: R0 := mem[R0, el]:u64 -000004b7: R30 := 0x994 -000004ba: call @free with return %000004bc - -000004bc: -000004bf: R0 := 0 -000004c6: R19 := mem[R31 + 0x10, el]:u64 -000004cd: R29 := mem[R31, el]:u64 -000004d2: R30 := mem[R31 + 8, el]:u64 -000004d6: R31 := R31 + 0x30 -000004db: call R30 with noreturn - -00000848: sub malloc(malloc_size, malloc_result) -00000862: malloc_size :: in u64 = R0 -00000863: malloc_result :: out u64 = R0 - -000003b5: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x20, el]:u64 -000006bb: R16 := R16 + 0x20 -000006c0: 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 - -00000412: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16, el]:u64 -00000663: R16 := R16 -00000668: 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 - -0000049e: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x28, el]:u64 -000006d1: R16 := R16 + 0x28 -000006d6: 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] - -0000042c: -00000706: R16 := 0x20000 -0000070d: R17 := mem[R16 + 0x40, el]:u64 -00000713: R16 := R16 + 0x40 -00000718: call R17 with noreturn - -0000084c: sub register_tm_clones(register_tm_clones_result) -0000086e: register_tm_clones_result :: out u32 = low:32[R0] - -000002e1: -000002e4: R0 := 0x20000 -000002ea: R0 := R0 + 0x78 -000002ef: R1 := 0x20000 -000002f5: R1 := R1 + 0x78 -000002fc: R1 := R1 + ~R0 + 1 -00000302: R2 := 0.63:63[R1] -00000309: R1 := R2 + (R1 ~>> 3) -0000030f: R1 := extend:64[63:1[R1]] -00000315: when R1 = 0 goto %00000313 -0000084d: goto %00000518 - -00000518: -0000051b: R2 := 0x1F000 -00000522: R2 := mem[R2 + 0xFE0, el]:u64 -00000527: when R2 = 0 goto %00000313 -0000084e: goto %0000052b - -00000313: -0000031b: call R30 with noreturn - -0000052b: -0000052f: R16 := R2 -00000534: call R16 with noreturn - -0000084f: sub strlen(strlen_s, strlen_result) -0000086f: strlen_s :: in u64 = R0 -00000870: strlen_result :: out u64 = R0 - -000003f3: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 8, el]:u64 -00000679: R16 := R16 + 8 -0000067e: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected deleted file mode 100644 index e0dd7a116..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.expected +++ /dev/null @@ -1,838 +0,0 @@ -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_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} 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 == 131200bv64); -const {:extern} $password_addr: bv64; -axiom ($password_addr == 131168bv64); -const {:extern} $stext_addr: bv64; -axiom ($stext_addr == 131176bv64); -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_be(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, 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, 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) == 0bv8); - free requires (memory_load8_le(mem, 131170bv64) == 0bv8); - free requires (memory_load8_le(mem, 131171bv64) == 0bv8); - 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) == 117bv8); - free requires (memory_load8_le(mem, 131177bv64) == 115bv8); - free requires (memory_load8_le(mem, 131178bv64) == 101bv8); - free requires (memory_load8_le(mem, 131179bv64) == 114bv8); - free requires (memory_load8_le(mem, 131180bv64) == 58bv8); - free requires (memory_load8_le(mem, 131181bv64) == 112bv8); - free requires (memory_load8_le(mem, 131182bv64) == 97bv8); - free requires (memory_load8_le(mem, 131183bv64) == 115bv8); - free requires (memory_load8_le(mem, 131184bv64) == 115bv8); - free requires (memory_load8_le(mem, 131185bv64) == 0bv8); - free requires (memory_load8_le(mem, 131186bv64) == 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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_R29 == old(Gamma_R29)); - free ensures (Gamma_R31 == old(Gamma_R31)); - free ensures (R19 == old(R19)); - 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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 #42: bv64; - var Gamma_#42: bool; - lmain: - assume {:captureState "lmain"} true; - #42, Gamma_#42 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); - assume {:captureState "%000003b5"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); - assume {:captureState "%000003ba"} true; - R31, Gamma_R31 := #42, Gamma_#42; - R29, Gamma_R29 := R31, Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); - assume {:captureState "%000003cd"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); - assume {:captureState "%000003d5"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); - assume {:captureState "%000003dd"} true; - R0, Gamma_R0 := 11bv64, true; - R30, Gamma_R30 := 2288bv64, true; - call malloc(); - goto l000003ed; - l000003ed: - assume {:captureState "l000003ed"} true; - R1, Gamma_R1 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - assert (L(mem, R0) ==> Gamma_R1); - mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%00000408"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; - R30, Gamma_R30 := 2328bv64, true; - call strlen(); - goto l00000434; - l00000434: - assume {:captureState "l00000434"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2348bv64, true; - call memcpy(); - goto l00000459; - l00000459: - assume {:captureState "l00000459"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2364bv64, true; - call puts(); - goto l00000476; - l00000476: - assume {:captureState "l00000476"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := bvadd64(R0, 4bv64), Gamma_R0; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); - assume {:captureState "%00000498"} true; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); - call rely(); - assert (L(mem, R0) ==> true); - mem, Gamma_mem := memory_store8_be(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%000004a8"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2420bv64, true; - call strlen(); - goto l000004db; - l000004db: - assume {:captureState "l000004db"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R1, Gamma_R1 := 1bv64, true; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2436bv64, true; - call memset(); - goto l000004fa; - l000004fa: - assume {:captureState "l000004fa"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2452bv64, true; - call #free(); - goto l00000517; - l00000517: - assume {:captureState "l00000517"} true; - R0, Gamma_R0 := 0bv64, true; - R19, Gamma_R19 := 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, 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index ceafc2ab2..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,143 +0,0 @@ - -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 -000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 - -Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 -0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 -0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 -0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 -0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 -0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 -0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 -0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 -0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 - -Symbol table '.dynsym' contains 15 entries: - Num: Value Size Type Bind Vis Ndx Name - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init - 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) - 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) - 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) - 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) - 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) - 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) - 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) - 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) - 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) - 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - -Symbol table '.symtab' contains 98 entries: - Num: Value Size Type Bind Vis Ndx Name - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp - 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id - 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag - 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash - 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym - 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr - 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version - 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r - 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn - 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt - 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init - 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt - 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text - 14: 00000000000009a4 0 SECTION LOCAL DEFAULT 14 .fini - 15: 00000000000009b8 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 00000000000009bc 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009f8 0 SECTION LOCAL DEFAULT 17 .eh_frame - 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array - 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array - 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic - 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got - 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt - 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss - 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment - 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o - 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d - 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag - 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 0000000000000a0c 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 00000000000009b8 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 00000000000009a4 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a20 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d - 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d - 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x - 58: 0000000000000a80 0 NOTYPE LOCAL DEFAULT 17 $d - 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 60: 0000000000000aa4 0 NOTYPE LOCAL DEFAULT 17 $d - 61: 0000000000000aa4 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 64: 00000000000009bc 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata - 76: 00000000000009a4 0 FUNC GLOBAL HIDDEN 14 _fini - 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 85: 00000000000009b8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end - 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf - 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext - 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 94: 00000000000008d4 208 FUNC GLOBAL DEFAULT 13 main - 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/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 index 80b63d038..7fbe7d8d3 100644 --- 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 @@ -67,10 +67,10 @@ 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_053, "%00000805"), Attrs([]), +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_054, "%00000806"), +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"), @@ -87,7 +87,7 @@ PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_635, "%00000663"), (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_055, "%00000807"), + "__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())]), @@ -118,7 +118,7 @@ UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),Littl 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_027, "%000007eb"), Attrs([]), +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"), @@ -128,7 +128,7 @@ 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_028, "%000007ec"), Attrs([]), +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"), @@ -153,7 +153,7 @@ 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_029, "%000007ed"), Attrs([]), Int(1,1), +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"), @@ -172,21 +172,21 @@ PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_164, "%0000048c"), (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_056, "%00000808"), + 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_057, "%00000809"), Attrs([Attr("c.layout","[signed : 32]"), +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_058, "%0000080a"), Attrs([Attr("c.layout","**[char : 8]"), +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_059, "%0000080b"), Attrs([Attr("c.layout","*[ : 8]"), +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_060, "%0000080c"), Attrs([Attr("c.layout","[signed : 32]"), +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"), @@ -202,7 +202,7 @@ 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_061, "%0000080d"), + "_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"), @@ -232,7 +232,7 @@ 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_062, "%0000080e"), + "_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"), @@ -268,7 +268,7 @@ 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_063, "%0000080f"), +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"), @@ -306,9 +306,9 @@ 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_034, "%000007f2"))))])), -Blk(Tid(2_034, "%000007f2"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_035, "%000007f3"), Attrs([]), 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([]), @@ -324,7 +324,7 @@ 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_064, "%00000810"), + "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"), @@ -336,7 +336,7 @@ LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(928, "@call_weak_fn"), 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_038, "%000007f6"), Attrs([]), +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"), @@ -358,7 +358,7 @@ PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_701, "%000006a5"), (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_065, "%00000811"), + "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())]), @@ -391,7 +391,7 @@ 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_040, "%000007f8"), Attrs([]), +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"), @@ -401,7 +401,7 @@ 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_041, "%000007f9"), Attrs([]), +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"), @@ -412,7 +412,7 @@ 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_066, "%00000812"), +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"), @@ -421,7 +421,7 @@ 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_067, "%00000813"), +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")]), @@ -436,13 +436,13 @@ 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_068, "%00000814"), +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_069, "%00000815"), +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_070, "%00000816"), +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"), @@ -585,10 +585,10 @@ PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(825, "%00000339"), (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_071, "%00000817"), Attrs([Attr("alloc-size","()"), + 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_072, "%00000818"), +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())]), @@ -605,17 +605,17 @@ PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_657, "%00000679"), (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_073, "%00000819"), Attrs([Attr("nonnull","()"), + 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_074, "%0000081a"), +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_075, "%0000081b"), Attrs([Attr("c.layout","[unsigned long : 64]"), +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_076, "%0000081c"), Attrs([Attr("c.layout","*[ : 8]"), +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([]), @@ -631,16 +631,16 @@ Var("R16",Imm(64)))]), Jmps([Call(Tid(1_569, "%00000621"), (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_077, "%0000081d"), Attrs([Attr("nonnull","()"), + 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_078, "%0000081e"), +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_079, "%0000081f"), +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_080, "%00000820"), Attrs([Attr("c.layout","*[ : 8]"), +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([]), @@ -656,10 +656,10 @@ PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_679, "%0000068f"), (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_081, "%00000821"), Attrs([Attr("c.layout","*[char : 8]"), + 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_082, "%00000822"), Attrs([Attr("c.layout","[signed : 32]"), +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([]), @@ -675,7 +675,7 @@ PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_745, "%000006d1"), (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_083, "%00000823"), + "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())]), @@ -704,7 +704,7 @@ 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_050, "%00000802"), Attrs([]), +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"), @@ -714,7 +714,7 @@ 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_051, "%00000803"), Attrs([]), +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"), @@ -727,10 +727,10 @@ 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_084, "%00000824"), Attrs([Attr("nonnull","()"), + 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_085, "%00000825"), +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"), 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 index 0c57e6945..a2ee8b549 100644 --- 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 @@ -1,6 +1,6 @@ -00000805: program +00000830: program 000007e9: sub __cxa_finalize(__cxa_finalize_result) -00000806: __cxa_finalize_result :: out u32 = low:32[R0] +00000831: __cxa_finalize_result :: out u32 = low:32[R0] 000004cd: 00000651: R16 := 0x20000 @@ -9,7 +9,7 @@ 00000663: call R17 with noreturn 000007ea: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000807: __do_global_dtors_aux_result :: out u32 = low:32[R0] +00000832: __do_global_dtors_aux_result :: out u32 = low:32[R0] 0000043b: 0000043f: #6 := R31 - 0x20 @@ -21,13 +21,13 @@ 00000462: R19 := 0x20000 00000469: R0 := pad:64[mem[R19 + 0x70]] 0000046f: when 0:0[R0] goto %0000046d -000007eb: goto %00000496 +00000826: goto %00000496 00000496: 00000499: R0 := 0x1F000 000004a0: R0 := mem[R0 + 0xFC8, el]:u64 000004a6: when R0 = 0 goto %000004a4 -000007ec: goto %000004bd +00000827: goto %000004bd 000004bd: 000004c0: R0 := 0x20000 @@ -42,7 +42,7 @@ 000004b0: 000004b3: R0 := 1 000004bb: mem := mem with [R19 + 0x70] <- 7:0[R0] -000007ed: goto %0000046d +00000828: goto %0000046d 0000046d: 00000477: R19 := mem[R31 + 0x10, el]:u64 @@ -52,11 +52,11 @@ 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) -00000808: __libc_start_main_main :: in u64 = R0 -00000809: __libc_start_main_arg2 :: in u32 = low:32[R1] -0000080a: __libc_start_main_arg3 :: in out u64 = R2 -0000080b: __libc_start_main_auxv :: in out u64 = R3 -0000080c: __libc_start_main_result :: out u32 = low:32[R0] +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 @@ -65,7 +65,7 @@ 0000064d: call R17 with noreturn 000007ef: sub _fini(_fini_result) -0000080d: _fini_result :: out u32 = low:32[R0] +00000838: _fini_result :: out u32 = low:32[R0] 00000020: 00000026: #0 := R31 - 0x10 @@ -79,7 +79,7 @@ 00000051: call R30 with noreturn 000007f0: sub _init(_init_result) -0000080e: _init_result :: out u32 = low:32[R0] +00000839: _init_result :: out u32 = low:32[R0] 00000703: 00000709: #8 := R31 - 0x10 @@ -97,7 +97,7 @@ 0000073b: call R30 with noreturn 000007f1: sub _start(_start_result) -0000080f: _start_result :: out u32 = low:32[R0] +0000083a: _start_result :: out u32 = low:32[R0] 00000355: 0000035a: R29 := 0 @@ -115,10 +115,10 @@ 00000398: 0000039b: R30 := 0x8B4 -0000039e: call @abort with return %000007f2 +0000039e: call @abort with return %00000829 -000007f2: -000007f3: call @call_weak_fn with noreturn +00000829: +0000082a: call @call_weak_fn with noreturn 000007f4: sub abort() @@ -130,13 +130,13 @@ 000006bb: call R17 with noreturn 000007f5: sub call_weak_fn(call_weak_fn_result) -00000810: call_weak_fn_result :: out u32 = low:32[R0] +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 -000007f6: goto %0000050d +0000082b: goto %0000050d 000003ae: 000003b6: call R30 with noreturn @@ -151,7 +151,7 @@ 000006a5: call R17 with noreturn 000007f7: sub deregister_tm_clones(deregister_tm_clones_result) -00000811: deregister_tm_clones_result :: out u32 = low:32[R0] +0000083c: deregister_tm_clones_result :: out u32 = low:32[R0] 000003bc: 000003bf: R0 := 0x20000 @@ -165,13 +165,13 @@ 000003eb: ZF := #5 + 1 = 0 000003ef: NF := 63:63[#5 + 1] 000003f5: when ZF goto %000003f3 -000007f8: goto %000004ef +0000082c: goto %000004ef 000004ef: 000004f2: R1 := 0x1F000 000004f9: R1 := mem[R1 + 0xFC0, el]:u64 000004fe: when R1 = 0 goto %000003f3 -000007f9: goto %00000502 +0000082d: goto %00000502 000003f3: 000003fb: call R30 with noreturn @@ -181,13 +181,13 @@ 0000050b: call R16 with noreturn 000007fa: sub frame_dummy(frame_dummy_result) -00000812: frame_dummy_result :: out u32 = low:32[R0] +0000083d: frame_dummy_result :: out u32 = low:32[R0] 00000492: 00000494: call @register_tm_clones with noreturn 000007fb: sub free(free_ptr) -00000813: free_ptr :: in out u64 = R0 +0000083e: free_ptr :: in out u64 = R0 00000306: 000006d5: R16 := 0x20000 @@ -196,9 +196,9 @@ 000006e7: call R17 with noreturn 000007fc: sub main(main_argc, main_argv, main_result) -00000814: main_argc :: in u32 = low:32[R0] -00000815: main_argv :: in out u64 = R1 -00000816: main_result :: out u32 = low:32[R0] +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 @@ -268,8 +268,8 @@ 00000339: call R30 with noreturn 000007fd: sub malloc(malloc_size, malloc_result) -00000817: malloc_size :: in u64 = R0 -00000818: malloc_result :: out u64 = R0 +00000842: malloc_size :: in u64 = R0 +00000843: malloc_result :: out u64 = R0 0000026d: 00000667: R16 := 0x20000 @@ -278,10 +278,10 @@ 00000679: call R17 with noreturn 000007fe: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000819: memcpy_dst :: in out u64 = R0 -0000081a: memcpy_src :: in out u64 = R1 -0000081b: memcpy_n :: in u64 = R2 -0000081c: memcpy_result :: out u64 = R0 +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 @@ -290,10 +290,10 @@ 00000621: call R17 with noreturn 000007ff: sub memset(memset_buf, memset_c, memset_n, memset_result) -0000081d: memset_buf :: in out u64 = R0 -0000081e: memset_c :: in u32 = low:32[R1] -0000081f: memset_n :: in u64 = R2 -00000820: memset_result :: out u64 = R0 +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 @@ -302,8 +302,8 @@ 0000068f: call R17 with noreturn 00000800: sub puts(puts_s, puts_result) -00000821: puts_s :: in u64 = R0 -00000822: puts_result :: out u32 = low:32[R0] +0000084c: puts_s :: in u64 = R0 +0000084d: puts_result :: out u32 = low:32[R0] 000002bc: 000006bf: R16 := 0x20000 @@ -312,7 +312,7 @@ 000006d1: call R17 with noreturn 00000801: sub register_tm_clones(register_tm_clones_result) -00000823: register_tm_clones_result :: out u32 = low:32[R0] +0000084e: register_tm_clones_result :: out u32 = low:32[R0] 000003fd: 00000400: R0 := 0x20000 @@ -324,13 +324,13 @@ 00000425: R1 := R2 + (R1 ~>> 3) 0000042b: R1 := extend:64[63:1[R1]] 00000431: when R1 = 0 goto %0000042f -00000802: goto %000004d1 +0000082e: goto %000004d1 000004d1: 000004d4: R2 := 0x1F000 000004db: R2 := mem[R2 + 0xFE0, el]:u64 000004e0: when R2 = 0 goto %0000042f -00000803: goto %000004e4 +0000082f: goto %000004e4 0000042f: 00000437: call R30 with noreturn @@ -340,8 +340,8 @@ 000004ed: call R16 with noreturn 00000804: sub strlen(strlen_s, strlen_result) -00000824: strlen_s :: in u64 = R0 -00000825: strlen_result :: out u64 = R0 +0000084f: strlen_s :: in u64 = R0 +00000850: strlen_result :: out u64 = R0 00000294: 00000625: R16 := 0x20000 diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index 35a8fa0a3..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,780 +0,0 @@ -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 2468 20 2468)\n(code-region 1984 484 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 208)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 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 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2468 20)\n(llvm:code-entry .text 1984 484)\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 2492 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2728)\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 2492 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2728)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2552 176 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 1984 484 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 208 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 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 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2728 0)\n(mapped 130504 683 64968)\n(named-region 0 2728 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 484 .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 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 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 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 484)\n(section 2468 20)\n(section 2488 4)\n(section 2492 60)\n(section 2552 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2728 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 208 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2468 2468)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), -Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), -Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), -Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed\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\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xa8\x0a\x00\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\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\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\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90"), -Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), -Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), -Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xd2\x66\x76\xa0\xef\x63\xb2\x78\xbd\x27\x60\x37\xbd\xe4\xdb\xdb\x0f\x31\x25\xed"), -Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), -Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), -Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), -Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), -Section(".fini", 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\x04\xfe\xff\xff\x50\x00\x00\x00\x54\xfe\xff\xff\x64\x00\x00\x00\x84\xfe\xff\xff\x78\x00\x00\x00\xc4\xfe\xff\xff\x8c\x00\x00\x00\x14\xff\xff\xff\xb0\x00\x00\x00\x18\xff\xff\xff\xc4\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\xac\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xe8\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x04\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x30\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\x5c\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x4c\xfe\xff\xff\xd0\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x70\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xa4\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), -Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), -Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x99\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x83\xff\xff\x97\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x7a\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x96\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\xe0\x17\x40\xf9\x1f\x00\x00\x39\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x6c\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x78\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x84\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xAA7), Attr("segment","02 0 2728")), -Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), -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,0x7F3), Attr("symbol-info","_start 0x7C0 52")), -Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), -Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), -Annotation(Region(0x8D4,0x9A3), Attr("symbol","\"main\"")), -Annotation(Region(0x8D4,0x9A3), Attr("symbol-info","main 0x8D4 208")), -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,0xAA7), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), -Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), -Annotation(Region(0x7C0,0x9A3), Attr("section","\".text\"")), -Annotation(Region(0x7C0,0x9A3), Attr("code-region","()")), -Annotation(Region(0x9A4,0x9B7), Attr("code-region","()"))]), -Program(Tid(2_171, "%0000087b"), Attrs([]), - Subs([Sub(Tid(2_100, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_172, "%0000087c"), - 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_300, "@__cxa_finalize"), - Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_688, "%00000698"), Attrs([Attr("address","0x740"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_695, "%0000069f"), 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_701, "%000006a5"), 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_706, "%000006aa"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_101, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_173, "%0000087d"), - 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(799, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(803, "%00000323"), - Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(809, "%00000329"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(815, "%0000032f"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(819, "%00000333"), Attrs([Attr("address","0x880"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(825, "%00000339"), - Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(833, "%00000341"), - Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(838, "%00000346"), Attrs([Attr("address","0x88C"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(845, "%0000034d"), Attrs([Attr("address","0x890"), -Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), -Jmps([Goto(Tid(851, "%00000353"), Attrs([Attr("address","0x894"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(849, "%00000351"))), -Goto(Tid(2_161, "%00000871"), Attrs([]), Int(1,1), -Direct(Tid(1_245, "%000004dd")))])), Blk(Tid(1_245, "%000004dd"), - Attrs([Attr("address","0x898")]), Phis([]), -Defs([Def(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x898"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_255, "%000004e7"), Attrs([Attr("address","0x89C"), -Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_259, "%000004eb"))), Goto(Tid(2_162, "%00000872"), Attrs([]), - Int(1,1), Direct(Tid(1_284, "%00000504")))])), Blk(Tid(1_284, "%00000504"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_287, "%00000507"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x8A8"), -Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), -Def(Tid(1_299, "%00000513"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), -Jmps([Call(Tid(1_302, "%00000516"), Attrs([Attr("address","0x8AC"), -Attr("insn","bl #-0x16c")]), Int(1,1), -(Direct(Tid(2_100, "@__cxa_finalize")),Direct(Tid(1_259, "%000004eb"))))])), -Blk(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_267, "%000004f3"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), -Jmps([Call(Tid(1_269, "%000004f5"), Attrs([Attr("address","0x8B0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_114, "@deregister_tm_clones")),Direct(Tid(1_271, "%000004f7"))))])), -Blk(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x8B4")]), Phis([]), -Defs([Def(Tid(1_274, "%000004fa"), Attrs([Attr("address","0x8B4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_282, "%00000502"), Attrs([Attr("address","0x8B8"), -Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), -Jmps([Goto(Tid(2_163, "%00000873"), Attrs([]), Int(1,1), -Direct(Tid(849, "%00000351")))])), Blk(Tid(849, "%00000351"), - Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(859, "%0000035b"), - Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), -Def(Tid(866, "%00000362"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(871, "%00000367"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(875, "%0000036b"), Attrs([Attr("address","0x8C0"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(880, "%00000370"), - Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_105, "@__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_174, "%0000087e"), - 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_175, "%0000087f"), 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_176, "%00000880"), 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_177, "%00000881"), 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_178, "%00000882"), 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(632, "@__libc_start_main"), - Attrs([Attr("address","0x730")]), Phis([]), -Defs([Def(Tid(1_666, "%00000682"), Attrs([Attr("address","0x730"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_673, "%00000689"), 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_679, "%0000068f"), 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_684, "%00000694"), - Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_106, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A4")]), - "_fini", Args([Arg(Tid(2_179, "%00000883"), - 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","0x9A4")]), Phis([]), Defs([Def(Tid(38, "%00000026"), - 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(44, "%0000002c"), 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(50, "%00000032"), 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(54, "%00000036"), Attrs([Attr("address","0x9A8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9AC"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(67, "%00000043"), 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(72, "%00000048"), 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(76, "%0000004c"), 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(81, "%00000051"), - Attrs([Attr("address","0x9B4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_107, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), - "_init", Args([Arg(Tid(2_180, "%00000884"), - 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_866, "@_init"), - Attrs([Attr("address","0x6D8")]), Phis([]), -Defs([Def(Tid(1_872, "%00000750"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_878, "%00000756"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_884, "%0000075c"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x6DC"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#6",Imm(64))), Def(Tid(1_894, "%00000766"), - Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_899, "%0000076b"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), - Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_901, "%0000076d"), - Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), -(Direct(Tid(2_112, "@call_weak_fn")),Direct(Tid(1_903, "%0000076f"))))])), -Blk(Tid(1_903, "%0000076f"), Attrs([Attr("address","0x6E8")]), Phis([]), -Defs([Def(Tid(1_908, "%00000774"), 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_913, "%00000779"), 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_917, "%0000077d"), 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_922, "%00000782"), - Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_108, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_181, "%00000885"), - 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(569, "@_start"), - Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(574, "%0000023e"), - Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(579, "%00000243"), - Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(585, "%00000249"), - Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(592, "%00000250"), - Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), - Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(598, "%00000256"), Attrs([Attr("address","0x7D4"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(604, "%0000025c"), - Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(609, "%00000261"), - Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(616, "%00000268"), - Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), -Def(Tid(621, "%0000026d"), Attrs([Attr("address","0x7E4"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(626, "%00000272"), Attrs([Attr("address","0x7E8"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(631, "%00000277"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), -Jmps([Call(Tid(634, "%0000027a"), Attrs([Attr("address","0x7EC"), -Attr("insn","bl #-0xbc")]), Int(1,1), -(Direct(Tid(2_105, "@__libc_start_main")),Direct(Tid(636, "%0000027c"))))])), -Blk(Tid(636, "%0000027c"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(639, "%0000027f"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), -Jmps([Call(Tid(642, "%00000282"), Attrs([Attr("address","0x7F0"), -Attr("insn","bl #-0x70")]), Int(1,1), -(Direct(Tid(2_111, "@abort")),Direct(Tid(2_164, "%00000874"))))])), -Blk(Tid(2_164, "%00000874"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_165, "%00000875"), Attrs([]), Int(1,1), -(Direct(Tid(2_112, "@call_weak_fn")),))]))])), Sub(Tid(2_111, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(640, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_776, "%000006f0"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_783, "%000006f7"), 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_789, "%000006fd"), 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_794, "%00000702"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_112, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), - "call_weak_fn", Args([Arg(Tid(2_182, "%00000886"), - 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(644, "@call_weak_fn"), - Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(647, "%00000287"), - Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(654, "%0000028e"), - Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(660, "%00000294"), Attrs([Attr("address","0x7FC"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(658, "%00000292"))), Goto(Tid(2_166, "%00000876"), Attrs([]), - Int(1,1), Direct(Tid(1_364, "%00000554")))])), Blk(Tid(658, "%00000292"), - Attrs([Attr("address","0x804")]), Phis([]), Defs([]), -Jmps([Call(Tid(666, "%0000029a"), Attrs([Attr("address","0x804"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_364, "%00000554"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_367, "%00000557"), Attrs([Attr("address","0x800"), -Attr("insn","b #-0x90")]), Int(1,1), -Direct(Tid(1_365, "@__gmon_start__")))])), Blk(Tid(1_365, "@__gmon_start__"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_754, "%000006da"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_761, "%000006e1"), 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_767, "%000006e7"), 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_772, "%000006ec"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_114, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), - "deregister_tm_clones", Args([Arg(Tid(2_183, "%00000887"), - 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(672, "@deregister_tm_clones"), - Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(675, "%000002a3"), - Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), - Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(686, "%000002ae"), Attrs([Attr("address","0x818"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(692, "%000002b4"), Attrs([Attr("address","0x81C"), -Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(698, "%000002ba"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(703, "%000002bf"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), -NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), -NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), -Def(Tid(719, "%000002cf"), Attrs([Attr("address","0x820"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(723, "%000002d3"), - Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(729, "%000002d9"), Attrs([Attr("address","0x824"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(727, "%000002d7"))), Goto(Tid(2_167, "%00000877"), Attrs([]), - Int(1,1), Direct(Tid(1_334, "%00000536")))])), Blk(Tid(1_334, "%00000536"), - Attrs([Attr("address","0x828")]), Phis([]), -Defs([Def(Tid(1_337, "%00000539"), Attrs([Attr("address","0x828"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_344, "%00000540"), Attrs([Attr("address","0x82C"), -Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_349, "%00000545"), Attrs([Attr("address","0x830"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(727, "%000002d7"))), Goto(Tid(2_168, "%00000878"), Attrs([]), - Int(1,1), Direct(Tid(1_353, "%00000549")))])), Blk(Tid(727, "%000002d7"), - Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), -Jmps([Call(Tid(735, "%000002df"), Attrs([Attr("address","0x83C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_353, "%00000549"), Attrs([Attr("address","0x834")]), Phis([]), -Defs([Def(Tid(1_357, "%0000054d"), Attrs([Attr("address","0x834"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_362, "%00000552"), Attrs([Attr("address","0x838"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_117, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_184, "%00000888"), - 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(886, "@frame_dummy"), - Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), -Jmps([Call(Tid(888, "%00000378"), Attrs([Attr("address","0x8D0"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_124, "@register_tm_clones")),))]))])), Sub(Tid(2_118, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_185, "%00000889"), - 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_208, "@free"), Attrs([Attr("address","0x7A0")]), - Phis([]), Defs([Def(Tid(1_820, "%0000071c"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_827, "%00000723"), 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_833, "%00000729"), 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_838, "%0000072e"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_119, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_186, "%0000088a"), - 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_187, "%0000088b"), - 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_188, "%0000088c"), - 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(890, "@main"), - Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(894, "%0000037e"), - Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(900, "%00000384"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8D4"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#4",Imm(64))), Def(Tid(916, "%00000394"), - Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(924, "%0000039c"), - Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(931, "%000003a3"), Attrs([Attr("address","0x8E0"), -Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(938, "%000003aa"), Attrs([Attr("address","0x8E4"), -Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(943, "%000003af"), Attrs([Attr("address","0x8E8"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(951, "%000003b7"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_120, "@malloc")),Direct(Tid(953, "%000003b9"))))])), -Blk(Tid(953, "%000003b9"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(957, "%000003bd"), Attrs([Attr("address","0x8F0"), -Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x8F4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x8F8"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(976, "%000003d0"), - Attrs([Attr("address","0x8FC"), Attr("insn","str x1, [x0]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x900"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x904"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(994, "%000003e2"), - Attrs([Attr("address","0x908"), Attr("insn","ldr x19, [x0]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(999, "%000003e7"), Attrs([Attr("address","0x90C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x910"), -Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_010, "%000003f2"), - Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), - Var("R30",Imm(64)), Int(2328,64))]), Jmps([Call(Tid(1_013, "%000003f5"), - Attrs([Attr("address","0x914"), Attr("insn","bl #-0x1f4")]), Int(1,1), -(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_015, "%000003f7"))))])), -Blk(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x918")]), Phis([]), -Defs([Def(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x918"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x91C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x920"), -Attr("insn","add x1, x0, #0x68")]), Var("R1",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_036, "%0000040c"), - Attrs([Attr("address","0x924"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_041, "%00000411"), - Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), - Var("R30",Imm(64)), Int(2348,64))]), Jmps([Call(Tid(1_044, "%00000414"), - Attrs([Attr("address","0x928"), Attr("insn","bl #-0x218")]), Int(1,1), -(Direct(Tid(2_121, "@memcpy")),Direct(Tid(1_046, "%00000416"))))])), -Blk(Tid(1_046, "%00000416"), Attrs([Attr("address","0x92C")]), Phis([]), -Defs([Def(Tid(1_049, "%00000419"), Attrs([Attr("address","0x92C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x930"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_062, "%00000426"), - Attrs([Attr("address","0x934"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_067, "%0000042b"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1a8")]), Var("R30",Imm(64)), Int(2364,64))]), -Jmps([Call(Tid(1_070, "%0000042e"), Attrs([Attr("address","0x938"), -Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_123, "@puts")),Direct(Tid(1_072, "%00000430"))))])), -Blk(Tid(1_072, "%00000430"), Attrs([Attr("address","0x93C")]), Phis([]), -Defs([Def(Tid(1_075, "%00000433"), Attrs([Attr("address","0x93C"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x940"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_088, "%00000440"), - Attrs([Attr("address","0x944"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_094, "%00000446"), Attrs([Attr("address","0x948"), -Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_102, "%0000044e"), - Attrs([Attr("address","0x94C"), Attr("insn","str x0, [sp, #0x28]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_109, "%00000455"), Attrs([Attr("address","0x950"), -Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), -Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x954"), -Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),LittleEndian(),8)), -Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x958"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_127, "%00000467"), Attrs([Attr("address","0x95C"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_134, "%0000046e"), - Attrs([Attr("address","0x960"), Attr("insn","ldr x19, [x0]")]), - Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_139, "%00000473"), Attrs([Attr("address","0x964"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x968"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_152, "%00000480"), - Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x970"), -Attr("insn","bl #-0x250")]), Var("R30",Imm(64)), Int(2420,64))]), -Jmps([Call(Tid(1_159, "%00000487"), Attrs([Attr("address","0x970"), -Attr("insn","bl #-0x250")]), Int(1,1), -(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_161, "%00000489"))))])), -Blk(Tid(1_161, "%00000489"), Attrs([Attr("address","0x974")]), Phis([]), -Defs([Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x974"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_170, "%00000492"), Attrs([Attr("address","0x978"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_176, "%00000498"), Attrs([Attr("address","0x97C"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_181, "%0000049d"), Attrs([Attr("address","0x980"), -Attr("insn","bl #-0x220")]), Var("R30",Imm(64)), Int(2436,64))]), -Jmps([Call(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x980"), -Attr("insn","bl #-0x220")]), Int(1,1), -(Direct(Tid(2_122, "@memset")),Direct(Tid(1_186, "%000004a2"))))])), -Blk(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x984")]), Phis([]), -Defs([Def(Tid(1_189, "%000004a5"), Attrs([Attr("address","0x984"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x988"), -Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_202, "%000004b2"), - Attrs([Attr("address","0x98C"), Attr("insn","ldr x0, [x0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_207, "%000004b7"), Attrs([Attr("address","0x990"), -Attr("insn","bl #-0x1f0")]), Var("R30",Imm(64)), Int(2452,64))]), -Jmps([Call(Tid(1_210, "%000004ba"), Attrs([Attr("address","0x990"), -Attr("insn","bl #-0x1f0")]), Int(1,1), -(Direct(Tid(2_118, "@free")),Direct(Tid(1_212, "%000004bc"))))])), -Blk(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x994")]), Phis([]), -Defs([Def(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x994"), -Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_222, "%000004c6"), Attrs([Attr("address","0x998"), -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_229, "%000004cd"), 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_234, "%000004d2"), 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_238, "%000004d6"), 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_243, "%000004db"), - Attrs([Attr("address","0x9A0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_120, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_189, "%0000088d"), 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_190, "%0000088e"), - 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(949, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_710, "%000006ae"), Attrs([Attr("address","0x750"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_717, "%000006b5"), 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_723, "%000006bb"), 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_728, "%000006c0"), - Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_121, "@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_191, "%0000088f"), 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_192, "%00000890"), - 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_193, "%00000891"), 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_194, "%00000892"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_042, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), -Defs([Def(Tid(1_622, "%00000656"), Attrs([Attr("address","0x710"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_629, "%0000065d"), 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_635, "%00000663"), Attrs([Attr("address","0x718"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_640, "%00000668"), - Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_122, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x760"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_195, "%00000893"), 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_196, "%00000894"), - 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_197, "%00000895"), - 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_198, "%00000896"), 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_182, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_732, "%000006c4"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_739, "%000006cb"), 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_745, "%000006d1"), 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_750, "%000006d6"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_123, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x790"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_199, "%00000897"), 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_200, "%00000898"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_068, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_798, "%00000706"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_805, "%0000070d"), 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_811, "%00000713"), 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_816, "%00000718"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_124, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), - "register_tm_clones", Args([Arg(Tid(2_201, "%00000899"), - 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(737, "@register_tm_clones"), Attrs([Attr("address","0x840")]), - Phis([]), Defs([Def(Tid(740, "%000002e4"), Attrs([Attr("address","0x840"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(746, "%000002ea"), Attrs([Attr("address","0x844"), -Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(751, "%000002ef"), - Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(757, "%000002f5"), - Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(764, "%000002fc"), Attrs([Attr("address","0x850"), -Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), -Def(Tid(770, "%00000302"), Attrs([Attr("address","0x854"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(777, "%00000309"), Attrs([Attr("address","0x858"), -Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), -PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), -Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x85C"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(789, "%00000315"), Attrs([Attr("address","0x860"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(787, "%00000313"))), Goto(Tid(2_169, "%00000879"), Attrs([]), - Int(1,1), Direct(Tid(1_304, "%00000518")))])), Blk(Tid(1_304, "%00000518"), - Attrs([Attr("address","0x864")]), Phis([]), -Defs([Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x864"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_314, "%00000522"), Attrs([Attr("address","0x868"), -Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), -Jmps([Goto(Tid(1_319, "%00000527"), Attrs([Attr("address","0x86C"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(787, "%00000313"))), Goto(Tid(2_170, "%0000087a"), Attrs([]), - Int(1,1), Direct(Tid(1_323, "%0000052b")))])), Blk(Tid(787, "%00000313"), - Attrs([Attr("address","0x878")]), Phis([]), Defs([]), -Jmps([Call(Tid(795, "%0000031b"), Attrs([Attr("address","0x878"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_323, "%0000052b"), Attrs([Attr("address","0x870")]), Phis([]), -Defs([Def(Tid(1_327, "%0000052f"), Attrs([Attr("address","0x870"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_332, "%00000534"), Attrs([Attr("address","0x874"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_127, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_202, "%0000089a"), 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_203, "%0000089b"), - Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), -Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_011, "@strlen"), - Attrs([Attr("address","0x720")]), Phis([]), -Defs([Def(Tid(1_644, "%0000066c"), Attrs([Attr("address","0x720"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_651, "%00000673"), 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_657, "%00000679"), 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_662, "%0000067e"), - 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index a2379f371..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,363 +0,0 @@ -0000087b: program -00000834: sub __cxa_finalize(__cxa_finalize_result) -0000087c: __cxa_finalize_result :: out u32 = low:32[R0] - -00000514: -00000698: R16 := 0x20000 -0000069f: R17 := mem[R16 + 0x18, el]:u64 -000006a5: R16 := R16 + 0x18 -000006aa: call R17 with noreturn - -00000835: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -0000087d: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -0000031f: -00000323: #3 := R31 - 0x20 -00000329: mem := mem with [#3, el]:u64 <- R29 -0000032f: mem := mem with [#3 + 8, el]:u64 <- R30 -00000333: R31 := #3 -00000339: R29 := R31 -00000341: mem := mem with [R31 + 0x10, el]:u64 <- R19 -00000346: R19 := 0x20000 -0000034d: R0 := pad:64[mem[R19 + 0x78]] -00000353: when 0:0[R0] goto %00000351 -00000871: goto %000004dd - -000004dd: -000004e0: R0 := 0x1F000 -000004e7: R0 := mem[R0 + 0xFC8, el]:u64 -000004ed: when R0 = 0 goto %000004eb -00000872: goto %00000504 - -00000504: -00000507: R0 := 0x20000 -0000050e: R0 := mem[R0 + 0x58, el]:u64 -00000513: R30 := 0x8B0 -00000516: call @__cxa_finalize with return %000004eb - -000004eb: -000004f3: R30 := 0x8B4 -000004f5: call @deregister_tm_clones with return %000004f7 - -000004f7: -000004fa: R0 := 1 -00000502: mem := mem with [R19 + 0x78] <- 7:0[R0] -00000873: goto %00000351 - -00000351: -0000035b: R19 := mem[R31 + 0x10, el]:u64 -00000362: R29 := mem[R31, el]:u64 -00000367: R30 := mem[R31 + 8, el]:u64 -0000036b: R31 := R31 + 0x20 -00000370: 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) -0000087e: __libc_start_main_main :: in u64 = R0 -0000087f: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000880: __libc_start_main_arg3 :: in out u64 = R2 -00000881: __libc_start_main_auxv :: in out u64 = R3 -00000882: __libc_start_main_result :: out u32 = low:32[R0] - -00000278: -00000682: R16 := 0x20000 -00000689: R17 := mem[R16 + 0x10, el]:u64 -0000068f: R16 := R16 + 0x10 -00000694: call R17 with noreturn - -0000083a: sub _fini(_fini_result) -00000883: _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 - -0000083b: sub _init(_init_result) -00000884: _init_result :: out u32 = low:32[R0] - -0000074a: -00000750: #6 := R31 - 0x10 -00000756: mem := mem with [#6, el]:u64 <- R29 -0000075c: mem := mem with [#6 + 8, el]:u64 <- R30 -00000760: R31 := #6 -00000766: R29 := R31 -0000076b: R30 := 0x6E8 -0000076d: call @call_weak_fn with return %0000076f - -0000076f: -00000774: R29 := mem[R31, el]:u64 -00000779: R30 := mem[R31 + 8, el]:u64 -0000077d: R31 := R31 + 0x10 -00000782: call R30 with noreturn - -0000083c: sub _start(_start_result) -00000885: _start_result :: out u32 = low:32[R0] - -00000239: -0000023e: R29 := 0 -00000243: R30 := 0 -00000249: R5 := R0 -00000250: R1 := mem[R31, el]:u64 -00000256: R2 := R31 + 8 -0000025c: R6 := R31 -00000261: R0 := 0x1F000 -00000268: R0 := mem[R0 + 0xFD8, el]:u64 -0000026d: R3 := 0 -00000272: R4 := 0 -00000277: R30 := 0x7F0 -0000027a: call @__libc_start_main with return %0000027c - -0000027c: -0000027f: R30 := 0x7F4 -00000282: call @abort with return %00000874 - -00000874: -00000875: call @call_weak_fn with noreturn - -0000083f: sub abort() - - -00000280: -000006f0: R16 := 0x20000 -000006f7: R17 := mem[R16 + 0x38, el]:u64 -000006fd: R16 := R16 + 0x38 -00000702: call R17 with noreturn - -00000840: sub call_weak_fn(call_weak_fn_result) -00000886: call_weak_fn_result :: out u32 = low:32[R0] - -00000284: -00000287: R0 := 0x1F000 -0000028e: R0 := mem[R0 + 0xFD0, el]:u64 -00000294: when R0 = 0 goto %00000292 -00000876: goto %00000554 - -00000292: -0000029a: call R30 with noreturn - -00000554: -00000557: goto @__gmon_start__ - -00000555: -000006da: R16 := 0x20000 -000006e1: R17 := mem[R16 + 0x30, el]:u64 -000006e7: R16 := R16 + 0x30 -000006ec: call R17 with noreturn - -00000842: sub deregister_tm_clones(deregister_tm_clones_result) -00000887: deregister_tm_clones_result :: out u32 = low:32[R0] - -000002a0: -000002a3: R0 := 0x20000 -000002a9: R0 := R0 + 0x78 -000002ae: R1 := 0x20000 -000002b4: R1 := R1 + 0x78 -000002ba: #1 := ~R0 -000002bf: #2 := R1 + ~R0 -000002c5: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002cb: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002cf: ZF := #2 + 1 = 0 -000002d3: NF := 63:63[#2 + 1] -000002d9: when ZF goto %000002d7 -00000877: goto %00000536 - -00000536: -00000539: R1 := 0x1F000 -00000540: R1 := mem[R1 + 0xFC0, el]:u64 -00000545: when R1 = 0 goto %000002d7 -00000878: goto %00000549 - -000002d7: -000002df: call R30 with noreturn - -00000549: -0000054d: R16 := R1 -00000552: call R16 with noreturn - -00000845: sub frame_dummy(frame_dummy_result) -00000888: frame_dummy_result :: out u32 = low:32[R0] - -00000376: -00000378: call @register_tm_clones with noreturn - -00000846: sub free(free_ptr) -00000889: free_ptr :: in out u64 = R0 - -000004b8: -0000071c: R16 := 0x20000 -00000723: R17 := mem[R16 + 0x48, el]:u64 -00000729: R16 := R16 + 0x48 -0000072e: call R17 with noreturn - -00000847: sub main(main_argc, main_argv, main_result) -0000088a: main_argc :: in u32 = low:32[R0] -0000088b: main_argv :: in out u64 = R1 -0000088c: main_result :: out u32 = low:32[R0] - -0000037a: -0000037e: #4 := R31 - 0x30 -00000384: mem := mem with [#4, el]:u64 <- R29 -0000038a: mem := mem with [#4 + 8, el]:u64 <- R30 -0000038e: R31 := #4 -00000394: R29 := R31 -0000039c: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000003a3: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003aa: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003af: R0 := 0xB -000003b4: R30 := 0x8F0 -000003b7: call @malloc with return %000003b9 - -000003b9: -000003bd: R1 := R0 -000003c2: R0 := 0x20000 -000003c8: R0 := R0 + 0x80 -000003d0: mem := mem with [R0, el]:u64 <- R1 -000003d5: R0 := 0x20000 -000003db: R0 := R0 + 0x80 -000003e2: R19 := mem[R0, el]:u64 -000003e7: R0 := 0x20000 -000003ed: R0 := R0 + 0x68 -000003f2: R30 := 0x918 -000003f5: call @strlen with return %000003f7 - -000003f7: -000003fb: R2 := R0 -00000400: R0 := 0x20000 -00000406: R1 := R0 + 0x68 -0000040c: R0 := R19 -00000411: R30 := 0x92C -00000414: call @memcpy with return %00000416 - -00000416: -00000419: R0 := 0x20000 -0000041f: R0 := R0 + 0x80 -00000426: R0 := mem[R0, el]:u64 -0000042b: R30 := 0x93C -0000042e: call @puts with return %00000430 - -00000430: -00000433: R0 := 0x20000 -00000439: R0 := R0 + 0x80 -00000440: R0 := mem[R0, el]:u64 -00000446: R0 := R0 + 4 -0000044e: mem := mem with [R31 + 0x28, el]:u64 <- R0 -00000455: R0 := mem[R31 + 0x28, el]:u64 -0000045c: mem := mem with [R0] <- 0 -00000461: R0 := 0x20000 -00000467: R0 := R0 + 0x80 -0000046e: R19 := mem[R0, el]:u64 -00000473: R0 := 0x20000 -00000479: R0 := R0 + 0x80 -00000480: R0 := mem[R0, el]:u64 -00000485: R30 := 0x974 -00000487: call @strlen with return %00000489 - -00000489: -0000048d: R2 := R0 -00000492: R1 := 1 -00000498: R0 := R19 -0000049d: R30 := 0x984 -000004a0: call @memset with return %000004a2 - -000004a2: -000004a5: R0 := 0x20000 -000004ab: R0 := R0 + 0x80 -000004b2: R0 := mem[R0, el]:u64 -000004b7: R30 := 0x994 -000004ba: call @free with return %000004bc - -000004bc: -000004bf: R0 := 0 -000004c6: R19 := mem[R31 + 0x10, el]:u64 -000004cd: R29 := mem[R31, el]:u64 -000004d2: R30 := mem[R31 + 8, el]:u64 -000004d6: R31 := R31 + 0x30 -000004db: call R30 with noreturn - -00000848: sub malloc(malloc_size, malloc_result) -0000088d: malloc_size :: in u64 = R0 -0000088e: malloc_result :: out u64 = R0 - -000003b5: -000006ae: R16 := 0x20000 -000006b5: R17 := mem[R16 + 0x20, el]:u64 -000006bb: R16 := R16 + 0x20 -000006c0: call R17 with noreturn - -00000849: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -0000088f: memcpy_dst :: in out u64 = R0 -00000890: memcpy_src :: in out u64 = R1 -00000891: memcpy_n :: in u64 = R2 -00000892: memcpy_result :: out u64 = R0 - -00000412: -00000656: R16 := 0x20000 -0000065d: R17 := mem[R16, el]:u64 -00000663: R16 := R16 -00000668: call R17 with noreturn - -0000084a: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000893: memset_buf :: in out u64 = R0 -00000894: memset_c :: in u32 = low:32[R1] -00000895: memset_n :: in u64 = R2 -00000896: memset_result :: out u64 = R0 - -0000049e: -000006c4: R16 := 0x20000 -000006cb: R17 := mem[R16 + 0x28, el]:u64 -000006d1: R16 := R16 + 0x28 -000006d6: call R17 with noreturn - -0000084b: sub puts(puts_s, puts_result) -00000897: puts_s :: in u64 = R0 -00000898: puts_result :: out u32 = low:32[R0] - -0000042c: -00000706: R16 := 0x20000 -0000070d: R17 := mem[R16 + 0x40, el]:u64 -00000713: R16 := R16 + 0x40 -00000718: call R17 with noreturn - -0000084c: sub register_tm_clones(register_tm_clones_result) -00000899: register_tm_clones_result :: out u32 = low:32[R0] - -000002e1: -000002e4: R0 := 0x20000 -000002ea: R0 := R0 + 0x78 -000002ef: R1 := 0x20000 -000002f5: R1 := R1 + 0x78 -000002fc: R1 := R1 + ~R0 + 1 -00000302: R2 := 0.63:63[R1] -00000309: R1 := R2 + (R1 ~>> 3) -0000030f: R1 := extend:64[63:1[R1]] -00000315: when R1 = 0 goto %00000313 -00000879: goto %00000518 - -00000518: -0000051b: R2 := 0x1F000 -00000522: R2 := mem[R2 + 0xFE0, el]:u64 -00000527: when R2 = 0 goto %00000313 -0000087a: goto %0000052b - -00000313: -0000031b: call R30 with noreturn - -0000052b: -0000052f: R16 := R2 -00000534: call R16 with noreturn - -0000084f: sub strlen(strlen_s, strlen_result) -0000089a: strlen_s :: in u64 = R0 -0000089b: strlen_result :: out u64 = R0 - -000003f3: -0000066c: R16 := 0x20000 -00000673: R17 := mem[R16 + 8, el]:u64 -00000679: R16 := R16 + 8 -0000067e: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected deleted file mode 100644 index e0dd7a116..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.expected +++ /dev/null @@ -1,838 +0,0 @@ -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_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} 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 == 131200bv64); -const {:extern} $password_addr: bv64; -axiom ($password_addr == 131168bv64); -const {:extern} $stext_addr: bv64; -axiom ($stext_addr == 131176bv64); -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_be(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, 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, 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) == 0bv8); - free requires (memory_load8_le(mem, 131170bv64) == 0bv8); - free requires (memory_load8_le(mem, 131171bv64) == 0bv8); - 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) == 117bv8); - free requires (memory_load8_le(mem, 131177bv64) == 115bv8); - free requires (memory_load8_le(mem, 131178bv64) == 101bv8); - free requires (memory_load8_le(mem, 131179bv64) == 114bv8); - free requires (memory_load8_le(mem, 131180bv64) == 58bv8); - free requires (memory_load8_le(mem, 131181bv64) == 112bv8); - free requires (memory_load8_le(mem, 131182bv64) == 97bv8); - free requires (memory_load8_le(mem, 131183bv64) == 115bv8); - free requires (memory_load8_le(mem, 131184bv64) == 115bv8); - free requires (memory_load8_le(mem, 131185bv64) == 0bv8); - free requires (memory_load8_le(mem, 131186bv64) == 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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_R29 == old(Gamma_R29)); - free ensures (Gamma_R31 == old(Gamma_R31)); - free ensures (R19 == old(R19)); - 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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 #42: bv64; - var Gamma_#42: bool; - lmain: - assume {:captureState "lmain"} true; - #42, Gamma_#42 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); - assume {:captureState "%000003b5"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); - assume {:captureState "%000003ba"} true; - R31, Gamma_R31 := #42, Gamma_#42; - R29, Gamma_R29 := R31, Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); - assume {:captureState "%000003cd"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); - assume {:captureState "%000003d5"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); - assume {:captureState "%000003dd"} true; - R0, Gamma_R0 := 11bv64, true; - R30, Gamma_R30 := 2288bv64, true; - call malloc(); - goto l000003ed; - l000003ed: - assume {:captureState "l000003ed"} true; - R1, Gamma_R1 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - assert (L(mem, R0) ==> Gamma_R1); - mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%00000408"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 104bv64), Gamma_R0; - R30, Gamma_R30 := 2328bv64, true; - call strlen(); - goto l00000434; - l00000434: - assume {:captureState "l00000434"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := 131072bv64, true; - R1, Gamma_R1 := bvadd64(R0, 104bv64), Gamma_R0; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2348bv64, true; - call memcpy(); - goto l00000459; - l00000459: - assume {:captureState "l00000459"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2364bv64, true; - call puts(); - goto l00000476; - l00000476: - assume {:captureState "l00000476"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := bvadd64(R0, 4bv64), Gamma_R0; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); - assume {:captureState "%00000498"} true; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); - call rely(); - assert (L(mem, R0) ==> true); - mem, Gamma_mem := memory_store8_be(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%000004a8"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2420bv64, true; - call strlen(); - goto l000004db; - l000004db: - assume {:captureState "l000004db"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R1, Gamma_R1 := 1bv64, true; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2436bv64, true; - call memset(); - goto l000004fa; - l000004fa: - assume {:captureState "l000004fa"} true; - R0, Gamma_R0 := 131072bv64, true; - R0, Gamma_R0 := bvadd64(R0, 128bv64), Gamma_R0; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2452bv64, true; - call #free(); - goto l00000517; - l00000517: - assume {:captureState "l00000517"} true; - R0, Gamma_R0 := 0bv64, true; - R19, Gamma_R19 := 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, 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free requires (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free requires (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free requires (memory_load8_le(mem, 131033bv64) == 8bv8); - 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, 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, 130504bv64) == 208bv8); - free ensures (memory_load8_le(mem, 130505bv64) == 8bv8); - 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) == 128bv8); - free ensures (memory_load8_le(mem, 130513bv64) == 8bv8); - 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) == 212bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 8bv8); - 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_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index ceafc2ab2..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_no_plt_no_pic/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,143 +0,0 @@ - -Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 -000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 -000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 - -Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 -0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 -0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 -0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 -0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 -0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 -0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 -0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 -0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 - -Symbol table '.dynsym' contains 15 entries: - Num: Value Size Type Bind Vis Ndx Name - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init - 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) - 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) - 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) - 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) - 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) - 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) - 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) - 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) - 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) - 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - -Symbol table '.symtab' contains 98 entries: - Num: Value Size Type Bind Vis Ndx Name - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND - 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp - 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id - 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag - 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash - 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym - 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr - 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version - 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r - 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn - 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt - 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init - 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt - 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text - 14: 00000000000009a4 0 SECTION LOCAL DEFAULT 14 .fini - 15: 00000000000009b8 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 00000000000009bc 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 00000000000009f8 0 SECTION LOCAL DEFAULT 17 .eh_frame - 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array - 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array - 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic - 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got - 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt - 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss - 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment - 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o - 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d - 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag - 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 0000000000000a0c 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 00000000000009b8 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 00000000000009a4 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a20 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d - 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d - 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x - 58: 0000000000000a80 0 NOTYPE LOCAL DEFAULT 17 $d - 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 60: 0000000000000aa4 0 NOTYPE LOCAL DEFAULT 17 $d - 61: 0000000000000aa4 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 64: 00000000000009bc 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x - 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata - 76: 00000000000009a4 0 FUNC GLOBAL HIDDEN 14 _fini - 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 85: 00000000000009b8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end - 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start - 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf - 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext - 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 94: 00000000000008d4 208 FUNC GLOBAL DEFAULT 13 main - 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt deleted file mode 100644 index 46fa898b3..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.adt +++ /dev/null @@ -1,799 +0,0 @@ -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 2532 20 2532)\n(code-region 2048 484 2048)\n(code-region 1824 192 1824)\n(code-region 1800 24 1800)\n(code-start 2100)\n(code-start 2048)\n(code-start 2324)\n(entry-point 2048)\n(external-reference 130992 _ITM_deregisterTMCloneTable)\n(external-reference 131000 __cxa_finalize)\n(external-reference 131008 __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 1800 0)\n(llvm:code-entry main 2324 208)\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 2532 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 2532 20)\n(llvm:code-entry .text 2048 484)\n(llvm:code-entry .plt 1824 192)\n(llvm:code-entry .init 1800 24)\n(llvm:elf-program-header 08 64952 584)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2556 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64968 480)\n(llvm:elf-program-header 03 64952 699)\n(llvm:elf-program-header 02 0 2792)\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 2556 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130504 480)\n(llvm:elf-virtual-program-header 03 130488 720)\n(llvm:elf-virtual-program-header 02 0 2792)\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 131008 __gmon_start__)\n(llvm:name-reference 131000 __cxa_finalize)\n(llvm:name-reference 130992 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68731)\n(llvm:section-entry .strtab 0 691 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 130984 64 65448)\n(llvm:section-entry .dynamic 130504 480 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 2616 176 2616)\n(llvm:section-entry .eh_frame_hdr 2556 60 2556)\n(llvm:section-entry .rodata 2552 4 2552)\n(llvm:section-entry .fini 2532 20 2532)\n(llvm:section-entry .text 2048 484 2048)\n(llvm:section-entry .plt 1824 192 1824)\n(llvm:section-entry .init 1800 24 1800)\n(llvm:section-entry .rela.plt 1560 240 1560)\n(llvm:section-entry .rela.dyn 1320 240 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 1800 0 1800 1800)\n(llvm:symbol-entry main 2324 208 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 2532 0 2532 2532)\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 2792 0)\n(mapped 130488 699 64952)\n(named-region 0 2792 02)\n(named-region 130488 720 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 240 .rela.dyn)\n(named-region 1560 240 .rela.plt)\n(named-region 1800 24 .init)\n(named-region 1824 192 .plt)\n(named-region 2048 484 .text)\n(named-region 2532 20 .fini)\n(named-region 2552 4 .rodata)\n(named-region 2556 60 .eh_frame_hdr)\n(named-region 2616 176 .eh_frame)\n(named-region 130488 8 .init_array)\n(named-region 130496 8 .fini_array)\n(named-region 130504 480 .dynamic)\n(named-region 130984 64 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .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 2532 _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 1800 _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 240)\n(section 1560 240)\n(section 1800 24)\n(section 1824 192)\n(section 2048 484)\n(section 2532 20)\n(section 2552 4)\n(section 2556 60)\n(section 2616 176)\n(section 130488 8)\n(section 130496 8)\n(section 130504 480)\n(section 130984 64)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2792 true false true)\n(segment 130488 720 true true false)\n(subarch v8)\n(symbol-chunk 2100 20 2100)\n(symbol-chunk 2048 52 2048)\n(symbol-chunk 2324 208 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 2532 2532)\n(symbol-value 2048 2048)\n(symbol-value 2324 2324)\n(symbol-value 1800 1800)\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\x80\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\xe8\x0a\x00\x00\x00\x00\x00\x00\xe8\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\x80\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\xe8\x0a\x00\x00\x00\x00\x00\x00\xe8\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\xbb\x02\x00\x00\x00\x00\x00\x00\xd0\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\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\xfc\x09\x00\x00\x00\x00\x00\x00\xfc\x09\x00\x00\x00\x00\x00\x00\xfc\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\xa8\x0f\x4d\x6a\xc2\x15\x06\x60\x14\x02\xc2\x60\xa5\x03\xbd\x39\x88\x55\x1c\x12\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x80\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\xe8\x0a\x00\x00\x00\x00\x00\x00\xe8\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\xbb\x02\x00\x00\x00\x00\x00\x00\xd0\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\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\xfc\x09\x00\x00\x00\x00\x00\x00\xfc\x09\x00\x00\x00\x00\x00\x00\xfc\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\xa8\x0f\x4d\x6a\xc2\x15\x06\x60\x14\x02\xc2\x60\xa5\x03\xbd\x39\x88\x55\x1c\x12\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\x08\x07\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\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x68\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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\x48\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x95\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"), -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\xa8\x0f\x4d\x6a\xc2\x15\x06\x60\x14\x02\xc2\x60\xa5\x03\xbd\x39\x88\x55\x1c\x12"), -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\x08\x07\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, "\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\xc8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x00\x02\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x68\x00\x02\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\xb0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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", 0x618, "\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", 0x708, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x48\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x720, "\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", 0x9E4, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9F8, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9FC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x04\xfe\xff\xff\x50\x00\x00\x00\x54\xfe\xff\xff\x64\x00\x00\x00\x84\xfe\xff\xff\x78\x00\x00\x00\xc4\xfe\xff\xff\x8c\x00\x00\x00\x14\xff\xff\xff\xb0\x00\x00\x00\x18\xff\xff\xff\xc4\x00\x00\x00"), -Section(".eh_frame", 0xA38, "\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\xac\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xe8\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x04\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x30\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\x5c\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x4c\xfe\xff\xff\xd0\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x70\xde\xdd\xd3\x0e\x00\x00\x00\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\x08\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xe4\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\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\x18\x06\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\xf0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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", 0x1FFA8, "\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\x80\x00\x02\x00\x00\x00\x00\x00\x68\x00\x02\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\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x20\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\x00\x00\x00\x00\x00\x00\x00\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\xcd\xff\xff\x97\xe0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe0\x47\xf9\x40\x00\x00\xb4\xd8\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xd8\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xdc\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa1\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x60\x01\x80\xd2\x95\xff\xff\x97\xe1\x03\x00\xaa\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x01\x00\x00\xf9\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x13\x00\x40\xf9\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x7f\xff\xff\x97\xe2\x03\x00\xaa\xe0\x00\x00\xf0\x01\xe8\x47\xf9\xe0\x03\x13\xaa\x76\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x92\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x00\x10\x00\x91\xe0\x17\x00\xf9\xe0\x17\x40\xf9\x1f\x00\x00\x39\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x13\x00\x40\xf9\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x68\xff\xff\x97\xe2\x03\x00\xaa\x21\x00\x80\x52\xe0\x03\x13\xaa\x74\xff\xff\x97\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x00\x00\x40\xf9\x80\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xAE7), Attr("segment","02 0 2792")), -Annotation(Region(0x800,0x833), Attr("symbol","\"_start\"")), -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,0x617), Attr("section","\".rela.dyn\"")), -Annotation(Region(0x618,0x707), Attr("section","\".rela.plt\"")), -Annotation(Region(0x708,0x71F), Attr("section","\".init\"")), -Annotation(Region(0x720,0x7DF), Attr("section","\".plt\"")), -Annotation(Region(0x708,0x71F), Attr("code-region","()")), -Annotation(Region(0x720,0x7DF), 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,0x9E3), Attr("symbol","\"main\"")), -Annotation(Region(0x914,0x9E3), Attr("symbol-info","main 0x914 208")), -Annotation(Region(0x9E4,0x9F7), Attr("section","\".fini\"")), -Annotation(Region(0x9F8,0x9FB), Attr("section","\".rodata\"")), -Annotation(Region(0x9FC,0xA37), Attr("section","\".eh_frame_hdr\"")), -Annotation(Region(0xA38,0xAE7), Attr("section","\".eh_frame\"")), -Annotation(Region(0x1FDB8,0x20072), Attr("segment","03 0x1FDB8 720")), -Annotation(Region(0x1FDC0,0x1FDC7), Attr("section","\".fini_array\"")), -Annotation(Region(0x1FDC8,0x1FFA7), Attr("section","\".dynamic\"")), -Annotation(Region(0x1FDB8,0x1FDBF), Attr("section","\".init_array\"")), -Annotation(Region(0x1FFA8,0x1FFE7), Attr("section","\".got\"")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), -Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), -Annotation(Region(0x800,0x9E3), Attr("section","\".text\"")), -Annotation(Region(0x800,0x9E3), Attr("code-region","()")), -Annotation(Region(0x9E4,0x9F7), Attr("code-region","()"))]), -Program(Tid(2_341, "%00000925"), Attrs([]), - Subs([Sub(Tid(2_270, "@__cxa_finalize"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x770"), -Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_342, "%00000926"), - 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_415, "@__cxa_finalize"), - Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_835, "%0000072b"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_843, "%00000733"), Attrs([Attr("address","0x774"), -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_850, "%0000073a"), Attrs([Attr("address","0x778"), -Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_855, "%0000073f"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_271, "@__do_global_dtors_aux"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), - "__do_global_dtors_aux", Args([Arg(Tid(2_343, "%00000927"), - 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(834, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(841, "%00000349"), - Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#34",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(846, "%0000034e"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#34",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(851, "%00000353"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#34",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(855, "%00000357"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#34",Imm(64))), Def(Tid(862, "%0000035e"), - Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(870, "%00000366"), - 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(876, "%0000036c"), Attrs([Attr("address","0x8CC"), -Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(885, "%00000375"), Attrs([Attr("address","0x8D0"), -Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), -UNSIGNED(32,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),BigEndian(),8))), -Def(Tid(897, "%00000381"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -EQ(EQ(Extract(0,0,Var("R0",Imm(64))),Int(0,1)),Int(0,1)))]), -Jmps([Goto(Tid(891, "%0000037b"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), Var("#36",Imm(1)), -Direct(Tid(889, "%00000379"))), Goto(Tid(2_331, "%0000091b"), Attrs([]), - Int(1,1), Direct(Tid(1_349, "%00000545")))])), Blk(Tid(1_349, "%00000545"), - Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_353, "%00000549"), Attrs([Attr("address","0x8D8"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_361, "%00000551"), Attrs([Attr("address","0x8DC"), -Attr("insn","ldr x0, [x0, #0xfb8]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4024,64)),LittleEndian(),64)), -Def(Tid(1_373, "%0000055d"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), Var("#78",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_367, "%00000557"), - Attrs([Attr("address","0x8E0"), Attr("insn","cbz x0, #0x10")]), - Var("#78",Imm(1)), Direct(Tid(1_365, "%00000555"))), -Goto(Tid(2_332, "%0000091c"), Attrs([]), Int(1,1), -Direct(Tid(1_397, "%00000575")))])), Blk(Tid(1_397, "%00000575"), - Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_401, "%00000579"), Attrs([Attr("address","0x8E4"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_409, "%00000581"), 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_414, "%00000586"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_417, "%00000589"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x17c")]), Int(1,1), -(Direct(Tid(2_270, "@__cxa_finalize")),Direct(Tid(1_365, "%00000555"))))])), -Blk(Tid(1_365, "%00000555"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_378, "%00000562"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_380, "%00000564"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_284, "@deregister_tm_clones")),Direct(Tid(1_382, "%00000566"))))])), -Blk(Tid(1_382, "%00000566"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_387, "%0000056b"), Attrs([Attr("address","0x8F4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_395, "%00000573"), Attrs([Attr("address","0x8F8"), -Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LOW(8,Extract(31,0,Var("R0",Imm(64)))),BigEndian(),8))]), -Jmps([Goto(Tid(2_333, "%0000091d"), Attrs([]), Int(1,1), -Direct(Tid(889, "%00000379")))])), Blk(Tid(889, "%00000379"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(905, "%00000389"), - 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(915, "%00000393"), 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(919, "%00000397"), 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(922, "%0000039a"), 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(927, "%0000039f"), - Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_275, "@__libc_start_main"), - Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), -Attr("address","0x760"), Attr("stub","()")]), "__libc_start_main", - Args([Arg(Tid(2_344, "%00000928"), - 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_345, "%00000929"), 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_346, "%0000092a"), 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_347, "%0000092b"), 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_348, "%0000092c"), 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(646, "@__libc_start_main"), - Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_810, "%00000712"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_818, "%0000071a"), Attrs([Attr("address","0x764"), -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_825, "%00000721"), Attrs([Attr("address","0x768"), -Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_830, "%00000726"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_276, "@_fini"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9E4")]), - "_fini", Args([Arg(Tid(2_349, "%0000092d"), - 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","0x9E4")]), Phis([]), Defs([Def(Tid(41, "%00000029"), - Attrs([Attr("address","0x9E8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(46, "%0000002e"), Attrs([Attr("address","0x9E8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(51, "%00000033"), Attrs([Attr("address","0x9E8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(55, "%00000037"), Attrs([Attr("address","0x9E8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(62, "%0000003e"), Attrs([Attr("address","0x9EC"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9F0"), -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(76, "%0000004c"), Attrs([Attr("address","0x9F0"), -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(79, "%0000004f"), Attrs([Attr("address","0x9F0"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(84, "%00000054"), - Attrs([Attr("address","0x9F4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_277, "@_init"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x708")]), - "_init", Args([Arg(Tid(2_350, "%0000092e"), - 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(2_033, "@_init"), - Attrs([Attr("address","0x708")]), Phis([]), -Defs([Def(Tid(2_042, "%000007fa"), Attrs([Attr("address","0x70C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#109",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(2_047, "%000007ff"), Attrs([Attr("address","0x70C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#109",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(2_052, "%00000804"), Attrs([Attr("address","0x70C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#109",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(2_056, "%00000808"), Attrs([Attr("address","0x70C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#109",Imm(64))), Def(Tid(2_063, "%0000080f"), - Attrs([Attr("address","0x710"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_068, "%00000814"), - Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), - Var("R30",Imm(64)), Int(1816,64))]), Jmps([Call(Tid(2_070, "%00000816"), - Attrs([Attr("address","0x714"), Attr("insn","bl #0x120")]), Int(1,1), -(Direct(Tid(2_282, "@call_weak_fn")),Direct(Tid(2_072, "%00000818"))))])), -Blk(Tid(2_072, "%00000818"), Attrs([Attr("address","0x718")]), Phis([]), -Defs([Def(Tid(2_080, "%00000820"), Attrs([Attr("address","0x718"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(2_084, "%00000824"), Attrs([Attr("address","0x718"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(2_087, "%00000827"), Attrs([Attr("address","0x718"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_092, "%0000082c"), - Attrs([Attr("address","0x71C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_278, "@_start"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), -Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_351, "%0000092f"), - 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(572, "@_start"), - Attrs([Attr("address","0x800")]), Phis([]), Defs([Def(Tid(578, "%00000242"), - Attrs([Attr("address","0x804"), Attr("insn","mov x29, #0x0")]), - Var("R29",Imm(64)), Int(0,64)), Def(Tid(584, "%00000248"), - Attrs([Attr("address","0x808"), Attr("insn","mov x30, #0x0")]), - Var("R30",Imm(64)), Int(0,64)), Def(Tid(592, "%00000250"), - Attrs([Attr("address","0x80C"), Attr("insn","mov x5, x0")]), - Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(600, "%00000258"), - 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(607, "%0000025f"), Attrs([Attr("address","0x814"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(614, "%00000266"), - Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(620, "%0000026c"), - Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(628, "%00000274"), - 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(634, "%0000027a"), Attrs([Attr("address","0x824"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(640, "%00000280"), Attrs([Attr("address","0x828"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(645, "%00000285"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xcc")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(648, "%00000288"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xcc")]), Int(1,1), -(Direct(Tid(2_275, "@__libc_start_main")),Direct(Tid(650, "%0000028a"))))])), -Blk(Tid(650, "%0000028a"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(653, "%0000028d"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x80")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(656, "%00000290"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x80")]), Int(1,1), -(Direct(Tid(2_281, "@abort")),Direct(Tid(2_334, "%0000091e"))))])), -Blk(Tid(2_334, "%0000091e"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_335, "%0000091f"), Attrs([]), Int(1,1), -(Direct(Tid(2_282, "@call_weak_fn")),))]))])), Sub(Tid(2_281, "@abort"), - Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), -Attr("address","0x7B0"), Attr("stub","()")]), "abort", Args([]), -Blks([Blk(Tid(654, "@abort"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_935, "%0000078f"), Attrs([Attr("address","0x7B0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_943, "%00000797"), Attrs([Attr("address","0x7B4"), -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_950, "%0000079e"), Attrs([Attr("address","0x7B8"), -Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_955, "%000007a3"), - Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_282, "@call_weak_fn"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), - "call_weak_fn", Args([Arg(Tid(2_352, "%00000930"), - 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(658, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(662, "%00000296"), - Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(670, "%0000029e"), - Attrs([Attr("address","0x838"), Attr("insn","ldr x0, [x0, #0xfc0]")]), - Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4032,64)),LittleEndian(),64)), -Def(Tid(682, "%000002aa"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), Var("#12",Imm(1)), -EQ(Var("R0",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(676, "%000002a4"), - Attrs([Attr("address","0x83C"), Attr("insn","cbz x0, #0x8")]), - Var("#12",Imm(1)), Direct(Tid(674, "%000002a2"))), -Goto(Tid(2_336, "%00000920"), Attrs([]), Int(1,1), -Direct(Tid(1_497, "%000005d9")))])), Blk(Tid(674, "%000002a2"), - Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(687, "%000002af"), Attrs([Attr("address","0x844"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_497, "%000005d9"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_500, "%000005dc"), Attrs([Attr("address","0x840"), -Attr("insn","b #-0xa0")]), Int(1,1), -Direct(Tid(1_498, "@__gmon_start__")))])), Blk(Tid(1_498, "@__gmon_start__"), - Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_910, "%00000776"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_918, "%0000077e"), Attrs([Attr("address","0x7A4"), -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_925, "%00000785"), Attrs([Attr("address","0x7A8"), -Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_930, "%0000078a"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_284, "@deregister_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), - "deregister_tm_clones", Args([Arg(Tid(2_353, "%00000931"), - 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(693, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(697, "%000002b9"), - Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(704, "%000002c0"), - Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x78")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), -Def(Tid(710, "%000002c6"), Attrs([Attr("address","0x858"), -Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(717, "%000002cd"), Attrs([Attr("address","0x85C"), -Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(725, "%000002d5"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#16",Imm(64)), -PLUS(PLUS(Int(1,64),NOT(Var("R0",Imm(64)))),Var("R1",Imm(64)))), -Def(Tid(729, "%000002d9"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), -Extract(63,63,Var("#16",Imm(64)))), Def(Tid(732, "%000002dc"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("VF",Imm(1)), -OR(AND(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),NOT(Extract(63,63,Var("#16",Imm(64))))),AND(AND(NOT(Extract(63,63,Var("R1",Imm(64)))),NOT(Extract(63,63,NOT(Var("R0",Imm(64)))))),Extract(63,63,Var("#16",Imm(64)))))), -Def(Tid(735, "%000002df"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(Var("#16",Imm(64)),Int(0,64))), Def(Tid(738, "%000002e2"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("CF",Imm(1)), -OR(OR(AND(Extract(63,63,Var("R1",Imm(64))),Extract(63,63,NOT(Var("R0",Imm(64))))),AND(Extract(63,63,NOT(Var("R0",Imm(64)))),NOT(Extract(63,63,Var("#16",Imm(64)))))),AND(Extract(63,63,Var("R1",Imm(64))),NOT(Extract(63,63,Var("#16",Imm(64))))))), -Def(Tid(752, "%000002f0"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), Var("ZF",Imm(1)))]), -Jmps([Goto(Tid(746, "%000002ea"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), Var("#21",Imm(1)), -Direct(Tid(744, "%000002e8"))), Goto(Tid(2_337, "%00000921"), Attrs([]), - Int(1,1), Direct(Tid(1_458, "%000005b2")))])), Blk(Tid(1_458, "%000005b2"), - Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_462, "%000005b6"), Attrs([Attr("address","0x868"), -Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_470, "%000005be"), Attrs([Attr("address","0x86C"), -Attr("insn","ldr x1, [x1, #0xfb0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4016,64)),LittleEndian(),64)), -Def(Tid(1_481, "%000005c9"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), Var("#86",Imm(1)), -EQ(Var("R1",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_475, "%000005c3"), - Attrs([Attr("address","0x870"), Attr("insn","cbz x1, #0xc")]), - Var("#86",Imm(1)), Direct(Tid(744, "%000002e8"))), -Goto(Tid(2_338, "%00000922"), Attrs([]), Int(1,1), -Direct(Tid(1_484, "%000005cc")))])), Blk(Tid(744, "%000002e8"), - Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(757, "%000002f5"), Attrs([Attr("address","0x87C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_484, "%000005cc"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_490, "%000005d2"), Attrs([Attr("address","0x874"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_495, "%000005d7"), Attrs([Attr("address","0x878"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_287, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), -Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_354, "%00000932"), - 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(933, "@frame_dummy"), - Attrs([Attr("address","0x910")]), Phis([]), Defs([]), -Jmps([Call(Tid(935, "%000003a7"), Attrs([Attr("address","0x910"), -Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_294, "@register_tm_clones")),))]))])), Sub(Tid(2_288, "@free"), - Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7D0"), -Attr("stub","()")]), "free", Args([Arg(Tid(2_355, "%00000933"), - 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_308, "@free"), Attrs([Attr("address","0x7D0")]), - Phis([]), Defs([Def(Tid(1_985, "%000007c1"), Attrs([Attr("address","0x7D0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_993, "%000007c9"), Attrs([Attr("address","0x7D4"), -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(2_000, "%000007d0"), Attrs([Attr("address","0x7D8"), -Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(2_005, "%000007d5"), - Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_289, "@main"), - Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), -Attr("address","0x914")]), "main", Args([Arg(Tid(2_356, "%00000934"), - 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_357, "%00000935"), - 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_358, "%00000936"), - 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(937, "@main"), - Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(944, "%000003b0"), - Attrs([Attr("address","0x914"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#42",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x914"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#42",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x914"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#42",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(958, "%000003be"), Attrs([Attr("address","0x914"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#42",Imm(64))), Def(Tid(965, "%000003c5"), - Attrs([Attr("address","0x918"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(973, "%000003cd"), - Attrs([Attr("address","0x91C"), 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(981, "%000003d5"), Attrs([Attr("address","0x920"), -Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x924"), -Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), -Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x928"), -Attr("insn","mov x0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), -Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x1ac")]), Var("R30",Imm(64)), Int(2352,64))]), -Jmps([Call(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x92C"), -Attr("insn","bl #-0x1ac")]), Int(1,1), -(Direct(Tid(2_290, "@malloc")),Direct(Tid(1_005, "%000003ed"))))])), -Blk(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x930")]), Phis([]), -Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x930"), -Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x934"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_025, "%00000401"), Attrs([Attr("address","0x938"), -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)), -Def(Tid(1_033, "%00000409"), Attrs([Attr("address","0x93C"), -Attr("insn","str x1, [x0]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), -Def(Tid(1_039, "%0000040f"), Attrs([Attr("address","0x940"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x944"), -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)), -Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x948"), -Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x94C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x950"), -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)), -Def(Tid(1_074, "%00000432"), Attrs([Attr("address","0x954"), -Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2392,64))]), -Jmps([Call(Tid(1_077, "%00000435"), Attrs([Attr("address","0x954"), -Attr("insn","bl #-0x204")]), Int(1,1), -(Direct(Tid(2_297, "@strlen")),Direct(Tid(1_079, "%00000437"))))])), -Blk(Tid(1_079, "%00000437"), Attrs([Attr("address","0x958")]), Phis([]), -Defs([Def(Tid(1_085, "%0000043d"), Attrs([Attr("address","0x958"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_091, "%00000443"), Attrs([Attr("address","0x95C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x960"), -Attr("insn","ldr x1, [x0, #0xfd0]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64)), -Def(Tid(1_107, "%00000453"), Attrs([Attr("address","0x964"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_112, "%00000458"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x228")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x228")]), Int(1,1), -(Direct(Tid(2_291, "@memcpy")),Direct(Tid(1_117, "%0000045d"))))])), -Blk(Tid(1_117, "%0000045d"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_121, "%00000461"), Attrs([Attr("address","0x96C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x970"), -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)), -Def(Tid(1_137, "%00000471"), Attrs([Attr("address","0x974"), -Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_142, "%00000476"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x1b8")]), Var("R30",Imm(64)), Int(2428,64))]), -Jmps([Call(Tid(1_145, "%00000479"), Attrs([Attr("address","0x978"), -Attr("insn","bl #-0x1b8")]), Int(1,1), -(Direct(Tid(2_293, "@puts")),Direct(Tid(1_147, "%0000047b"))))])), -Blk(Tid(1_147, "%0000047b"), Attrs([Attr("address","0x97C")]), Phis([]), -Defs([Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x97C"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x980"), -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)), -Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x984"), -Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x988"), -Attr("insn","add x0, x0, #0x4")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(4,64))), Def(Tid(1_182, "%0000049e"), - Attrs([Attr("address","0x98C"), Attr("insn","str x0, [sp, #0x28]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x990"), -Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), -Def(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x994"), -Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),BigEndian(),8)), -Def(Tid(1_204, "%000004b4"), Attrs([Attr("address","0x998"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_212, "%000004bc"), Attrs([Attr("address","0x99C"), -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)), -Def(Tid(1_220, "%000004c4"), Attrs([Attr("address","0x9A0"), -Attr("insn","ldr x19, [x0]")]), Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x9A4"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_234, "%000004d2"), Attrs([Attr("address","0x9A8"), -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)), -Def(Tid(1_242, "%000004da"), Attrs([Attr("address","0x9AC"), -Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_247, "%000004df"), Attrs([Attr("address","0x9B0"), -Attr("insn","bl #-0x260")]), Var("R30",Imm(64)), Int(2484,64))]), -Jmps([Call(Tid(1_249, "%000004e1"), Attrs([Attr("address","0x9B0"), -Attr("insn","bl #-0x260")]), Int(1,1), -(Direct(Tid(2_297, "@strlen")),Direct(Tid(1_251, "%000004e3"))))])), -Blk(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x9B4")]), Phis([]), -Defs([Def(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x9B4"), -Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_264, "%000004f0"), Attrs([Attr("address","0x9B8"), -Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), -Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x9BC"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_277, "%000004fd"), Attrs([Attr("address","0x9C0"), -Attr("insn","bl #-0x230")]), Var("R30",Imm(64)), Int(2500,64))]), -Jmps([Call(Tid(1_280, "%00000500"), Attrs([Attr("address","0x9C0"), -Attr("insn","bl #-0x230")]), Int(1,1), -(Direct(Tid(2_292, "@memset")),Direct(Tid(1_282, "%00000502"))))])), -Blk(Tid(1_282, "%00000502"), Attrs([Attr("address","0x9C4")]), Phis([]), -Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x9C4"), -Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_294, "%0000050e"), Attrs([Attr("address","0x9C8"), -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)), -Def(Tid(1_302, "%00000516"), Attrs([Attr("address","0x9CC"), -Attr("insn","ldr x0, [x0]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_307, "%0000051b"), Attrs([Attr("address","0x9D0"), -Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2516,64))]), -Jmps([Call(Tid(1_310, "%0000051e"), Attrs([Attr("address","0x9D0"), -Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_288, "@free")),Direct(Tid(1_312, "%00000520"))))])), -Blk(Tid(1_312, "%00000520"), Attrs([Attr("address","0x9D4")]), Phis([]), -Defs([Def(Tid(1_317, "%00000525"), Attrs([Attr("address","0x9D4"), -Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_325, "%0000052d"), Attrs([Attr("address","0x9D8"), -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_335, "%00000537"), Attrs([Attr("address","0x9DC"), -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_339, "%0000053b"), Attrs([Attr("address","0x9DC"), -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_342, "%0000053e"), Attrs([Attr("address","0x9DC"), -Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_347, "%00000543"), - Attrs([Attr("address","0x9E0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_290, "@malloc"), - Attrs([Attr("c.proto","void* (*)(unsigned long size)"), -Attr("address","0x780"), Attr("malloc","()"), Attr("stub","()")]), "malloc", - Args([Arg(Tid(2_359, "%00000937"), 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_360, "%00000938"), - Attrs([Attr("warn-unused","()"), Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_001, "@malloc"), Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_860, "%00000744"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_868, "%0000074c"), Attrs([Attr("address","0x784"), -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_875, "%00000753"), Attrs([Attr("address","0x788"), -Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_880, "%00000758"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_291, "@memcpy"), - Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), -Attr("address","0x740"), Attr("stub","()")]), "memcpy", - Args([Arg(Tid(2_361, "%00000939"), 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_362, "%0000093a"), - 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_363, "%0000093b"), 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_364, "%0000093c"), Attrs([Attr("c.layout","*[ : 8]"), -Attr("c.data","{} ptr"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_113, "@memcpy"), Attrs([Attr("address","0x740")]), Phis([]), -Defs([Def(Tid(1_760, "%000006e0"), Attrs([Attr("address","0x740"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x744"), -Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), -Def(Tid(1_775, "%000006ef"), Attrs([Attr("address","0x748"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_780, "%000006f4"), - Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_292, "@memset"), - Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), -Attr("address","0x790"), Attr("stub","()")]), "memset", - Args([Arg(Tid(2_365, "%0000093d"), 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_366, "%0000093e"), - 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_367, "%0000093f"), - 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_368, "%00000940"), 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_278, "@memset"), Attrs([Attr("address","0x790")]), Phis([]), -Defs([Def(Tid(1_885, "%0000075d"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_893, "%00000765"), Attrs([Attr("address","0x794"), -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_900, "%0000076c"), Attrs([Attr("address","0x798"), -Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_905, "%00000771"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_293, "@puts"), - Attrs([Attr("c.proto","signed (*)( const char* s)"), -Attr("address","0x7C0"), Attr("stub","()")]), "puts", - Args([Arg(Tid(2_369, "%00000941"), 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_370, "%00000942"), Attrs([Attr("c.layout","[signed : 32]"), -Attr("c.data","Top:u32"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_143, "@puts"), Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_960, "%000007a8"), Attrs([Attr("address","0x7C0"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_968, "%000007b0"), Attrs([Attr("address","0x7C4"), -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_975, "%000007b7"), Attrs([Attr("address","0x7C8"), -Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_980, "%000007bc"), - Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_294, "@register_tm_clones"), - Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), - "register_tm_clones", Args([Arg(Tid(2_371, "%00000943"), - 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(759, "@register_tm_clones"), Attrs([Attr("address","0x880")]), - Phis([]), Defs([Def(Tid(763, "%000002fb"), Attrs([Attr("address","0x880"), -Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(770, "%00000302"), Attrs([Attr("address","0x884"), -Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(776, "%00000308"), - Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), - Var("R1",Imm(64)), Int(131072,64)), Def(Tid(783, "%0000030f"), - Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x78")]), - Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), -Def(Tid(791, "%00000317"), Attrs([Attr("address","0x890"), -Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), -MINUS(Var("R1",Imm(64)),Var("R0",Imm(64)))), Def(Tid(798, "%0000031e"), - Attrs([Attr("address","0x894"), Attr("insn","lsr x2, x1, #63")]), - Var("R2",Imm(64)), RSHIFT(Var("R1",Imm(64)),Int(63,64))), -Def(Tid(806, "%00000326"), 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,64)))), -Def(Tid(813, "%0000032d"), Attrs([Attr("address","0x89C"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -RSHIFT(Var("R1",Imm(64)),Int(1,64))), Def(Tid(825, "%00000339"), - Attrs([Attr("address","0x8A0"), Attr("insn","cbz x1, #0x18")]), - Var("#30",Imm(1)), EQ(Var("R1",Imm(64)),Int(0,64)))]), -Jmps([Goto(Tid(819, "%00000333"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), Var("#30",Imm(1)), -Direct(Tid(817, "%00000331"))), Goto(Tid(2_339, "%00000923"), Attrs([]), - Int(1,1), Direct(Tid(1_419, "%0000058b")))])), Blk(Tid(1_419, "%0000058b"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_423, "%0000058f"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_431, "%00000597"), 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)), -Def(Tid(1_442, "%000005a2"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), Var("#81",Imm(1)), -EQ(Var("R2",Imm(64)),Int(0,64)))]), Jmps([Goto(Tid(1_436, "%0000059c"), - Attrs([Attr("address","0x8AC"), Attr("insn","cbz x2, #0xc")]), - Var("#81",Imm(1)), Direct(Tid(817, "%00000331"))), -Goto(Tid(2_340, "%00000924"), Attrs([]), Int(1,1), -Direct(Tid(1_445, "%000005a5")))])), Blk(Tid(817, "%00000331"), - Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(830, "%0000033e"), Attrs([Attr("address","0x8B8"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_445, "%000005a5"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x8B0"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_456, "%000005b0"), Attrs([Attr("address","0x8B4"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_297, "@strlen"), - Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), -Attr("pure","()"), Attr("address","0x750"), Attr("stub","()")]), "strlen", - Args([Arg(Tid(2_372, "%00000944"), 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_373, "%00000945"), - Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), -Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), -Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_075, "@strlen"), - Attrs([Attr("address","0x750")]), Phis([]), -Defs([Def(Tid(1_785, "%000006f9"), Attrs([Attr("address","0x750"), -Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_793, "%00000701"), Attrs([Attr("address","0x754"), -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_800, "%00000708"), Attrs([Attr("address","0x758"), -Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_805, "%0000070d"), - Attrs([Attr("address","0x75C"), 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_pic/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir deleted file mode 100644 index 5686fd428..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.bir +++ /dev/null @@ -1,371 +0,0 @@ -00000925: program -000008de: sub __cxa_finalize(__cxa_finalize_result) -00000926: __cxa_finalize_result :: out u32 = low:32[R0] - -00000587: -0000072b: R16 := 0x20000 -00000733: R17 := mem[R16 + 0x18, el]:u64 -0000073a: R16 := R16 + 0x18 -0000073f: call R17 with noreturn - -000008df: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000927: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -00000342: -00000349: #34 := R31 - 0x20 -0000034e: mem := mem with [#34, el]:u64 <- R29 -00000353: mem := mem with [#34 + 8, el]:u64 <- R30 -00000357: R31 := #34 -0000035e: R29 := R31 -00000366: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000036c: R19 := 0x20000 -00000375: R0 := pad:32[mem[R19 + 0x78]] -00000381: #36 := ~~0:0[R0] -0000037b: when #36 goto %00000379 -0000091b: goto %00000545 - -00000545: -00000549: R0 := 0x1F000 -00000551: R0 := mem[R0 + 0xFB8, el]:u64 -0000055d: #78 := R0 = 0 -00000557: when #78 goto %00000555 -0000091c: goto %00000575 - -00000575: -00000579: R0 := 0x20000 -00000581: R0 := mem[R0 + 0x58, el]:u64 -00000586: R30 := 0x8F0 -00000589: call @__cxa_finalize with return %00000555 - -00000555: -00000562: R30 := 0x8F4 -00000564: call @deregister_tm_clones with return %00000566 - -00000566: -0000056b: R0 := 1 -00000573: mem := mem with [R19 + 0x78] <- low:8[31:0[R0]] -0000091d: goto %00000379 - -00000379: -00000389: R19 := mem[R31 + 0x10, el]:u64 -00000393: R29 := mem[R31, el]:u64 -00000397: R30 := mem[R31 + 8, el]:u64 -0000039a: R31 := R31 + 0x20 -0000039f: call R30 with noreturn - -000008e3: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000928: __libc_start_main_main :: in u64 = R0 -00000929: __libc_start_main_arg2 :: in u32 = low:32[R1] -0000092a: __libc_start_main_arg3 :: in out u64 = R2 -0000092b: __libc_start_main_auxv :: in out u64 = R3 -0000092c: __libc_start_main_result :: out u32 = low:32[R0] - -00000286: -00000712: R16 := 0x20000 -0000071a: R17 := mem[R16 + 0x10, el]:u64 -00000721: R16 := R16 + 0x10 -00000726: call R17 with noreturn - -000008e4: sub _fini(_fini_result) -0000092d: _fini_result :: out u32 = low:32[R0] - -00000020: -00000029: #3 := R31 - 0x10 -0000002e: mem := mem with [#3, el]:u64 <- R29 -00000033: mem := mem with [#3 + 8, el]:u64 <- R30 -00000037: R31 := #3 -0000003e: R29 := R31 -00000048: R29 := mem[R31, el]:u64 -0000004c: R30 := mem[R31 + 8, el]:u64 -0000004f: R31 := R31 + 0x10 -00000054: call R30 with noreturn - -000008e5: sub _init(_init_result) -0000092e: _init_result :: out u32 = low:32[R0] - -000007f1: -000007fa: #109 := R31 - 0x10 -000007ff: mem := mem with [#109, el]:u64 <- R29 -00000804: mem := mem with [#109 + 8, el]:u64 <- R30 -00000808: R31 := #109 -0000080f: R29 := R31 -00000814: R30 := 0x718 -00000816: call @call_weak_fn with return %00000818 - -00000818: -00000820: R29 := mem[R31, el]:u64 -00000824: R30 := mem[R31 + 8, el]:u64 -00000827: R31 := R31 + 0x10 -0000082c: call R30 with noreturn - -000008e6: sub _start(_start_result) -0000092f: _start_result :: out u32 = low:32[R0] - -0000023c: -00000242: R29 := 0 -00000248: R30 := 0 -00000250: R5 := R0 -00000258: R1 := mem[R31, el]:u64 -0000025f: R2 := R31 + 8 -00000266: R6 := R31 -0000026c: R0 := 0x1F000 -00000274: R0 := mem[R0 + 0xFD8, el]:u64 -0000027a: R3 := 0 -00000280: R4 := 0 -00000285: R30 := 0x830 -00000288: call @__libc_start_main with return %0000028a - -0000028a: -0000028d: R30 := 0x834 -00000290: call @abort with return %0000091e - -0000091e: -0000091f: call @call_weak_fn with noreturn - -000008e9: sub abort() - - -0000028e: -0000078f: R16 := 0x20000 -00000797: R17 := mem[R16 + 0x38, el]:u64 -0000079e: R16 := R16 + 0x38 -000007a3: call R17 with noreturn - -000008ea: sub call_weak_fn(call_weak_fn_result) -00000930: call_weak_fn_result :: out u32 = low:32[R0] - -00000292: -00000296: R0 := 0x1F000 -0000029e: R0 := mem[R0 + 0xFC0, el]:u64 -000002aa: #12 := R0 = 0 -000002a4: when #12 goto %000002a2 -00000920: goto %000005d9 - -000002a2: -000002af: call R30 with noreturn - -000005d9: -000005dc: goto @__gmon_start__ - -000005da: -00000776: R16 := 0x20000 -0000077e: R17 := mem[R16 + 0x30, el]:u64 -00000785: R16 := R16 + 0x30 -0000078a: call R17 with noreturn - -000008ec: sub deregister_tm_clones(deregister_tm_clones_result) -00000931: deregister_tm_clones_result :: out u32 = low:32[R0] - -000002b5: -000002b9: R0 := 0x20000 -000002c0: R0 := R0 + 0x78 -000002c6: R1 := 0x20000 -000002cd: R1 := R1 + 0x78 -000002d5: #16 := 1 + ~R0 + R1 -000002d9: NF := 63:63[#16] -000002dc: VF := 63:63[R1] & 63:63[~R0] & ~63:63[#16] | ~63:63[R1] & - ~63:63[~R0] & 63:63[#16] -000002df: ZF := #16 = 0 -000002e2: CF := 63:63[R1] & 63:63[~R0] | 63:63[~R0] & ~63:63[#16] | 63:63[R1] - & ~63:63[#16] -000002f0: #21 := ZF -000002ea: when #21 goto %000002e8 -00000921: goto %000005b2 - -000005b2: -000005b6: R1 := 0x1F000 -000005be: R1 := mem[R1 + 0xFB0, el]:u64 -000005c9: #86 := R1 = 0 -000005c3: when #86 goto %000002e8 -00000922: goto %000005cc - -000002e8: -000002f5: call R30 with noreturn - -000005cc: -000005d2: R16 := R1 -000005d7: call R16 with noreturn - -000008ef: sub frame_dummy(frame_dummy_result) -00000932: frame_dummy_result :: out u32 = low:32[R0] - -000003a5: -000003a7: call @register_tm_clones with noreturn - -000008f0: sub free(free_ptr) -00000933: free_ptr :: in out u64 = R0 - -0000051c: -000007c1: R16 := 0x20000 -000007c9: R17 := mem[R16 + 0x48, el]:u64 -000007d0: R16 := R16 + 0x48 -000007d5: call R17 with noreturn - -000008f1: sub main(main_argc, main_argv, main_result) -00000934: main_argc :: in u32 = low:32[R0] -00000935: main_argv :: in out u64 = R1 -00000936: main_result :: out u32 = low:32[R0] - -000003a9: -000003b0: #42 := R31 - 0x30 -000003b5: mem := mem with [#42, el]:u64 <- R29 -000003ba: mem := mem with [#42 + 8, el]:u64 <- R30 -000003be: R31 := #42 -000003c5: R29 := R31 -000003cd: mem := mem with [R31 + 0x10, el]:u64 <- R19 -000003d5: mem := mem with [R31 + 0x28, el]:u64 <- 0 -000003dd: mem := mem with [R31 + 0x20, el]:u64 <- 0 -000003e3: R0 := 0xB -000003e8: R30 := 0x930 -000003eb: call @malloc with return %000003ed - -000003ed: -000003f3: R1 := R0 -000003f9: R0 := 0x1F000 -00000401: R0 := mem[R0 + 0xFC8, el]:u64 -00000409: mem := mem with [R0, el]:u64 <- R1 -0000040f: R0 := 0x1F000 -00000417: R0 := mem[R0 + 0xFC8, el]:u64 -0000041f: R19 := mem[R0, el]:u64 -00000425: R0 := 0x1F000 -0000042d: R0 := mem[R0 + 0xFD0, el]:u64 -00000432: R30 := 0x958 -00000435: call @strlen with return %00000437 - -00000437: -0000043d: R2 := R0 -00000443: R0 := 0x1F000 -0000044b: R1 := mem[R0 + 0xFD0, el]:u64 -00000453: R0 := R19 -00000458: R30 := 0x96C -0000045b: call @memcpy with return %0000045d - -0000045d: -00000461: R0 := 0x1F000 -00000469: R0 := mem[R0 + 0xFC8, el]:u64 -00000471: R0 := mem[R0, el]:u64 -00000476: R30 := 0x97C -00000479: call @puts with return %0000047b - -0000047b: -0000047f: R0 := 0x1F000 -00000487: R0 := mem[R0 + 0xFC8, el]:u64 -0000048f: R0 := mem[R0, el]:u64 -00000496: R0 := R0 + 4 -0000049e: mem := mem with [R31 + 0x28, el]:u64 <- R0 -000004a6: R0 := mem[R31 + 0x28, el]:u64 -000004ae: mem := mem with [R0] <- 0 -000004b4: R0 := 0x1F000 -000004bc: R0 := mem[R0 + 0xFC8, el]:u64 -000004c4: R19 := mem[R0, el]:u64 -000004ca: R0 := 0x1F000 -000004d2: R0 := mem[R0 + 0xFC8, el]:u64 -000004da: R0 := mem[R0, el]:u64 -000004df: R30 := 0x9B4 -000004e1: call @strlen with return %000004e3 - -000004e3: -000004e9: R2 := R0 -000004f0: R1 := 1 -000004f8: R0 := R19 -000004fd: R30 := 0x9C4 -00000500: call @memset with return %00000502 - -00000502: -00000506: R0 := 0x1F000 -0000050e: R0 := mem[R0 + 0xFC8, el]:u64 -00000516: R0 := mem[R0, el]:u64 -0000051b: R30 := 0x9D4 -0000051e: call @free with return %00000520 - -00000520: -00000525: R0 := 0 -0000052d: R19 := mem[R31 + 0x10, el]:u64 -00000537: R29 := mem[R31, el]:u64 -0000053b: R30 := mem[R31 + 8, el]:u64 -0000053e: R31 := R31 + 0x30 -00000543: call R30 with noreturn - -000008f2: sub malloc(malloc_size, malloc_result) -00000937: malloc_size :: in u64 = R0 -00000938: malloc_result :: out u64 = R0 - -000003e9: -00000744: R16 := 0x20000 -0000074c: R17 := mem[R16 + 0x20, el]:u64 -00000753: R16 := R16 + 0x20 -00000758: call R17 with noreturn - -000008f3: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000939: memcpy_dst :: in out u64 = R0 -0000093a: memcpy_src :: in out u64 = R1 -0000093b: memcpy_n :: in u64 = R2 -0000093c: memcpy_result :: out u64 = R0 - -00000459: -000006e0: R16 := 0x20000 -000006e8: R17 := mem[R16, el]:u64 -000006ef: R16 := R16 -000006f4: call R17 with noreturn - -000008f4: sub memset(memset_buf, memset_c, memset_n, memset_result) -0000093d: memset_buf :: in out u64 = R0 -0000093e: memset_c :: in u32 = low:32[R1] -0000093f: memset_n :: in u64 = R2 -00000940: memset_result :: out u64 = R0 - -000004fe: -0000075d: R16 := 0x20000 -00000765: R17 := mem[R16 + 0x28, el]:u64 -0000076c: R16 := R16 + 0x28 -00000771: call R17 with noreturn - -000008f5: sub puts(puts_s, puts_result) -00000941: puts_s :: in u64 = R0 -00000942: puts_result :: out u32 = low:32[R0] - -00000477: -000007a8: R16 := 0x20000 -000007b0: R17 := mem[R16 + 0x40, el]:u64 -000007b7: R16 := R16 + 0x40 -000007bc: call R17 with noreturn - -000008f6: sub register_tm_clones(register_tm_clones_result) -00000943: register_tm_clones_result :: out u32 = low:32[R0] - -000002f7: -000002fb: R0 := 0x20000 -00000302: R0 := R0 + 0x78 -00000308: R1 := 0x20000 -0000030f: R1 := R1 + 0x78 -00000317: R1 := R1 - R0 -0000031e: R2 := R1 >> 0x3F -00000326: R1 := R2 + (R1 ~>> 3) -0000032d: R1 := R1 >> 1 -00000339: #30 := R1 = 0 -00000333: when #30 goto %00000331 -00000923: goto %0000058b - -0000058b: -0000058f: R2 := 0x1F000 -00000597: R2 := mem[R2 + 0xFE0, el]:u64 -000005a2: #81 := R2 = 0 -0000059c: when #81 goto %00000331 -00000924: goto %000005a5 - -00000331: -0000033e: call R30 with noreturn - -000005a5: -000005ab: R16 := R2 -000005b0: call R16 with noreturn - -000008f9: sub strlen(strlen_s, strlen_result) -00000944: strlen_s :: in u64 = R0 -00000945: strlen_result :: out u64 = R0 - -00000433: -000006f9: R16 := 0x20000 -00000701: R17 := mem[R16 + 8, el]:u64 -00000708: R16 := R16 + 8 -0000070d: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.expected deleted file mode 100644 index 8c9210cc7..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.expected +++ /dev/null @@ -1,1087 +0,0 @@ -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_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} 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 == 131200bv64); -const {:extern} $password_addr: bv64; -axiom ($password_addr == 131168bv64); -const {:extern} $stext_addr: bv64; -axiom ($stext_addr == 131176bv64); -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_be(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, 2552bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 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); - 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); - -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, 2552bv64) == 1bv8); - free requires (memory_load8_le(mem, 2553bv64) == 0bv8); - free requires (memory_load8_le(mem, 2554bv64) == 2bv8); - free requires (memory_load8_le(mem, 2555bv64) == 0bv8); - free requires (memory_load8_le(mem, 131016bv64) == 128bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 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 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 ensures (memory_load8_le(mem, 2552bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 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); - 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); - -procedure main() - modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, 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, 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) == 0bv8); - free requires (memory_load8_le(mem, 131170bv64) == 0bv8); - free requires (memory_load8_le(mem, 131171bv64) == 0bv8); - 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) == 117bv8); - free requires (memory_load8_le(mem, 131177bv64) == 115bv8); - free requires (memory_load8_le(mem, 131178bv64) == 101bv8); - free requires (memory_load8_le(mem, 131179bv64) == 114bv8); - free requires (memory_load8_le(mem, 131180bv64) == 58bv8); - free requires (memory_load8_le(mem, 131181bv64) == 112bv8); - free requires (memory_load8_le(mem, 131182bv64) == 97bv8); - free requires (memory_load8_le(mem, 131183bv64) == 115bv8); - free requires (memory_load8_le(mem, 131184bv64) == 115bv8); - free requires (memory_load8_le(mem, 131185bv64) == 0bv8); - free requires (memory_load8_le(mem, 131186bv64) == 0bv8); - free requires (memory_load8_le(mem, 2552bv64) == 1bv8); - free requires (memory_load8_le(mem, 2553bv64) == 0bv8); - free requires (memory_load8_le(mem, 2554bv64) == 2bv8); - free requires (memory_load8_le(mem, 2555bv64) == 0bv8); - free requires (memory_load8_le(mem, 131016bv64) == 128bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 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 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 ensures (Gamma_R19 == old(Gamma_R19)); - free ensures (Gamma_R29 == old(Gamma_R29)); - free ensures (Gamma_R31 == old(Gamma_R31)); - free ensures (R19 == old(R19)); - free ensures (R29 == old(R29)); - free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2552bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 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); - 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); -{ - var #42: bv64; - var Gamma_#42: bool; - lmain: - assume {:captureState "lmain"} true; - #42, Gamma_#42 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); - assume {:captureState "%000003b5"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); - assume {:captureState "%000003ba"} true; - R31, Gamma_R31 := #42, Gamma_#42; - R29, Gamma_R29 := R31, Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R19), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R19); - assume {:captureState "%000003cd"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), true); - assume {:captureState "%000003d5"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), 0bv64), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), true); - assume {:captureState "%000003dd"} true; - R0, Gamma_R0 := 11bv64, true; - R30, Gamma_R30 := 2352bv64, true; - call malloc(); - goto l000003ed; - l000003ed: - assume {:captureState "l000003ed"} true; - R1, Gamma_R1 := R0, Gamma_R0; - R0, Gamma_R0 := 126976bv64, true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); - call rely(); - assert (L(mem, R0) ==> Gamma_R1); - mem, Gamma_mem := memory_store64_le(mem, R0, R1), gamma_store64(Gamma_mem, R0, Gamma_R1); - assume {:captureState "%00000409"} true; - R0, Gamma_R0 := 126976bv64, true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 126976bv64, true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4048bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4048bv64)) || L(mem, bvadd64(R0, 4048bv64))); - R30, Gamma_R30 := 2392bv64, true; - call strlen(); - goto l00000437; - l00000437: - assume {:captureState "l00000437"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R0, Gamma_R0 := 126976bv64, true; - call rely(); - R1, Gamma_R1 := memory_load64_le(mem, bvadd64(R0, 4048bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4048bv64)) || L(mem, bvadd64(R0, 4048bv64))); - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2412bv64, true; - call memcpy(); - goto l0000045d; - l0000045d: - assume {:captureState "l0000045d"} true; - R0, Gamma_R0 := 126976bv64, true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2428bv64, true; - call puts(); - goto l0000047b; - l0000047b: - assume {:captureState "l0000047b"} true; - R0, Gamma_R0 := 126976bv64, true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := bvadd64(R0, 4bv64), Gamma_R0; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 40bv64), R0), gamma_store64(Gamma_stack, bvadd64(R31, 40bv64), Gamma_R0); - assume {:captureState "%0000049e"} true; - R0, Gamma_R0 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); - call rely(); - assert (L(mem, R0) ==> true); - mem, Gamma_mem := memory_store8_be(mem, R0, 0bv8), gamma_store8(Gamma_mem, R0, true); - assume {:captureState "%000004ae"} true; - R0, Gamma_R0 := 126976bv64, true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); - call rely(); - R19, Gamma_R19 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R0, Gamma_R0 := 126976bv64, true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2484bv64, true; - call strlen(); - goto l000004e3; - l000004e3: - assume {:captureState "l000004e3"} true; - R2, Gamma_R2 := R0, Gamma_R0; - R1, Gamma_R1 := 1bv64, true; - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2500bv64, true; - call memset(); - goto l00000502; - l00000502: - assume {:captureState "l00000502"} true; - R0, Gamma_R0 := 126976bv64, true; - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R0, 4040bv64)), (gamma_load64(Gamma_mem, bvadd64(R0, 4040bv64)) || L(mem, bvadd64(R0, 4040bv64))); - call rely(); - R0, Gamma_R0 := memory_load64_le(mem, R0), (gamma_load64(Gamma_mem, R0) || L(mem, R0)); - R30, Gamma_R30 := 2516bv64, true; - call #free(); - goto l00000520; - l00000520: - assume {:captureState "l00000520"} true; - R0, Gamma_R0 := 0bv64, true; - R19, Gamma_R19 := 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, 2552bv64) == 1bv8); - free requires (memory_load8_le(mem, 2553bv64) == 0bv8); - free requires (memory_load8_le(mem, 2554bv64) == 2bv8); - free requires (memory_load8_le(mem, 2555bv64) == 0bv8); - free requires (memory_load8_le(mem, 131016bv64) == 128bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 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 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); - 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, 2552bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 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); - 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); - -procedure memcpy(); - modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - free requires (memory_load8_le(mem, 2552bv64) == 1bv8); - free requires (memory_load8_le(mem, 2553bv64) == 0bv8); - free requires (memory_load8_le(mem, 2554bv64) == 2bv8); - free requires (memory_load8_le(mem, 2555bv64) == 0bv8); - free requires (memory_load8_le(mem, 131016bv64) == 128bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 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 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); - 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, 2552bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 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); - 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); - -procedure memset(); - modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - requires Gamma_R1; - free requires (memory_load8_le(mem, 2552bv64) == 1bv8); - free requires (memory_load8_le(mem, 2553bv64) == 0bv8); - free requires (memory_load8_le(mem, 2554bv64) == 2bv8); - free requires (memory_load8_le(mem, 2555bv64) == 0bv8); - free requires (memory_load8_le(mem, 131016bv64) == 128bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 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 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); - 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, 2552bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 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); - 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); - -procedure puts(); - modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2552bv64) == 1bv8); - free requires (memory_load8_le(mem, 2553bv64) == 0bv8); - free requires (memory_load8_le(mem, 2554bv64) == 2bv8); - free requires (memory_load8_le(mem, 2555bv64) == 0bv8); - free requires (memory_load8_le(mem, 131016bv64) == 128bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 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 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 ensures (memory_load8_le(mem, 2552bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 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); - 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); - -procedure strlen(); - modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; - free requires (memory_load8_le(mem, 2552bv64) == 1bv8); - free requires (memory_load8_le(mem, 2553bv64) == 0bv8); - free requires (memory_load8_le(mem, 2554bv64) == 2bv8); - free requires (memory_load8_le(mem, 2555bv64) == 0bv8); - free requires (memory_load8_le(mem, 131016bv64) == 128bv8); - free requires (memory_load8_le(mem, 131017bv64) == 0bv8); - free requires (memory_load8_le(mem, 131018bv64) == 2bv8); - free requires (memory_load8_le(mem, 131019bv64) == 0bv8); - free requires (memory_load8_le(mem, 131020bv64) == 0bv8); - free requires (memory_load8_le(mem, 131021bv64) == 0bv8); - free requires (memory_load8_le(mem, 131022bv64) == 0bv8); - free requires (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free requires (memory_load8_le(mem, 131025bv64) == 0bv8); - free requires (memory_load8_le(mem, 131026bv64) == 2bv8); - free requires (memory_load8_le(mem, 131027bv64) == 0bv8); - free requires (memory_load8_le(mem, 131028bv64) == 0bv8); - free requires (memory_load8_le(mem, 131029bv64) == 0bv8); - free requires (memory_load8_le(mem, 131030bv64) == 0bv8); - free requires (memory_load8_le(mem, 131031bv64) == 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 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); - 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, 2552bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2553bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2554bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2555bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131016bv64) == 128bv8); - free ensures (memory_load8_le(mem, 131017bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131018bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131019bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131020bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131021bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131022bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131023bv64) == 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, 131024bv64) == 104bv8); - free ensures (memory_load8_le(mem, 131025bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131026bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131027bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131028bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131029bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131030bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131031bv64) == 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); - 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); diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf deleted file mode 100644 index e075e265b..000000000 --- a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_pic/malloc_memcpy_strlen_memset_free.relf +++ /dev/null @@ -1,145 +0,0 @@ - -Relocation section '.rela.dyn' at offset 0x528 contains 10 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fdb8 0000000000000403 R_AARCH64_RELATIVE 910 -000000000001fdc0 0000000000000403 R_AARCH64_RELATIVE 8c0 -000000000001ffc8 0000000000000403 R_AARCH64_RELATIVE 20080 -000000000001ffd0 0000000000000403 R_AARCH64_RELATIVE 20068 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 914 -0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 -000000000001ffb0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 -000000000001ffb8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 -000000000001ffc0 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 0x618 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: 0000000000000708 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: 0000000000000618 0 SECTION LOCAL DEFAULT 10 .rela.plt - 11: 0000000000000708 0 SECTION LOCAL DEFAULT 11 .init - 12: 0000000000000720 0 SECTION LOCAL DEFAULT 12 .plt - 13: 0000000000000800 0 SECTION LOCAL DEFAULT 13 .text - 14: 00000000000009e4 0 SECTION LOCAL DEFAULT 14 .fini - 15: 00000000000009f8 0 SECTION LOCAL DEFAULT 15 .rodata - 16: 00000000000009fc 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr - 17: 0000000000000a38 0 SECTION LOCAL DEFAULT 17 .eh_frame - 18: 000000000001fdb8 0 SECTION LOCAL DEFAULT 18 .init_array - 19: 000000000001fdc0 0 SECTION LOCAL DEFAULT 19 .fini_array - 20: 000000000001fdc8 0 SECTION LOCAL DEFAULT 20 .dynamic - 21: 000000000001ffa8 0 SECTION LOCAL DEFAULT 21 .got - 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt - 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data - 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss - 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment - 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o - 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d - 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag - 29: 0000000000000800 0 NOTYPE LOCAL DEFAULT 13 $x - 30: 0000000000000a4c 0 NOTYPE LOCAL DEFAULT 17 $d - 31: 00000000000009f8 0 NOTYPE LOCAL DEFAULT 15 $d - 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 33: 0000000000000834 0 NOTYPE LOCAL DEFAULT 13 $x - 34: 0000000000000834 20 FUNC LOCAL DEFAULT 13 call_weak_fn - 35: 0000000000000708 0 NOTYPE LOCAL DEFAULT 11 $x - 36: 00000000000009e4 0 NOTYPE LOCAL DEFAULT 14 $x - 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 38: 0000000000000718 0 NOTYPE LOCAL DEFAULT 11 $x - 39: 00000000000009f0 0 NOTYPE LOCAL DEFAULT 14 $x - 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 41: 0000000000000850 0 NOTYPE LOCAL DEFAULT 13 $x - 42: 0000000000000850 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones - 43: 0000000000000880 0 FUNC LOCAL DEFAULT 13 register_tm_clones - 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d - 45: 00000000000008c0 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux - 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 - 47: 000000000001fdc0 0 NOTYPE LOCAL DEFAULT 19 $d - 48: 000000000001fdc0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry - 49: 0000000000000910 0 FUNC LOCAL DEFAULT 13 frame_dummy - 50: 000000000001fdb8 0 NOTYPE LOCAL DEFAULT 18 $d - 51: 000000000001fdb8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry - 52: 0000000000000a60 0 NOTYPE LOCAL DEFAULT 17 $d - 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c - 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d - 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d - 57: 0000000000000914 0 NOTYPE LOCAL DEFAULT 13 $x - 58: 0000000000000ac0 0 NOTYPE LOCAL DEFAULT 17 $d - 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 60: 0000000000000ae4 0 NOTYPE LOCAL DEFAULT 17 $d - 61: 0000000000000ae4 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ - 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 63: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 64: 00000000000009fc 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR - 65: 000000000001ffa8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 66: 0000000000000720 0 NOTYPE LOCAL DEFAULT 12 $x - 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start - 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ - 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ - 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata - 76: 00000000000009e4 0 FUNC GLOBAL HIDDEN 14 _fini - 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ - 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password - 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start - 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle - 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 85: 00000000000009f8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used - 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end - 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 89: 0000000000000800 52 FUNC GLOBAL DEFAULT 13 _start - 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf - 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ - 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext - 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start - 94: 0000000000000914 208 FUNC GLOBAL DEFAULT 13 main - 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ - 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 97: 0000000000000708 0 FUNC GLOBAL HIDDEN 11 _init From c63e4e8017a417774ef2d458f532dcadd62d559f Mon Sep 17 00:00:00 2001 From: l-kent Date: Mon, 22 Jan 2024 13:18:53 +1000 Subject: [PATCH 36/36] update expected --- .../malloc_memcpy_strlen_memset_free.expected | 809 ++++++++++++++++++ .../malloc_memcpy_strlen_memset_free.expected | 83 +- .../malloc_memcpy_strlen_memset_free.expected | 91 +- .../malloc_memcpy_strlen_memset_free.expected | 89 +- 4 files changed, 945 insertions(+), 127 deletions(-) create mode 100644 src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected 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/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 index a1729ce76..e24a49e85 100644 --- 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 @@ -322,33 +322,35 @@ procedure main() free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); { - var #14: bv64; - var #9: bv64; - var Gamma_#14: bool; - var Gamma_#9: bool; + 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; - #9, Gamma_#9 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #9, R29), gamma_store64(Gamma_stack, #9, Gamma_R29); - assume {:captureState "%00000238"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#9, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#9, 8bv64), Gamma_R30); - assume {:captureState "%0000023d"} true; - R31, Gamma_R31 := #9, Gamma_#9; + #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 "%00000256"} true; + assume {:captureState "%00000250"} true; R21, Gamma_R21 := 131072bv64, true; - #14, Gamma_#14 := bvadd64(R31, 16bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #14, R19), gamma_store64(Gamma_stack, #14, Gamma_R19); - assume {:captureState "%00000269"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#14, 8bv64), R20), gamma_store64(Gamma_stack, bvadd64(#14, 8bv64), Gamma_R20); - assume {:captureState "%0000026e"} 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 l00000278; - l00000278: - assume {:captureState "l00000278"} true; + 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; @@ -356,51 +358,52 @@ procedure main() 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 "%0000029b"} true; + assume {:captureState "%0000028e"} true; R30, Gamma_R30 := 2036bv64, true; call strlen(); - goto l000002a5; - l000002a5: - assume {:captureState "l000002a5"} true; + 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 l000002c5; - l000002c5: - assume {:captureState "l000002c5"} true; + goto l000002b2; + l000002b2: + assume {:captureState "l000002b2"} true; R0, Gamma_R0 := R19, Gamma_R19; R30, Gamma_R30 := 2060bv64, true; call puts(); - goto l000002d5; - l000002d5: - assume {:captureState "l000002d5"} true; + 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 l000002ec; - l000002ec: - assume {:captureState "l000002ec"} true; + 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 l0000030b; - l0000030b: - assume {:captureState "l0000030b"} true; + 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 l0000031b; - l0000031b: - assume {:captureState "l0000031b"} true; - R19, Gamma_R19 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); - R20, Gamma_R20 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + 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); 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 index 332b58eaf..8296ed8eb 100644 --- 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 @@ -80,7 +80,7 @@ function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64 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_be(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { +function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } @@ -332,32 +332,34 @@ procedure main() free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); { - var #42: bv64; - var #47: bv64; - var Gamma_#42: bool; - var Gamma_#47: bool; + 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; - #42, Gamma_#42 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #42, R29), gamma_store64(Gamma_stack, #42, Gamma_R29); - assume {:captureState "%00000371"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#42, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#42, 8bv64), Gamma_R30); - assume {:captureState "%00000376"} true; - R31, Gamma_R31 := #42, Gamma_#42; + #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 "%00000382"} true; - #47, Gamma_#47 := bvadd64(R31, 32bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #47, R20), gamma_store64(Gamma_stack, #47, Gamma_R20); - assume {:captureState "%0000038f"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#47, 8bv64), R19), gamma_store64(Gamma_stack, bvadd64(#47, 8bv64), Gamma_R19); - assume {:captureState "%00000394"} true; + 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 l000003ac; - l000003ac: - assume {:captureState "l000003ac"} true; + 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; @@ -365,59 +367,60 @@ procedure main() 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 "%000003cd"} true; + assume {:captureState "%00000395"} true; R0, Gamma_R0 := R20, Gamma_R20; R30, Gamma_R30 := 2376bv64, true; call strlen(); - goto l000003df; - l000003df: - assume {:captureState "l000003df"} true; + 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 l000003ff; - l000003ff: - assume {:captureState "l000003ff"} true; + goto l000003bf; + l000003bf: + assume {:captureState "l000003bf"} true; R0, Gamma_R0 := R19, Gamma_R19; R30, Gamma_R30 := 2400bv64, true; call puts(); - goto l0000040f; - l0000040f: - assume {:captureState "l0000040f"} true; + 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_be(mem, bvadd64(R8, 4bv64), 0bv8), gamma_store8(Gamma_mem, bvadd64(R8, 4bv64), true); - assume {:captureState "%0000041d"} 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 l00000436; - l00000436: - assume {:captureState "l00000436"} true; + 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 l00000455; - l00000455: - assume {:captureState "l00000455"} true; + 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 l00000465; - l00000465: - assume {:captureState "l00000465"} true; - R0, Gamma_R0 := 0bv32, true; - R20, Gamma_R20 := memory_load64_le(stack, bvadd64(R31, 32bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 32bv64)); - R19, Gamma_R19 := memory_load64_le(stack, bvadd64(R31, 40bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 40bv64)); + 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)); 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 index 455a7193f..a05348e17 100644 --- 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 @@ -78,7 +78,7 @@ function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64 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_be(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { +function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { memory[index := value[8:0]] } @@ -330,33 +330,35 @@ procedure main() free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); { - var #14: bv64; - var #9: bv64; - var Gamma_#14: bool; - var Gamma_#9: bool; + 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; - #9, Gamma_#9 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #9, R29), gamma_store64(Gamma_stack, #9, Gamma_R29); - assume {:captureState "%00000238"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#9, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#9, 8bv64), Gamma_R30); - assume {:captureState "%0000023d"} true; - R31, Gamma_R31 := #9, Gamma_#9; + #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; - #14, Gamma_#14 := bvadd64(R31, 16bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #14, R19), gamma_store64(Gamma_stack, #14, Gamma_R19); - assume {:captureState "%0000025b"} true; - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#14, 8bv64), R20), gamma_store64(Gamma_stack, bvadd64(#14, 8bv64), Gamma_R20); - assume {:captureState "%00000260"} 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 "%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 "%0000026e"} true; + assume {:captureState "%00000267"} true; R30, Gamma_R30 := 2012bv64, true; call malloc(); - goto l00000278; - l00000278: - assume {:captureState "l00000278"} true; + 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; @@ -364,57 +366,58 @@ procedure main() 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 "%0000029b"} true; + assume {:captureState "%0000028e"} true; R30, Gamma_R30 := 2036bv64, true; call strlen(); - goto l000002a5; - l000002a5: - assume {:captureState "l000002a5"} true; + 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 l000002c5; - l000002c5: - assume {:captureState "l000002c5"} true; + goto l000002b2; + l000002b2: + assume {:captureState "l000002b2"} true; R0, Gamma_R0 := R19, Gamma_R19; R30, Gamma_R30 := 2060bv64, true; call puts(); - goto l000002d5; - l000002d5: - assume {:captureState "l000002d5"} true; + 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_be(mem, bvadd64(R0, 4bv64), 0bv8), gamma_store8(Gamma_mem, bvadd64(R0, 4bv64), true); - assume {:captureState "%000002e3"} 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 l000002fc; - l000002fc: - assume {:captureState "l000002fc"} true; + 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 l0000031b; - l0000031b: - assume {:captureState "l0000031b"} true; + 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 l0000032b; - l0000032b: - assume {:captureState "l0000032b"} true; - R19, Gamma_R19 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); - R20, Gamma_R20 := memory_load64_le(stack, bvadd64(R31, 24bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 24bv64)); + 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);